Ciao Ragazzi,
oggi parliamo di HA (High Availability) e di failover…in un’unica parola: CLUSTER!
Quello che vi mostro è un semplice cluster tra due server Debian 7, la verifica del funzionamento sarà fatta tramite Apache (con 2 pagine web che mi diranno su quale dei due server mi trovo)
Per prima cosa analizziamo lo scenario:
Per realizzare il cluster di 2 Debian, ho deciso di utilizzare CARP che viene fornito in maniera nativa nei repository.
SERVER 1 (Master)
Per prima cosa installiamo carp:
razorblade@Server1:~$ apt-get install ucarp
Adesso editiamo il file delle interfacce ETH per aggiungere la VIP:
razorblade@Server1:~$ vi /etc/network/interfaces
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.1.200
netmask 255.255.255.0
gateway 192.168.1.1
#######################
# ucarp configuration
#######################
ucarp-vid 1
ucarp-vip 192.168.1.250
ucarp-password mypass32
ucarp-advskew 1
ucarp-advbase 1
ucarp-master yes
# The carp network interface, on top of eth0
iface eth0:ucarp inet static
address 192.168.1.250
netmask 255.255.255.0
Riavviamo il servizio di networking:
razorblade@Server1:~$ vi /etc/init.d/networking restart
SERVER 2 (Slave)
Per prima cosa installiamo carp:
razorblade@Server2:~$ apt-get install ucarp
Adesso editiamo il file delle interfacce ETH per aggiungere la VIP:
razorblade@Server2:~$ /etc/network/interfaces
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.1.201
netmask 255.255.255.0
gateway 192.168.1.1
#######################
# ucarp configuration
#######################
ucarp-vid 1
ucarp-vip 192.168.1.250
ucarp-password mypass32
ucarp-advskew 1
ucarp-advbase 1
ucarp-master no
# The carp network interface, on top of eth0
iface eth0:ucarp inet static
address 192.168.1.250
netmask 255.255.255.0
Riavviamo il servizio di networking:
razorblade@Server2:~$ /etc/init.d/networking restart
Fatto questo possiamo subito provare se funziona, effettuando un semplice ping all’indirizzo 192.168.1.250 da un PC presente sulla stessa sottorete.
Fatto questo creiamo due pagine di test su entrambi i server che ci fanno capire se siamo sul server1 o sul server2.
Raggiungendo l’indirizzo: http://192.168.1.250 il sistema ci mostra la pagina index del Server1 che abbiamo detto essere il master:
Se adesso spengo il server1 simulando un crash/errore/power loss della macchina, il server web continua a funzionare perchè il server2 diventa in automatico il master:
Semplice, veloce, ma davvero efficace!
E’ possibile personalizzare le operazioni da eseguire quando l’interfaccia eth del master/slave va giù/su tramite l’opzione da passare nel file etc/network/interfaces
ucarp-downscript /usr/local/bin/vip-down
ucarp-upscript /usr/local/bin/vip-up
Enjoy!