====== PCS COROSYNC PACEMAKER ====== Realizzare un cluster di failover con raspbian è diverso che con pidora\\ Infatti mentre che con le distro basate su RHEL si riesce ad usare il comando pcs per autenticare i nodi e creare il cluster, con raspbian bisogna modificare a mano il file di corosync.\\ comunque occorre effettuare i seguenti passaggi:\\ apt-get install pcs corosync pacemaker modificare il file hosts e specificare gli ip dei nodi:\\ 192.168.x.x nodo1 192.168.x.x nodo2 e commentare la seguente riga:\\ #127.0.1.1 nodox poi eseguire comunque\\ pcs cluster auth nodo1 nodo2 il cui esito va a buon fine\\ poi invece di eseguire il comando di creazione del cluster (pcs cluster setup --name nomecluster nodo1 nodo2) \\ vado a modificare il file corosync.conf nel seguente modo compatibility: whitetank aisexec { user: root group: root } totem { version: 2 secauth: on threads: 0 rrp_mode: active cluster_name: clstte token: 10000 token_retransmits_before_loss_const: 10 clear_node_high_bit: yes crypto_cipher: none crypto_hash: none transport: udpu interface { ringnumber: 0 bindnetaddr: 192.168.1.0 mcastport: 5405 ttl: 1 member { memberaddr: 192.168.1.78 (ra1) } member { memberaddr: 192.168.1.82 (ra2) } } } logging { fileline: off to_stderr: no to_logfile: yes to_syslog: yes syslog_facility: daemon debug: off timestamp: on logger_subsys { subsys: AMF debug: off } } quorum { provider: corosync_votequorum expected_votes: 2 two_node: 1 } Dovrò poi valutare di fare altri test con altri parametri del file corosync.conf specificati nel sito di clusterlabs.org nella sezione dedicata a ubuntu.\\ Riavviare quindi tutti e due i nodi e verificare con crm_mon\\ ==== DRBD ==== Preparare i dispositivi drbd ridondanti. Su Raspbian è diverso da Centos. Ci sono discordanze tra il modulo del kernel e le utils per la gestione delle risporse (drbdadm).\\ Infatti ho netato che se anche io vado a impostare nei file .res la voce che dice di avviarsi come primary, le risporse rimangono ugualmente secondary.\\ Quindi per impostare le risorse su primary bisogna farlo fare a pacemaker:\\ Si disabilita all'avvio il servizio drbd.\\ systemctl disable drbd.service\\ infatti anche se si disabilita il servizio. il modulo viene caricato ugualmente. se si esegue \\ cat /proc/drbd si noterà che drbd è prondo per ricevere ordini per attivare e gestire le risorse. Facciamolo fare a pacemaker.\\ pcs resource create r_drbd0 ocf:linbit:drbd drbd_resource=r0 op monitor interval=10s poi definiamo i dual primary\\ pcs resource master rm_drbd0 r_drbd0 master-max=2 master-node-max=1 clone-max=2 clone-node-max=1 notify=true oppure un master ed uno slave\\ pcs resource master rm_drbd0 r_drbd0 master-max=1 master-node-max=1 clone-max=2 clone-node-max=1 notify=true questi comandi dovranno essere dati solo dopo le tre direttive principali:\\ pcs property set stonith-enabled=false pcs property set no-quorum-policy=ignore pcs property set default-resource-stickiness=INFINITY ==== file system ==== per attivare il file system. Naturalmente dopo averlo formattato in ext4\\ pcs resource create fs_mmweb Filesystem device="/dev/drbd0" directory="/var/lib/mysql" fstype="ext4" ==== db ==== In modo simile a drbd per poter far prendere correttamente in carico a pacemaker il servizio di mariadb. dobbiamo effettuare alcune operazioni preliminari, ovvero disabilitare all'avvio i demoni di MySQL.\\ mv /etc/init.d/MySQL /root poi\\ mv /etc/rc3.d/S01mysql /etc/rc3.d/K01mysql mv /etc/rc3.d/S01mysql /etc/rc4.d/K01mysql accertarsi di aver disabilitato all'avvio il servizio\\ systemctl disable mariadb.service ed infine creare la risorsa\\ pcs resource create srv_maria ocf:heartbeat:mysql binary="/usr/bin/mysqld_safe" config="/etc/mysql/my.cnf" datadir="/var/lib/mysql" pid="/var/lib/mysql/mysql.pid" socket="/var/run/mysqld/mysqld.sock" additional_parameters="--bind-address=0.0.0.0" op start timeout=60s op stop timeout="60s" op monitor interval=20s timeout=30s ==== postfix ==== oltre ai pacchetti installati da postfixadmin installare anche\\ apt-get install sasl2-bin creare l'utente vmail\\ useradd -d /var/lib/mysql/vmail assegnare i diritti necessari per lavorare sulla directory, ma questo sarebbe sufficiente farlo da uno dei due nodi con la risorsa filesystem attiva.\\ chown vmail:vmail /var/lib/mysql/vmail chmod 0-xr /var/lib/mysql/vmail a questo punto andiamo direttamente a copiare su entrambi i nodi la configurazione del main.cf\\ smtpd_banner = $myhostname ESMTP $mail_name (Raspbian) biff = no append_dot_mydomain = no readme_directory = no compatibility_level = 2 smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key smtpd_use_tls=yes smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination myhostname = str2 alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases myorigin = /etc/mailname mydestination = $myhostname, stefanostrozzi.it, str2, localhost.localdomain, localhost relayhost = mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 mailbox_size_limit = 0 recipient_delimiter = + inet_interfaces = all inet_protocols = all virtual_alias_maps = proxy:mysql:/etc/postfix/sql/virtual_alias_maps.cf virtual_mailbox_domains = proxy:mysql:/etc/postfix/sql/virtual_domains_maps.cf virtual_mailbox_maps = proxy:mysql:$config_directory/sql/virtual_mailbox_maps.cf virtual_mailbox_base = /var/lib/mysql/vmail virtual_minimum_uid = 1001 virtual_transport = virtual virtual_uid_maps = static:1001 virtual_gid_maps = static:1001 e i vari file mappa che andranno posizionati come specificato qui sopra nel file main.cf\\ hosts = localhost dbname = postfixadmin user = postfixadmin password = passworddipostfixadmin query = SELECT goto FROM aliases WHERE address='%s' AND active = 1 hosts = localhost dbname = postfixadmin user = postfixadmin password = passworddipostfixadmin query = SELECT domain FROM domain WHERE domain='%s' and backupmx = '0' AND active = 1 hosts = localhost dbname = postfixadmin user = postfixadmin password = passworddipostfixadmin query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1 ora proviamo a creare la risorsa postfix con pacemaker\\ ==== risorsa IP ==== pcs resource create clstIP IPaddr2 ip=192.168.1.2 cidr_netmask=24 ==== risorsa gruppo ==== pcs resource Group add g_clst r_tgt r_lun clstIP ==== servizio apache ==== pcs resource create srv_web ocf:heartbeat:apache configfile=/etc/apache2/apache2.conf statusurl="http://localhost/server-status" op monitor interval=1min