Virtualizzazione · 3 min read · Dec 01, 2025

Replica e Failover delle Macchine Virtuali con VMWare Server e Debian Etch (4.0) - Pagina 3

4. Configurazione del pacchetto Heartbeat

Installare il pacchetto Heartbeat abiliterà il failover automatico e la gestione delle risorse in caso di guasto delle risorse e/o hardware.

In questo tutorial, utilizzerò Heartbeat sulla rete, ma è anche possibile utilizzare Heartbeat con un cavo seriale e altri metodi. Heartbeat controllerà gli aggiornamenti da entrambi i server e, quando non riceverà più aggiornamenti, avvierà un failover e prenderà il controllo delle risorse specificate (nel nostro caso, DRBD e VMWare).

SALVO DIVERSAMENTE SPECIFICATO, TUTTI I COMANDI SONO ESEGUITI SU ENTRAMBI I SERVER

OK, passiamo alla configurazione. Per tua comodità, puoi utilizzare i seguenti file di configurazione poiché sono adattati a questo tutorial. Heartbeat ha bisogno di 3 file da configurare, ovvero: “ha.cf”, “haresources” e “authkeys”. Modificali di conseguenza con il tuo editor preferito:

nano /etc/ha.d/ha.cf
logfile /var/log/ha-log
logfacility local0
keepalive 1
deadtime 10
warntime 10
udpport 694
bcast   heth1
auto_failback off
node    server1  ## assicurati che entrambi i nomi siano accessibili - controlla /etc/hosts
node    server2
ping 192.168.0.254  ## Inserisci un indirizzo IP che sia pingabile dalla rete ETH0 !!
respawn hacluster /usr/lib/heartbeat/ipfail

NOTA: Questo file ha.cf abiliterà il failover in caso di guasto della connessione di rete su ETH0 e/o guasto generale del server. Problemi con ETH1 non CAUSERANNO un failover !

Ora modifichiamo il file “authkeys”:

nano /etc/ha.d/authkeys
auth 3
3 md5 failover  ## questa è solo una stringa, inserisci quello che vuoi! auth 3 md5 utilizza la crittografia md5

Ma dobbiamo anche cambiare i permessi di questo file in modo che sia leggibile solo da “root”:

chmod 600 /etc/ha.d/authkeys

E per ultimo, modifichiamo il file “haresources” che contiene le risorse di failover.

nano /etc/ha.d/haresources
server1 192.168.0.10 drbddisk::vm1 Filesystem::/dev/drbd0::/var/vm::ext3 vmstart
# Spiegazione:
# Nome del Server Primario --> indirizzo IP virtuale da utilizzare --> risorsa DRBD come configurato in /etc/drbd.conf
# --> dove montare la risorsa DRBD e il tipo di filesystem --> risorsa da avviare/arrestare in caso di failover
# la risorsa "vmstart" è uno script personalizzato necessario per VMWare Server poiché non puoi far controllare a heartbeat
# i servizi vmware o incorrerai negli temuti errori "non configurato per questa macchina"!

Prima di procedere, dovremo creare lo script personalizzato “vmstart” per assicurarci che le Macchine Virtuali vengano avviate automaticamente sul server in caso di failover. Con altre risorse come Apache, Mysql, NFS … potremmo semplicemente rimuovere gli script di avvio per loro dalle directory rc.d, ma con VMWare questo non è possibile poiché sono necessari per il buon funzionamento dei servizi. Pertanto, abbiamo bisogno di uno script personalizzato per avviare le Macchine Virtuali in caso di failover poiché i servizi VMWare saranno già in esecuzione prima del failover!

Il “vmstart” dovrà trovarsi nella cartella “/etc/ha.d/resource.d/“ poiché è lì che heartbeat lo cercherà.

nano /etc/ha.d/resource.d/vmstart
#!/bin/bash 
case "$1" in 
start) 
/usr/bin/vmware-cmd -s register "/var/vm/'nome della macchina virtuale'/'file di configurazione vm'.vmx" 2>/dev/null
/usr/bin/vmware-cmd "/var/vm/'nome della macchina virtuale'/'file di configurazione vm'.vmx" start 2>/dev/null 
;;
stop) 
/usr/bin/vmware-cmd "/var/vm/'nome della macchina virtuale'/'file di configurazione vm'.vmx" stop trysoft 2> /dev/null 
;;
status) 
if `/usr/bin/vmware-cmd "/var/vm/'nome della macchina virtuale'/'file di configurazione vm'.vmx" getstate 2>/dev/null | grep -q "getstate() = on"` 
then 
echo "in esecuzione" 
else 
echo "arrestato" 
fi
;;
*) 
echo "Uso: `basename $0` 'file della macchina virtuale' {start|stop|status}" 
echo "Dove "file della macchina virtuale" è come /var/vm/'nome della macchina virtuale'/'file di configurazione vm'.vmx"
;;
esac 
exit 0

Compila il nome della ‘macchina virtuale’ e le direttive ‘file di configurazione vm’ con le informazioni necessarie (controlla la directory /var/vm). Se hai più Macchine Virtuali, copia semplicemente le righe.

Questo script personalizzato registrerà prima la Macchina Virtuale (necessario quando si utilizza un server appena installato!) e poi le avvierà. Deve essere fatto in questo modo, poiché VMWare Server ha solo l’opzione di avviare automaticamente le VM all’avvio del sistema. Ora che hai configurato tutto, è tempo di testare se tutto va bene. Avvia il servizio Heartbeat, prima su Server1, poi su Server2.

/etc/init.d/heartbeat start

Se tutto va bene, dovresti vedere il nuovo IP virtuale apparire sul tuo server master.

ifconfig |more

Output:

eth0 Link encap:Ethernet  HWaddr 00:11:09:00:BB:5D  
          inet addr:192.168.0.1  Bcast:192.168.0.255  Mask:255.255.255.0  
          inet6 addr: fe80::211:9ff:fe00:bb5d/64 Scope:Link  
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1  
          RX packets:1025774 errors:0 dropped:0 overruns:0 frame:0  
          TX packets:227653 errors:0 dropped:0 overruns:0 carrier:0  
          collisions:0 txqueuelen:0  
          RX bytes:281072399 (268.0 MiB)  TX bytes:56403081 (53.7 MiB)  
eth0:0    Link encap:Ethernet  HWaddr 00:11:09:00:BB:5D  
          inet addr:192.168.0.10  Bcast:192.168.0.255  Mask:255.255.255.0  
          ...

Ok, se ti senti fortunato e hai seguito questo tutorial con un po’ di buon senso, allora è ora di staccare quel cavo di alimentazione, tenere in mano la tua tazza di caffè e guardare la Macchina Virtuale andare online sul tuo secondo server.

5. Link

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.