Ganeti: gestire un cluster di macchine virtuali DRDB/Linux – Parte 1 – Introduzione

ganeti

Nel panorama sistemistico attuale, il lavoro con macchine virtuali è oramai diventato prassi comune.
Con lo sviluppo di piattaforme hardware sempre più potenti e cariche di risorse, unite all’estrema accessibilità di grosse quantità di spazio disco (siano esse fruibili via dischi locali, NAS o SAN), oramai è possibile far convivere diverse macchine virtuali su singoli hardware fisici, permettendoci -finalmente- una reale suddivisione macchina/servizio a costi contenuti.

L’ambiente IT è pieno di soluzioni più o meno commerciali, a costi (generalmente) medio-alti e con pregi e difetti.

Linux non è da meno ed anche lui fornisce differenti soluzioni di virtualizzazione, quali Xen e KVM.

Unito a sistemi di gestione dei volumi (LVM) e capacità di replica evolute (DRBD), citando alcuni esempi, ci fornisce tutto il necessario per “spaccare” il nostro hardware reale in risorse da assegnare a server virtuali multipli.

Il principale problema, quando si parla di virtualizzazione, è quello di assicurare continuità ai servizi erogati dalle macchine virtuali, indipendentemente dall’hardware in cui si trovano.

Già, perché se prima la rottura di un alimentatore o di una scheda madre ci bloccava, per esempio, il server DNS, adesso la rottura dello stesso hardware può, potenzialmente, bloccare il server DNS, qualche web server, e magari anche il server di posta, creando danni estremamente maggiori.

In questo quadro rientrano sistemi più evoluti di virtualizzazione, che permettono di “spostare” le macchine virtuali su diversi hardware fisici, assicurando continuità di servizio anche in caso di guasti gravi.

Ed è qui che entra in gioco Ganeti.

Cos’è Ganeti
Riprendendo la definizione proposta dal sito del progetto Ganeti:

Ganeti è un tool di gestione per cluster di macchine virtuali costruito sopra tecnologie di virtualizzazione esistenti come Xen o KVM ed altri software Open Source

All’atto pratico, altro non è che una serie di script (prevalentemente scritti in python) che, utilizzando software Open Source disponibili su Linux, permettono di gestire cluster di macchine sulle quali risiedono diverse macchine virtuali. Queste macchine virtuali possono essere accese/spente indipendentemente, spostate da un nodo all’altro, etc.

Cosa utilizza Ganeti
Come dicevamo prima, Ganeti utilizza una serie di software e tecnologie Open Source già presenti su Linux per fornire un’interfaccia di semplice utilizzo che astrae le configurazioni e la gestione di questi tool.
Esattamente utilizza:

  • Xen / KVM: questi due hypervisor vengono utilizzati per gestire le macchine e l’hardware virtuali;
  • Linux Bridge: più che un tool è una feature del kernel Linux. Viene utilizzata per la gestione degli IP delle macchine virtuali, permettendo al sistema di rispondere tramite una singola interfaccia ethernet, a diversi IP relativi alle singole macchine;
  • LVM: Logical Volume Manager. Viene utilizzato per gestire dei volumi che rappresentato i dischi delle macchine virtuali ed i dati interni di Ganeti stesso. E’ possibile anche lavorare su file semplici invece che su volumi, ma è fortemente sconsigliato vista la scomodità di gestire semplici file come dischi virtuali;
  • DRBD: Viene utilizzato per gestire i mirror sui diversi nodi del cluster di Ganeti ed è la tecnologia principale che permette lo spostamento delle macchine virtuali sui diversi nodi;

E’ giusto sapere bene cosa si trova alla base di Ganeti poiché, se per un utilizzo normale difficilmente andremo ad utilizzare direttamente questi tool, in modalità particolari (o per risolvere grossi problemi sull’infrastruttura) potrebbe essere necessario lavorare a livello più basso di Ganeti, interagendo direttamente con gli hypervisor, i volumi o i mirror di DRBD.

Cosa posso fare con Ganeti?
Come vedremo una volta installato e configurato, Ganeti permette di eseguire una serie di operazioni quali:

  • Creazione / Distruzione di macchine virtuali con risorse variabili
  • Avvio / Spegnimento di macchine virtuali, con possibilità di boot normali o con live cd
  • Spostamento di macchine virtuali tra diversi nodi, sia a caldo (macchina accesa) che a freddo (macchina spenta).
  • Creazione di snapshot per eseguire backup, così come importazione ed esportazione di macchine virtuali anche tra cluster differenti

Alcune informazioni fondamentali su Ganeti che possono essere utili in fase di scelta della propria infrastruttura di virtualizzazione sono le seguenti:

  • Tutti i software utilizzati da Ganeti, così come Ganeti stesso, sono Open Source. Questo vuol dire che non avremo costi di licenze e che potremo mettere mano (se necessario) al codice sorgente sia dell’insieme di script Ganeti, che dei singoli componenti che esso utilizza
  • Sempre per questo motivo, non esiste un supporto “ufficiale” a Ganeti, anche se bisogna far notare che la comunità è molto forte, sia quella di Ganeti che quella dei singoli tool che utilizza
  • Nonostante l’intera infrastruttura giri su Linux, con Ganeti è possibile sia creare macchine virtuali Linux che Windows, facendole coesistere nella stessa infrastruttura
  • Il cluster di Ganeti è formato da almeno due nodi, ma può essere esteso per utilizzare un qualsiasi numero di nodi; i nodi del cluster possono essere aggiunti e/o rimossi senza dare disservizio e senza dover “spegnere” l’intero cluster (e le macchine virtuali presenti su di esso)
  • Pur essendo consigliato, non è strettamente necessario che l’hardware dei vari nodi del cluster sia omogeneo; l’importante è che supporti le stesse tecnologie (a livello di Hypervisor almeno) e che se ne tenga conto in fase di distribuzione delle risorse sui vari nodi
  • Ogni macchina virtuale fa riferimento -al massimo- a due nodi del cluster. Questo vuol dire che ognuna ha un nodo primario ed un secondario sul quale è abilitata al funzionamento. Questi nodi possono essere comunque modificati a caldo, andando a ridistribuire le risorse sul cluster

Conclusioni

Questa è solo un’introduzione all’argomento, nei successivi articoli della serie verranno approfonditi tutti gli aspetti relativi alla tecnologia Ganeti per arrivare all’implementazione di una soluzione realmente produttiva.

Utente Linux/Unix da più di 20 anni, cerco sempre di condividere il mio know-how; occasionalmente, litigo con lo sviluppatore di Postfix e risolvo piccoli bug in GNOME. Adoro tutto ciò che può essere automatizzato e reso dinamico, l'HA e l'universo container. Autore dal 2011, provo a condividere quei piccoli tips&tricks che migliorano il lavoro e la giornata.

Tags: