Nodo CLS1
Uno dei pilastri fondamentali del servizio di clustering per alta affidabilità in ambiente Windows (ma il discorso vale comunque anche più in generale) è l'utilizzo/disponibilità di un sottosistema di storage condiviso da tutti i nodi del cluster. Tipicamente, quando le soluzioni di clustering HA cominciavano ad essere usate, si trattava di una singola catena SCSI che, invece di essere collegata ad un solo computer e terminata opportunamente, era collegata a due nodi in modo da essere disponibile per entrambi. Questo sistema di condivisione dello storage aveva comunque alcune pesanti limitazioni: solo due nodi potevano costituire il cluster e il numero di unità di storage era parecchio limitato: in pratica, un massimo di 14 dischi, senza contare il fatto che il canale stesso costituiva un pesante limite alle prestazioni ottenibili, soprattutto con molte unità collegate.
Quasi tutte queste limitazioni sono state soperate grazie all'introduzione del concetto di SAN: una rete ad alte prestazioni dedicata allo storage, ma che avesse una topologia simile ad una rete LAN: si sono quindi ottenuti vantaggi come l'arbitrarietà del numero di nodi (o in generale, sistemi) che insistono sullo stesso storage, la rimozione di limitazioni al numero massimo di dispositivi di storage, la possibilità di posizionare i nodi di un cluster a distanze fisiche considerevoli (e quindi ottenere una maggiore resilienza del sistema ad eventi catastrofici), e, infine, le eccellenti prestazioni; tutto questo, di contro, ha ovviamente un costo, in questo caso monetario: hardware specializzato, collegamenti in fibra ottica (anche se ormai non esclusivamente), controller per fibra ad alta velocità (le ultime evoluzioni permettono 8Gbps per singolo canale) non sono certo una lista della spesa che permette di risparmiare.
Da questo secondo scoglio all'adozione estensiva delle SAN è nata la tecnologia che utilizziamo per il nostro esperimento: l'idea di base è che non sempre per lo storage c'è bisogno di prestazioni estreme, ma ci si può accontentare di qualcosa che funzioni ragionevolmente bene e che non costi troppo, in modo che il rapporto benefici/costi sia comunque superiore ad una SAN con tutti i sacri crismi. L'idea geniale ruota attorno ad una semplice considerazione: le SAN richiedono un mezzo di trasporto fisico che assomiglia parecchio ad una LAN, e dunque, perchè non usare una LAN per svolgere tale compito? Le schede di rete sono ormai presenti in tutti i computer, i cablaggi strutturati sono l'ordine del giorno in ogni edificio aziendale costruito negli ultimi 10-15 anni e gli apparati di rete sono ampiamente disponibili e accessibili economicamente. Certo, il sacrificio di una fetta delle prestazioni è inevitabile (anche se il nuovo hardware di rete LAN continua ad aumentare la velocità di un protocollo, Ethernet - 802.3, che dimostra una longevità e una flessibilità impensabili quando venne introdotto per la prima volta), ma come si diceva, non sempre ciò è effettivamente un problema.
Ecco dunque iSCSI, un semplice strato software che permette di incapsulare i comandi SCSI (che, dall'inizio della storia, non è mai veramente uscito di scena) in semplici pacchetti IP e quindi il loro trasporto come normale traffico di rete; ovviamente i dati ritornati dallo storage viaggiano allo stesso modo. Accettando dunque una ulteriore perdita di prestazioni dovuta all'overhead di quattro strati di incapsulamento in più del normale (iSCSI, TCP, IP ed ethernet), otteniamo di contro un sottosistema di storage con tutte i vantaggi di una vera e propria SAN, sperabilmente senza subirne gli elevati costi. Faremo poi al termine delle guide sperimentali di questo articolo alcune considerazioni di carattere pratico che permettono di mitigare quella che può essere, a questo punto, una nozione di estrema pesantezza e mancanza di prestazioni da parte di iSCSI nei confronti di altre soluzioni.
Prima di cominciare con l'installazione e la configurazione, un grosso avvertimento: prima che il servizio di clustering si prenda in carico le unità di storare iSCSI, entrambi (o tutti) i nodi del cluster hanno accesso diretto ai dischi condivisi: ciò può portare alla corruzione dei dati stessi se non si presta attenzione a come si fanno le cose. Perciò, prima di seguire questa procedura, spegnete il nodo del cluster su cui non state operando! Al termine del primo nodo, spegnetelo e accendete l'altro, poi proseguite con la procedura. Anche il servizio di cluster dovrà essere impostato con uno solo dei nodi attivi. Dopo tale passo gli altri nodi potranno essere accesi senza altri problemi.
Il software che ci serve per installare il client iSCSI sui due nodi del cluster si chiama iSCSI Initiator e può essere scaricato dal sito di Microsoft facendo click qui. Una volta scaricato, eseguiamolo: otteniamo la schermata di presentazione dell'installer; facciamo click su "Avanti" e passiamo oltre.
Nella seconda schermata dobbiamo scegliere le opzioni dell'installazione. Controlliamo che le caselle relative a Initiator Service e Software Initiator siano spuntate e che quella relativa al Multipathing sia vuota, quindi adiamo al passo successivo.
Accettiamo la licenza (leggetela!), poi proseguiamo.
Attendiamo che l'installer abbia terminato di copiare i files relativi al servizio, quindi facciamo click su Fine per andare alla schermata successiva
L'installazione è completata, facciamo click su Fine per uscire dall'installer.
Al termine della procedura di installazione, sul nostro desktop dovrebbe essere comparsa una nuova icona, dal titolo "Microsoft ISCSI Initiator: Facciamoci doppio-click sopra per eseguire il software di gestione; dovrebbe comparirci una finestra come in figura 6.
Facciamo click sull'etichetta "Discovery", quindi premiamo il pulsante "Add" relativo alla lista del Target Portals.
Nel form che dovrebbe aprirsi inseriamo l'indirizzo ip del nostro server iSCSI (iSCSI Target, con termine corretto), che in questo esperimento è 192.168.1.1 e la porta di ascolto del servizio, già impostata fissa a 3260. Al termine facciamo click su OK.
Tornati nella schermata precedente, dovremmo vedere nell'elenco dei Target Portals l'indirizzo che abbiamo appena inserito.
Facciamo click sull'etichetta "Targets"; dovremmo vedere nell'elenco sottostante tutte le LUN che abbiamo definito sul lato server, ognuna riportata con Status Inactive. Il numero e le caratteristiche di queste LUN devono ovviamente essere stabilite a priori rispetto all' installazione dei nodi tenendo in considerazione le necessità dei servizi che si appoggeranno sul cluster. Di sicuro, avremo bisogno di una LUN per contenere il disco di quorum del cluster: non importa quanto grande, da 200 MB in su qualunque dimensione va bene. A fianco di questa, almeno una LUN per il database e, dato che avevamo spazio per il test, un'altra che può essere usata per la condivisione di file e cartelle.
Selezionamo dunque la prima LUN e facciamo click sul pulsante "Log On..."
Nella successiva maschera troviamo i dettagli della LUN a cui vogliamo collegarci; assicuriamoci di spuntare la casella relativa al ricollegamento automatico dell'unità al riavvio del sistema e di togliere la spunta dall'opzione del multipathing, quindi facciamo click su "Advanced...".
A questo punto dovrebbe aprirsi la schermata di cui alla figura 12; ignoriamo tutte le altre opzioni e mettiamo un segno di spunta nella casella "CHAP Logon information"; dovrebbero attivarsi i campi relativi a nome utente e password; in questo test (vedi il setup dell'iSCSI Target sulla macchina Linux) questi sono gfs e secretsecret rispettivamente. Attenzione, il nome utente può essere qualunque cosa (ovviamente a seconda del setup sul server di storage), ma per qualche strano motivo la password deve essere lunga 14 caratteri, in caso contrario l'autenticazione non funziona. In alternativa, tutto l'insieme può essere impostato per non fare autenticazione, ma la cosa è vivamente sconsigliata. Facciamo click su OK per tornare alla finestra precedente.
Tornati nella schermata con l'elenco delle LUN, lo stato di quella su cui abbiamo operato dovrebbe essere diventato "Connected". Ripetiamo i passi per il logon con le altre LUN e al termine facciamo click su OK. Il programma di gestione di iSCSI dovrebbe chiudersi senza problemi.
Andiamo ora a lavorare sulle unità disco che, a seguito del collegamento delle LUN, il nostro sistema vede. Facciamo click con il tasto destro sull'icona "Risorse del Computer" dal Desktop e selezionamo "Gestione".
Nella parte sinistra della console che appare, selezionamo "Gestione disco" sotto "Archiviazione"; la parte destra della schermata dovrebbe cambiare e mostrare sia l'elenco dei volumi visti dal sistema (parte alta), che una rappresentazione dei "dischi" collegati (parte bassa); in questo secondo settore dovrebbero essere visibili i dischi, nel nostro test sono 3, relativi alle LUN iSCSI. A questo stadio i dischi sono contrassegnati da un simbolo rosso di errore.
Selezioniamo il primo dei dischi Sconosciuti e facciamoci click sopra con il tasto destro del mouse; dal menù contestuale scegliamo "Inizializza disco".
Nel form di dialogo che si presenta spuntiamo tutti i dischi che ancora devono essere inizializzati e facciamo click su OK.
Tornati alla console, i segni rossi di errore dovrebbero essere spariti e i dischi essere segnati come "Di base", e lo spazio fisico indicato come "Non allocata"
Selezionamo la barra nera relativa al primo dei dischi e facciamoci click sopra con il tasto destro del mouse; dal menù contestuale che appare, scegliamo "Nuova Partizione...".
Dovrebbe apparire la schermata iniziale della procedura guidata di creazione di una nuova partizione. Facciamo click su "Avanti"
Nella finestra per il tipo di partizione che vogliamo, selezionamo "Parizione Primaria" e facciamo click su Avanti.
Impostiamo la dimensione della partizione che vogliamo creare; usiamo sempre tutto lo spazio disponibile sulla LUN su cui stiamo operando: infatti, avere più partizioni sulla stessa LUN è inutile ai fini del cluster: dato che tali partizioni insistono sulla stessa LUN, il cluster le tratterebbe come una sola entità, "muovendole" tra i nodi in modo solidale. Se in effetti questo è un effetto voluto (per esigenze di una particolare risorsa) e le partizioni aiutano a separare logicamente dati da applicazioni, per esempio, non ci sono problemi nel farlo, ma di norma: una sola partizione per ogni singola LUN.
Dobbiamo a questo punto assegnare una lettera di unità alla partizione che stiamo creando. E' utile assegnare le lettere in modo che ricordino le funzioni a cui saranno dedicate: di solito Q va bene per il Quorum e si possono usare (se libere) E per Exchange, F per delle directory condivise, M per MySQL, eccetera. Ricordate di segnarvi da qualche parte queste assegnazioni, perchè dovranno essere replicate in modo identico sull'altro nodo del cluster (e proprio quando il primo nodo è spento).
Siamo al punto di fornire alcuni dati alla nuova partizione, principalmente l'etichetta e se e come formattarla. Scegliamo di formattare la partizione, accettando i valori di default per il tipo di File System (NTFS) e le dimensioni dell'unità di allocazione; per l'etichetta di volume, inseriamo un nome significativo: ad esempio "Quorum" va benissimo per la partizione che sarà usata per ospitare il disco di quorum. Infine, chiediamo una formattazione veloce perchè quella normale è solo una perdita di tempo. Facciamo click su Avanti per proseguire.
Riepilogo delle impostazioni della nuova partizione. Facciamo click su Fine per proseguire.
Ripetiamo la creazione dei nuove partizioni per le altre LUN, ovviamente adattando dimensioni e lettere di unità; al termine, l'elenco dei dischi dovrebbe presentarsi come in figura 26.
Per controllare se tutto ha funzionato a dovere, apriamo le Risorse del Computer; dovremmo trovare dei volumi relativi alle partizioni che abbiamo appena creato. Provate a entrare in tutti i nuovi file systems e a creare file o cartelle per verificarne il funzionamento. Cancellate tutte le tracce di questi piccoli test, quindi accendete il secondo nodo del cluster e spegnete quello su cui avete lavorato fino ad ora, poi proseguite con la guida.
Nodo CLS2
Per il secondo nodo del cluster (ed eventualmente per i successivi), occorre seguire di nuovo la procedura appena conclusa, avendo l'accortezza di saltare i passi in cui vanno inizializzati i dischi e vengono create e formattate le partizioni, perchè questa parte è già stata fatta con il primo nodo. L'unica cosa che manca è l'assegnazione delle lettere di unità alle partizioni, che, come detto, devono essere le stesse su tutti i nodi del cluster.