Da un po’ di tempo mi sono imbattuto, per questioni di lavoro, nella realizzazione di un sistema ad alta disponibilità che comprendesse i seguenti servizi ridondati
1- Firewall e routing
2- DNS
3- Posta
4- Database MySQL
5- WebServer
In questo articolo vi farò un po’ la carrellata delle tecnologie usate, utilizzate, poi con calma vi spiegherò servizio per servizio come configurare il tutto. Non posso fare tutto in un unico articolo perchè c’è veramente molta carne al fuoco! Segnalo che tutte le tecnologie utilizzate sono Open Source e reperibili GRATUITAMENTE, i costi nella realizzazione di tale sistema stanno fondamentalmente nell’hardware e nella connettività.
Premesse
Tutta l’infrastruttura del cluster è basta su due server con sopra installato Vmware Esxi 5.0 (e 4.1). Su ognuno dei due nodi sono presenti le macchine virtuali che compongono il cluster. Per ottenere il massimo delle prestazioni ho collegato un cavo cross fra i due server su porta Gigabit, in modo che il cluster possa trasferire i dati nel modo più veloce possibile senza passare dallo switch. Oltre a queste cose che potete fare ovunque, dovete avere un buon provider che vi assicuri un ottima connettività, altrimenti tanta fatica per niente 😛 Ricordo a tutti inoltre che un cluster NON E’ un backup, in un sistema di cluster se avete un dato inconsistente o cancellato, esso viene replicato / cancellato anche sul secondo nodo, quindi dotarsi sempre e comuque di una copia di sicurezza dei dati!
1- Firewall e Routing
La parte firewall è stata realizzata grazie a Pfsense 2.0.1 (anche le versioni precedenti vanno bene per lo meno dalla 1.2.3 a quanto ne so). Sui nodi Pfsense ho abilitato la configurazione CARP che mi permette di gestire il failover sia dei firewall che della connettività in entrata e in uscita. Quest’ultima è stata ottenuta tramite delle interfacce VIP sia su un indirizzo pubblico della WAN sulla sull’indirizzo privato della LAN. Il primo permette la continuità di servizio dall’esterno verso l’interno nel caso uno dei due firewall dovesse avere problemi, l’altro nel verso opposto.
Le schede di rete delle macchine virtuali sono configurate tramite opportune VLAN sia in locale che sullo siwtch in tal modo è possibile interscambiare gli indirizzi IP fra l’una e l’altra.
2-DNS
Questo pannello di controllo, completamente free, permette la gestione semplificata per un server di hosting, e implementa al suo interno la possibilità di clusterizzane l’installazione.
Tramite una configurazione particolare è possibile clusterizzare in modo semplicissima la parte relativa ai DNS, sollevandoci quindi da ulteriori configurazioni.
Oltre ai DNS questo pannello ci permette di avere la replicazione del pannello stesso, con la copia in tempo reale dei dati dei clienti, della creazione degli hosting e delle caselle email
3- Posta
La posta l’ho configurata tramite postfix e gestita in modo automatico dal pannello di controllo. Diciamo che dal pannello gestiso in “cluster” le configurazioni dei servizi.
Per la configurazione in cluster delle email vere e proprie ho utilizzato DRBD in modalità Primary/Primary sulle due VM. Con questo sistema ho ottenuto il cluster sia delle email sia dei dati dei siti web. In principio avevo utilizzato GlusterFs, ma avevo parecchi problemi di performance per installazioni di Drupal in modalità Multi-site
4- MySQL
Il cluster di MySQL l’ho ottenuto tranquillamente sfruttando la sua funzione nativa di replicazione, che mi ha portato via approssimativamente qualche minuto. Rispetto alla versione a pagamento, le limitazioni ha dei limiti piuttosto elevati difficilmente raggiungerò 😉 In alternativa è possibile clusterizzare tramite DRDB anche la parte MySQL, bypassando così il problema.
5- Webserver
Al solito la clusterizzazione delle config le ho ottenute automaticamente tramite il pannello di controllo, mentre la parte dati mi sono appoggiato a DRBD. Ovviamente configurazione Apache.
Il sistema lo sto testando in modo massivo in queti giorni, le problematiche maggiori sono state sulle performance del filesystem e devo dire che DRDB al momento è la scelta migliore a scapito però della scalabilità che ha GlusterFS, che sicuramente utilizzerò in futuro in altri ambiti 😉
Magari quando ho un attimo, pubblicherò il famoso disegnino 😉
Lascia un commento