giovedì 2 aprile 2009

VMWare ESXi: cluster e dischi condivisi

La realizzazione di cluster per il deploy di applicativi ad alta criticità è ormai diventata una prassi molto comune anche nelle piccole aziende; lo scoglio più duro, dal punto di vista economico, continua ad essere l'acquisto dello storage condiviso, sia esso una San o un più semplice Nas.

Anche in questo caso l'utilizzo di sistemi di virtualizzazione, soprattutto per gli ambienti di sviluppo/collaudo/preproduzione, è di molto aiuto per contenere i costi. Nel caso si utilizzi VMWare ESX o ESXi la procedura per la creazione dello storage condiviso è abbastanza semplice ma non è ben documentata così ho cercato di sintetizzare i passi necessari in questo post.

Naturalmente la creazione di unità di storage condiviso è volta a permettere a più nodi di un cluster di montare in lettura/scrittura gli stessi dischi e per tale operazione è necessario utilizzare un filesystem che lo permetta: gfs, ocfs2, etc.. (chi utilizza distribuzioni RedHat 4.2, o rebuild varie, tenga presente che per il funzionamento dei tool di ocfs2 è necessario configurare opportunamente selinux o disabilitarlo).

Tornando alla creazione dello storage condiviso, la prima operazione da compiere in Vmware è la creazione di un disco in modo che si abbia in seguito la possibilità di aggiungerlo come disco condiviso ai nodi del nostro cluster, ma questa operazione può essere effettuata solo da riga di comando.

Per quanto riguarda ESX l'accesso ad una shell non è un problema, chi utilizza ESXi dovrà invece seguire la procedura che ho già descritto in questo post:


La creazione di un nuovo disco da condividere deve essere eseguita utilizzando il vmkfstools (post originale su VMWare communities) perchè è necessario utilizzare un parametro (-d thick) non selezionabile dall'interfaccia grafica:
vmkfstools -c 60G -a lsilogic -d thick /vmfs/volumes/VirtualMachines/DIR/VMDK01.vmdk
Si intende per:

- 60G: la dimensione del disco che stiamo creando;
- DIR: la directory che avete creato (da CLI: mkdir /vmfs/volumes/VirtualMachines/DIR) i vostri dischi condivisi;
- VMDK01: il nome del disco condiviso;

A questo punto sarà sufficiente aggiungere il disco a tutti i nodi del cluster tramite il VMWare infrastructure client:

- Edit Virtual Machine Settings -> Add Hard Disk -> Use an exisisting virtual disk -> Browse - scegliete il disco che avete creato: /vmfs/volumes/VirtualMachines/DIR/VMDK01.vmdk) ;
- Selezionate un id su un altro controller SCSI da Virtual Device Node (Es: 1:0) ed attivate Indipendent -> Persistent;
- Selezionate il nuovo controller SCSI e selezionate per il SCSI Bus Sharing l'opzione Virtual;


4 commenti:

Onofrio ha detto...

Ciao.

Utilizzo ESXi 3.5 ed ho installato due macchine virtuali, una con Windows 2003 server e una con XP pro.
Ho seguito tutti i passi da te descritti. Funziona ma ho un problema.

Il datastore su entrambe le VM l'ho montato come Primario.
Se da XP creo una cartella sul datastore, non la vedo dal 2003 e viceversa. Dove ho sbagliato?

Grazie Ciao

Marco ha detto...

Ciao,

hai montato il disco condiviso in entrambi i nodi del cluster?

Anonimo ha detto...

Scusate la domanda scema, ma con sole 2 macchine posso creare un cluster ESXi? O lo storage deve risiedere esternamente o su una terza macchina?

In pratica con DRBD sono abituato a fare cluster in cui i due nodi dei cluster hanno anche la propria filesystem nel proprio HDD che poi è mirrorata sull'altro grazie a DRBD: è questo che fa anche ESXi o è per forza necessario uno storage di rete?

Marco ha detto...

Lo scopo del post è proprio quello di fornire una soluzione per la condivisione di storage senza dovere acquistare un nas/san.

Una volta creato il disco da condividere tra i due nodi di un cluster non hai necessità di utilizzare strumenti come drbd perchè il filesystem al quale accedono è lo stesso.

Saluti.