Indice

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

corosync.conf
  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

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

virtual_alias_maps.cf
hosts = localhost
dbname = postfixadmin
user = postfixadmin
password = passworddipostfixadmin
query = SELECT goto FROM aliases WHERE address='%s' AND active = 1
virtual_domains_maps.cf
hosts = localhost
dbname = postfixadmin
user = postfixadmin
password = passworddipostfixadmin
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = '0' AND active = 1
virtual_mailbox_maps.cf
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