Database Cluster · 3 min read · Oct 02, 2025
Come Configurare Un Cluster MySQL Bilanciato
Come Configurare Un Cluster MySQL Bilanciato
Versione 1.0
Autore: Falko Timme
Questo tutorial mostra come configurare un cluster MySQL 5 con tre nodi: due nodi di archiviazione e un nodo di gestione. Questo cluster è bilanciato da un bilanciatore di carico ad alta disponibilità che in effetti ha due nodi che utilizzano il pacchetto Ultra Monkey che fornisce heartbeat (per controllare se l’altro nodo è ancora attivo) e ldirectord (per suddividere le richieste ai nodi del cluster MySQL).
In questo documento utilizzo Debian Sarge per tutti i nodi. Pertanto, la configurazione potrebbe differire un po’ per altre distribuzioni. La versione di MySQL che utilizzo in questa configurazione è 5.0.19. Se non vuoi utilizzare MySQL 5, puoi utilizzare anche MySQL 4.1, anche se non l’ho testato.
Questo howto è inteso come una guida pratica; non copre gli aspetti teorici. Questi sono trattati in molti altri documenti sul web.
Questo documento viene fornito senza alcuna garanzia di alcun tipo! Voglio dire che questo non è l’unico modo per configurare un sistema del genere. Ci sono molti modi per raggiungere questo obiettivo, ma questo è il modo che seguo. Non fornisco alcuna garanzia che questo funzionerà per te!
1 I Miei Server
Utilizzo i seguenti server Debian che sono tutti nella stessa rete (192.168.0.x in questo esempio):
- sql1.example.com: 192.168.0.101 Nodo del cluster MySQL 1
- sql2.example.com: 192.168.0.102 Nodo del cluster MySQL 2
- loadb1.example.com: 192.168.0.103 Bilanciatore di carico 1 / Server di gestione del cluster MySQL
- loadb2.example.com: 192.168.0.104 Bilanciatore di carico 2
In aggiunta a ciò, abbiamo bisogno di un indirizzo IP virtuale: 192.168.0.105. Sarà assegnato al cluster MySQL dal bilanciatore di carico in modo che le applicazioni abbiano un unico indirizzo IP per accedere al cluster.
Anche se vogliamo avere due nodi del cluster MySQL nel nostro cluster MySQL, abbiamo comunque bisogno di un terzo nodo, il server di gestione del cluster MySQL, per un motivo principale: se uno dei due nodi del cluster MySQL fallisce e il server di gestione non è in esecuzione, allora i dati sui due nodi del cluster diventeranno inconsistenti (“split brain”). Ne abbiamo anche bisogno per configurare il cluster MySQL.
Quindi normalmente avremmo bisogno di cinque macchine per la nostra configurazione:
2 nodi del cluster MySQL + 1 server di gestione del cluster + 2 Bilanciatori di carico = 5Poiché il server di gestione del cluster MySQL non utilizza molte risorse e il sistema rimarrebbe semplicemente inattivo, possiamo mettere il nostro primo bilanciatore di carico sulla stessa macchina, il che ci fa risparmiare una macchina, quindi finiamo con quattro macchine.
2 Configurare Il Server Di Gestione Del Cluster MySQL
Per prima cosa dobbiamo scaricare MySQL 5.0.19 (la versione max!) e installare il server di gestione del cluster (ndb_mgmd) e il client di gestione del cluster (ndb_mgm - può essere utilizzato per monitorare cosa sta succedendo nel cluster). I seguenti passaggi vengono eseguiti su loadb1.example.com (192.168.0.103):
loadb1.example.com:
mkdir /usr/src/mysql-mgm
cd /usr/src/mysql-mgm
wget http://dev.mysql.com/get/Downloads/MySQL-5.0/mysql-max-5.0.19-linux-i686-\
glibc23.tar.gz/from/http://www.mirrorservice.org/sites/ftp.mysql.com/
tar xvfz mysql-max-5.0.19-linux-i686-glibc23.tar.gz
cd mysql-max-5.0.19-linux-i686-glibc23
mv bin/ndb_mgm /usr/bin
mv bin/ndb_mgmd /usr/bin
chmod 755 /usr/bin/ndb_mg*
cd /usr/src
rm -rf /usr/src/mysql-mgm
Successivamente, dobbiamo creare il file di configurazione del cluster, /var/lib/mysql-cluster/config.ini:
loadb1.example.com:
mkdir /var/lib/mysql-cluster
cd /var/lib/mysql-cluster
vi config.ini
| [NDBD DEFAULT] NoOfReplicas=2 [MYSQLD DEFAULT] [NDB_MGMD DEFAULT] [TCP DEFAULT] # Sezione per il nodo di gestione del cluster [NDB_MGMD] # Indirizzo IP del nodo di gestione (questo sistema) HostName=192.168.0.103 # Sezione per i nodi di archiviazione [NDBD] # Indirizzo IP del primo nodo di archiviazione HostName=192.168.0.101 DataDir= /var/lib/mysql-cluster [NDBD] # Indirizzo IP del secondo nodo di archiviazione HostName=192.168.0.102 DataDir=/var/lib/mysql-cluster # uno [MYSQLD] per nodo di archiviazione [MYSQLD] [MYSQLD] |
Si prega di sostituire gli indirizzi IP nel file in modo appropriato.
Poi avviamo il server di gestione del cluster:
loadb1.example.com:
ndb_mgmd -f /var/lib/mysql-cluster/config.ini Ha senso avviare automaticamente il server di gestione all’avvio del sistema, quindi creiamo uno script di init molto semplice e i collegamenti di avvio appropriati:
loadb1.example.com:
echo ‘ndb_mgmd -f /var/lib/mysql-cluster/config.ini’ > /etc/init.d/ndb_mgmd
chmod 755 /etc/init.d/ndb_mgmd
update-rc.d ndb_mgmd defaults
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.