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
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
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"
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
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
pcs resource create clstIP IPaddr2 ip=192.168.1.2 cidr_netmask=24
pcs resource Group add g_clst r_tgt r_lun clstIP
pcs resource create srv_web ocf:heartbeat:apache configfile=/etc/apache2/apache2.conf statusurl="http://localhost/server-status" op monitor interval=1min