Configurazione di un cluster di database multi-master sincrono galera basato su openSuSE Leap 15.6
Primo nodo
Aggiungere il repository server:database da OBS e installare i pacchetti necessari; questa operazione deve essere
eseguita per tutti i server del cluster.
sudo zypper addrepo https://download.opensuse.org/repositories/server:database/openSUSE_Leap_15.6/server:database.repo
sudo zypper refresh
sudo zypper install mysql mariadb-galera galera-3
Avviare e proteggere l’installazione di mariadb
sudo systemctl start mariadb
sudo mysql_secure_installation
Dopo aver risposto alle domande del prompt, è possibile disattivare mariadb e modificare la configurazione del file
galera in /etc/my.cnf.d/50-galera.cnf modificandolo in questo modo:
# Whether or not wsrep replication is enabled
wsrep_on=ON
# Full path to wsrep provider library or 'none'
wsrep_provider=/usr/lib64/galera-3/libgalera_smm.so
# Logical cluster name. Should be the same for all nodes.
wsrep_cluster_name="my_cluster"
# Group communication system handle
wsrep_cluster_address="gcomm://"
# Human-readable node name (non-unique). Hostname by default.
wsrep_node_name="node1"
una volta terminata la modifica del file, dopo averlo salvato, avviare mariadb in questo modo:
sudo galera_new_cluster
Ora è possibile accedere a mariadb e verificare che il cluster (con un solo server abilitato) sia attivo e funzionante:
MariaDB [(none)]> SHOW STATUS LIKE 'wsrep_cluster_size';
+--------------------+-------+
| Variable_name | Value |
+--------------------+-------+
| wsrep_cluster_size | 1 |
+--------------------+-------+
1 row in set (0.00 sec)
Questa variabile indica il numero di nodi connessi al cluster. È il momento di aprire le porte del firewall per consentire la connessione di altri nodi.
sudo firewall-cmd --zone=public --add-service=mysql --permanent
sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent
sudo firewall-cmd --zone=public --add-port=4567/tcp --permanent
sudo firewall-cmd --zone=public --add-port=4568/tcp --permanent
sudo firewall-cmd --zone=public --add-port=4444/tcp --permanent
sudo firewall-cmd --reload
Nodi aggiuntivi
Ripetere le stesse operazioni eseguite sul nodo 1 fino al momento di modificare il file /etc/my.cnf.d/50-galera.cnf.
# Whether or not wsrep replication is enabled
wsrep_on=ON
# Full path to wsrep provider library or 'none'
wsrep_provider=/usr/lib64/galera-3/libgalera_smm.so
# Logical cluster name. Should be the same for all nodes.
wsrep_cluster_name="my_cluster"
# Group communication system handle
wsrep_cluster_address="gcomm://<node1.ip.address>,<node2.io.address>"
# Human-readable node name (non-unique). Hostname by default.
wsrep_node_name="node2"
Impostare wsrep\_cluster\_address=“gcomm://\<node1.ip.address\>,\<node2.ip.address\>" con gli indirizzi ip corretti,
aprire le porte del firewall e avviare mariadb.
sudo firewall-cmd --zone=public --add-service=mysql --permanent
sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent
sudo firewall-cmd --zone=public --add-port=4567/tcp --permanent
sudo firewall-cmd --zone=public --add-port=4568/tcp --permanent
sudo firewall-cmd --zone=public --add-port=4444/tcp --permanent
sudo firewall-cmd --reload
sudo systemctl start mariadb
È possibile verificare l’ingresso del nodo2 nel cluster allo stesso modo di prima:
MariaDB [(none)]> SHOW STATUS LIKE 'wsrep_cluster_size';
+--------------------+-------+
| Variable_name | Value |
+--------------------+-------+
| wsrep_cluster_size | 2 |
+--------------------+-------+
1 row in set (0.00 sec)
Una volta che i nodi sono stati sincronizzati, è necessario tornare al nodo1 per modificare
wsrep\_cluster\_address="gcomm://\<node1.ip.address\>,\<node2.ip.address\>"con gli indirizzi IP corretti.
Ripetere le operazioni eseguite sul nodo2 per aggiungere altri nodi.
