Soluzioni di clustering, replicazione e stand by server Giuseppe Sacco 5 maggio 2006 Sommario dall'applicazione. La libera traduzione italiana della parola è ammasso oppure agglomerato. Se si utilizzano macchine perfettamente eguali, cluster ad esempio dei server web con documenti statici, In informatica si allora è possibile fare in modo che lo usa da decenni per indicare una collezione di tracce di dischi. Più di recente è invece utilizzato per agglomerato di computer oppure lo stesso che può avere varie con- Una seconda possibilità è usare un DNS che fa vizio fornito da quelle macchine sia il più continuo corrispondere allo stesso nome www.mioserver.it più di una macchina. I DNS hanno la capacità di cluster, come ad esempio quel- orire i nomi secondo la tecnica del lo relativo ai dischi. L'avere più dischi che vengono visti come un solo volume permette di avere può conoscere il carico dei idoneo. la resilienza del sistema, cioè fare in modo che il ser- Ci sono vari tipi di switch computer per instradare la richiesta sul server più formazioni, ma il ne è sempre lo stesso: aumentare possibile. switch al quale queste macchine sono collegate, le chiami a turno, le round robin. Si può far fare il bilanciamento al kernel li- la rottura di uno o più dischi senza perdere dati, utilizzando il progetto LVS (http://www. linuxvirtualserver.org/) che prevede una mac- di accedere a maggior velocità rispetto al singo- china lo disco. system nux più grandi del singolo disco, di sopportare cluster director equivalente dello switch hardware e implementano tecnologie una serie di server applicativi. Questi server posso- chiamate RAID e sono spesso utilizzati in meccani- no essere sia macchine Linux che Unix che Windo- smi di SAN ws, a seconda del tipo di implementazione. Ci so- Questi Storage Area Network attached storage o NAS Network no tre diversi modelli implentativi: LVS-NAT ( work address translation) Nel caso di computer, visti come unità di calcolo, questo • agglomerato tivi eterogenei ma è il più lento, LVS-Tun ( può avere vari scopi ling ) bilanciare il carico di lavoro tra più mac- • direct routing ) è il più veloce ma le macchine devono essere nella reggerebbe; • tunnel- richiede linux ma permette di avere i server in diverse LAN/WAN, LVS-DR ( chine perché una singola macchina non lo net- permette sistemi opera- stessa LAN. Per questo tipo di cluster e per tutti ottenere una alta adabilità del servizio, con quelli che hanno una macchina di controllo, come una seconda macchina sempre pronta a pren- il dere il posto di quella che ore un certo è una operazione che richiede potenza di calcolo, servizio; quindi per questo ruolo è suciente un computer director, si tenga presente che il controllo non non particolarmente veloce. avere una macchina con dati aggiornati in ri- Se l'applicazione è in grado di gestire autonoma- tardo allo scopo di consentire di recuperare i mente il bilanciamento del carico, allora è possibile dati persi per l'errore umano. fare in modo che vari server condividano le sessioni 1 Bilanciamento del carico di lavoro. Un esempio è quello di JBoss, un applica- tion server per java, che permette di gestire cluster che gestiscano la sessione. (Se l'applicazione è sta- Il bilanciamento del carico avviene in maniera pi- teless, cioè senza stato, allora la sessione non ha lotata dall'hardware, dal sistema operativo oppure importanza e il 1 cluster può tranquillamente essere Lixper S.r.l. via Arbe 27, Torino 1 BILANCIAMENTO DEL CARICO http://www.lixper.it gestito dal sistema operativo. Se invece è statefull, multi master cioè con stato, allora lo stato deve essere memoriz- ne cominciata in uno qualsiasi dei nodi che poi si zato con i meccanismi del sincronizza con gli altri. cluster perché non sia vale a dire che ogni transazione vie- pgcluster è costituito da relegato ad un solo nodo.) Altro esempio è quello almeno 4 macchine: una che bilancia il carico tra di i vari nodi, almeno due nodi, una di gestione della WebSphere che denisce tre tipi di cluster pro- replicazione. prio in base alla gestione della sessione, anzi, alla session anity. WebSphere La versione 6 di de quello che si chiama eXtended Deployment: Il numero massimo di nodi è 128 e non è necessario avere uno storage condiviso. incluun Per chi fosse interessato a MySQL, cluster esiste una im- ingranaggio della nuova parola d'ordine, grid, che plementazione nativa di permette di spostare intere applicazioni da un no- più nodi do all'altro in maniera trasparente per bilanciare il più nodi carico, ma anche in maniera preventiva utilizzando risiedere interamente in RAM), un nodo per la ge- le statistiche di carico dell'ultimo periodo. stione del cluster. Questa implementazione sfrutta L'assegnamento di un un client ad un nodo del cluster data i nodi può essere costante, nel senso che viene fat- sql per la data con i gestione delle richieste, uno o dati veri e propri (che devono come sistema di memorizzazione e non utilizza aatto il disco. to al login e mai cambiato, oppure può variare nel che richiede uno o Per avere la replicazione si devono raddoppiare le macchine usate per i nodi tempo, spostando la sessione dell'utente da una data. macchina all'altra. Il primo caso va bene se tut- perso, quindi di norma si fa un backup da ricarica- te le sessioni di lavoro sono eguali (stessa durata, re all'accensione. Il bilanciamento del carico tra i stesso peso computazionale), ma non va bene nel vari nodi caso di sessioni lunghe e varie come quelle di la- tramite voro su un ERP. In questo secondo caso spesso il Allo spegnimento del cluster ogni dato viene sql va fatto a livello connection pool. applicativo, oppure Una nota a parte va fatta per Oracle RAC che bilanciamento è fatto staticamente sull'application ha la caratteristica di richiedere uno spazio disco server e dinamicamente sul database. In genere la condiviso tra le varie istanze del gestione del bilanciamento delle connessioni ad un plementare un RAC su varie macchine è necessario database avviene con i che tutte accedano allo stesso disco in contempora- pool di connessioni o suoi derivati (come i MultiPool che usa per Oracle RAC) WebLogic Server cluster : per im- nea. Questa soluzione è in genere parecchio costosa che permettono di avere tan- e non è stata seguita da nessun altro DBMS. te connessioni aperte in contemporanea con i vari nodi del cluster, selezionando una connessione di- versa per ogni transazione. Un pool è un insieme 1.2 Calcolo parallelo si connessioni dall'applicazione al database; queste connessioni dopo l'uso non vengono chiuse, ma ri- All'interno della sezione sul bilanciamento del cari- mangono aperte e usate per richieste successive in co va fatta una parentesi sui cluster single system modo da diminuire il tempo di connessione. Inol- image, tre le connessioni possono essere aperte verso tutti portano come se fossero una sola macchina, usati i nodi del per il cluster e usate in maniera circolare, in a modo da inoltrare le richieste a turno ai vari nodi. cioè quei cluster che visti da fuori si com- High Performance Computing (contrapposto High Availability ) Si tratta di unire la potenza di parecchie macchine per eettuare calcoli che di 1.1 norma non richiedono molti accessi al disco, ma in- Database Una delle soluzioni open source è vece sfruttano il parallelismo e utilizzano lo scambio pgpool che si oc- di messaggi per far comunicare tra loro i vari pro- cupa del bilanciamento del carico per postgresql. cessi. Si tratti quindi quasi sempre di applicazioni pgpool è capace di collegarsi a due diversi database scientiche studiate appositamente per il funziona- postgresql e di orire un connection pool al client. mento su macchine parallele. Le due soluzioni più Ogni transazione verrà eettuata su entrambe le famose di questo tipo sono macchine, mentre le Ciascuna di queste soluzioni include anche un query verranno distribuite a turno tra le macchine. pgcluster e beowulf. malmente le applicazioni parallele fanno veramente Un'altra soluzione open source, più sosticata, è openmosix le system distribuito, ma bisogna ammettere che nor- esterne alle transazioni rari accessi al che permette di avere un ambiente 2 le system e quindi è suciente ave- Lixper S.r.l. via Arbe 27, Torino 2 ALTA AFFIDABILITÀ http://www.lixper.it re una o due macchine che orano il servizio di system. Sia le situazioni rsync è velocissimo e può essere esegui- to anche ogni minuto, ma in altre non è possibile openmosix che beowulf sono prodotti maturi utilizzarlo poiché i dato non sono memorizzati su e si occupano principalmente di bilanciare il cari- le system, come nel caso di volumi logici assegna- co tra le varie macchie, spostando i processi da un ti ai database, oppure nel caso di informazioni che nodo ad un'altro. Hanno entrambi anche un mec- riguardano gli rsync. nbd è canismo di ricongurazione dinamica che permette l'aggiunta o la rimozione di un nodo in qualsiasi inode che non verrebbero copiati da un modulo del kernel di Linux. Si tratta Network Block Device momento. di una sigla 2 Alta adabilità punto la natura del modulo: un device a blocchi L'alta adabilità o via rete. Con nbd è possibile utilizzare il disco di una macchina remota come se fosse un disco locale. high availability L'utilizzo che se ne fa in questi casi è di fare vede- è un concet- re alla macchina principale sia il disco locale che to che indica la disponibilità costante nel tempo di un certo servizio. Il meccanismo del cluster quello remoto, in modo da fare un serve Il vantaggio di proprio a permettere questa continuità, facendo in la di da una macchina all'altra può esse- rsync. Inoltre la connessione usata da rsync nbd può essere compressa e cifrata, mentre quella di re automatizzato o gestito manualmente, a seconda ster tra i due. La sua congurazione è però più complessa di quel- rante il periodo di fermo. Il passaggio del servizio, delle necessità. Difatti la congurazione di un mirror è che ogni singola scrittura av- quindi la seconda macchina è sempre aggiornata. si possa sostituire con una seconda macchina du- failover, nbd viene su entrambe le macchine in contemporanea, modo che se la macchina principale si guastasse, la detto che indica ap- non può esserlo. clu- HA non è mai semplice e a volte il gioco non vale la candela. 2.2 Ci sono molte realtà nelle quali si fornisce un servizio che può anche mancare per pochi minuti senza generare troppi problemi. casi è possibile avere un piccolo Il passaggio automatico di un servizio da un nodo In tutti questi cluster all'altro è gestito su GNU/Linux da un programma molto sem- chiamato plice nel quale esiste una macchina principale che dono la denizione di risorse che possono essere: ra automatica o manualmente, si faccia carico dei programmi applicativi, indirizzi IP, dischi, servizi. stem, Questa soluzione ha come unico dettaglio im- nbd. le sy- Ogni risorsa è destinata ad di una) e può essere fatta migrare su altri nodi in aggiornata la seconda macchina. Lo si può fare sia device, con o altro ancora. un particolare nodo (che di norma ne gestisce più plementativo quello di scegliere come mantenere rsync, HACMP ware, come Veritas. Tutte queste soluzioni preve- prima si può fare in modo che la seconda, in manie- con oppure da soluzioni proprie- su AIX, o ancora da società che non vendono hard- camente i dati dalla prima. In caso di guasto della le system, heartbeat tarie che ogni sistema operativo ore, come ore il servizio e una secondaria che copia periodi- a livello di Controllo caso di necessità. sia a livello di La gestione automatica dell'alta adabilità richiede un meccanismo per la verica dello stato dei 2.1 Sincronizzazione rsync è uno strumento che copia un nodi. In genere questo utilizza una connessione sica privilegiata (un cavo di rete esclusivamente usa- le system da to per HA) tramite il quale il software del cluster una macchina ad un'altra. La prima volta la copia comunica tra i vari nodi e verica lo stato delle ri- avviene nella maniera canonica, ma dalla successi- sorse. va vengono copiati solo le sezioni modicate dei le entro certi periodi allora un altro nodo si fa carico cambiati. In questo modo il tempo di aggiornamen- del problema. to della seconda macchina è proporzionale solo alle Se una risorsa o un nodo non rispondono La normale implementazione di una applicazione modiche fatte sulla macchina originale. In molte in 3 cluster HA prevede di norma i seguenti passi Lixper S.r.l. via Arbe 27, Torino 4 CONCLUSIONI http://www.lixper.it Questa seconda macchina macchina, nel caso la pri- 1 creazione di un IP virtuale tramite il quale fare ma si guastasse, può molto facilmente prendere il raggiungere l'applicazione; posto di quella guasta e fornire lo stesso servizio 2 installazione dell'applicazione come risorsa del in poco tempo. Spesso si fa in modo da mantene- cluster ; re un distacco temporale di almeno mezzora tra le due macchine perché così è anche possibile colle- 3 installazione dei dati dell'applicazione come risorsa del garsi direttamente alla seconda per recuperare dei cluster ; dati erroneamente cancellati. 4 scrittura di un programma che controlli se 4 Conclusioni l'applicazione funziona correttamente; 5 congurazione di HA per l'utilizzo del programma 4. e dei meccanismo di failover ; Ci sono molti tipi di cluster open source che pos- sono gestire tutte le principali congurazioni utili Il programma HA farà in modo da dare allo stes- nelle aziende private e pubbliche italiane. so nodo le tre risorse: IP virtuale, dati e applicazio- strumenti, ne. zioni come Inoltre continuerà a controllare l'applicazione Alcuni rsync o heartbeat, e alcune applicapostgresql o JBoss, spesso associati a in maniera periodica con il programma fornito. In GNU/Linux, sono in realtà molto utilizzati anche caso di problemi le tre risorse verranno spostate in ambiente Unix proprietari. secondo le politiche di 3 failover su un altro nodo. Vista la complessità del Stand by database congurazioni. L'errore che viene fatto più spesso è proprio quello di sopravvalutare l'importanza del servizio da inserire nel Alcuni di questi plessa. gata al fatto che internamente funzionano con un journaling. Il giornale dei DBMS zioni andate a buon ne. Scrivendo in un solo le i DBMS terminano questa scrittura relativamente in fretta. Periodicamente, con una operazione chiail contenuto di questi le viene copiato sui veri e propri le dati. Questi piccoli le (che postgresql chiama WAL write-ahead log, informix chiama transaction log e oracle chiama redo log ) possono essere usati anche durante l'operazione di ripristino di un database. Al ripristino si prendono i le dati non aggiornati e una serie di log più recenti e si riapplicano tutte le modiche ai le dati. Informix ha una tecnologia high availablity data replication, che fa esattamente questo: attende che il log propria, chiamata HDR sia completo e lo manda via rete alla seconda istanza. Notare che per informix il log potrebbe essere disattivato e questo renderebbe inusabile HDR. La macchina di stand by è una macchina che ha lo stesso database della macchina principale, ma viene foraggiata con i log Inoltre, per tutte quelle applicazioni che sfruttare i meccanismi dell'applicazione. o più le, nel quale vengono scritte tutte le transa- checkpoint, e disegnare un'archi- prevedono la gestione della ridondanza, è necessario (database management server) è in genere un le, mata spesso cluster tettura eccessivamente costosa o inutilmente com- database hanno una caratteristica interessante lemeccanismo di è sempre meglio so dovrà agire, prima di avventurarsi in acquisti e Spesso la necessità di un cluster è relativa ai dati memorizzati in un database. cluster fare un'analisi completa degli scenari nei quali es- prodotti dall'altra. 4