Come già detto precedentemente, l’innovazione che preferisco in Xen 4.0.1 è l’introduzione nativa dell’alta affidabilità delle VM attraverso Remus.
Già precedentemente era possibile utilizzare pacchetti linux esterni come Heartbeat e DRBD per realizzare un sistema di due Dom0 Xen in fault tolerance: sostanzialmente un server sta attivo e il secondo “dormiente” ed è pronto ad attivarsi nel momento in cui il primo server dovesse morire.
Questo sistema è già perfettamente funzionante, però ha lo svantaggio che non viene fatto un “live migration” della VM (ed è ovvio perchè per fare una live migration, la macchina deve essere “live”, mentre in questo caso il server è “dead”), pertanto bisogna fare i conti con i tempi tecnici di startup del server virtuale sull’host secondario; inoltre, trattandosi di un riavvio vero e proprio, si perdono tutti gli stati della macchina, le sessioni, ecc.
In aiuto ci viene la tecnologia Remus, già introdotta con la precedente versione di Xen, ma ora inserita direttamente nella release ufficiale.
Il funzionamento di Remus è analogo alla funzionalità (a pagamento) di High Availability su VMware vSphere: in sostanza, vengono avviate contemporaneamente due diverse istanze della VM du due nodi distinti e viene costantemente effettuanta una live migrazion tra i due host. Una di queste VM è attiva, l’altra “in pausa” e pronta ad attivarsi nel caso in cui la VM principale dovesse morire; il bello di questo protocollo è che lo scambio di informazioni tra le due istanze è costante, per cui in caso di down del nodo, non si perdono le informazioni non salvate e non c’è nessun disservizio momentaneo. Inoltre non è necessario che la VM sia contenuta all’interno di uno “shared storage” in quanto l’attuale versione di remus prevede anche una sincronizzazione di due storage locali con un protocollo simile a DRBD.
Testiamo il funzionamento di Remus
Ammettiamo di avere due server XEN 4.0.1 con una VM su storage condiviso avviata sul server 1. Innanzi tutto, verifichiamo che sia possibile eseguire una operazione di live migration:
Su server1: xm migrate --live vm server2 Su server2: xm migrate --live vm server1
A questo punto collaudiamo Remus senza “Net Buffering” e senza “Disk Replication” con il seguente comando:
remus --no-net vm server2
A questo punto il server 1 invierà ogni 200 ms un checkpoint al server 2; nel caso in cui server2 non ricevesse più il checkpoint, sbloccherà la VM: per provare, lanciate il seguente comando su server 1:
xm destroy vm
verdrete che la vostra VM si attiverà su server 2 entro 200 ms. Per modificare questo valore, basta passare a remus l’intervallo desiderato attraverso l’opzione -i:
remus -i 50 --no-net vm server2
Per una protezione totale, è altamente consigliato attivare anche il “Network Buffering” lanciando Remus senza l’opzione –no-net:
remus vm server2
Così facendo, se avete una connessione attiva alla VM, la stessa non cadrà in caso di switch tra i due server. Purtroppo questa modalità raddoppia i tempi di latenza di rete…
Ultima configurazione possibile, come dicevamo all’inizio, è la replica del disco nel caso in cui non sia presente uno storage condiviso.
Per far ciò è necessario che su entrambi i server sia presente l’immagine della VM nella stessa path, poi è necessario modificare la definizione del disco della VM in:
disk = [ 'tap:remus:bkup:9000|aio:/dev/vmdisk/myguest,xvda1,w' ]
dove 9000 è la porta (che deve essere libera) utilizzata dai due server per scambiarsi informazioni, /dev/vmdisk/myguest è la path del disco della VM che, ripeto, deve essere identica in entrambi i server.
Attenzione che l’avvio della VM non verrà completato finchè non farete partire remus.
Superb blog post, I have book marked this internet site so ideally I’ll see much more on this subject in the foreseeable future!
Ciao,
complimenti per le varie guide!! Molto molto interessanti. Ho un paio di domande:
1) Secondo te riesca a far funzionare remus sotto virtualBox?
2) Ho installato debian 6.0.1 con Xen, ma non mi istalla remus, sai cosa posso fare?
Ciao, Davide
Ciao Davide,
Remus è un software esterno a Xen ma che dalla versione 4 di Xen “vive” all’interno del repository principale.
Detto questo, per rispondere alle tue domande, Debian non include Remus nel pacchetto xen e non esiste nemmeno un pacchetto esterno installabile con aptitude. Bisogna scaricare i sorgenti di xen e compilarli, però a questo punto puoi valutare la mia guida per installare xen 4.1 su Gentoo.
Riguardo Virtualbox sinceramente non ne ho idea, a pelle non penso sia possibile.