Archivio storico: OCFS2 e dual-primary
OCFS2 è un filesystem clusterizzato e il concetto di accesso concorrente resta valido, ma questa procedura risale al 2012 e presume un modello di cluster molto più semplice di quello che adotteremmo oggi. Un filesystem condiviso tra nodi che possono entrambi scrivere deve avere membership, quorum e fencing/STONITH affidabili; senza questi elementi lo split-brain può trasformarsi in corruzione dei dati.
Il testo viene mantenuto come fotografia tecnica dell’epoca. Per l’architettura moderna vedi la nuova introduzione HA/LB.
Cluster di tre server in HA + LB con drbd Parte 2
Per poter effettivamente utilizzare i dati sincronizzati da drbd su ambo i relay è necessario creare un mount point, creare il file system per le partizioni e montare le partizioni sui mount point. Purtroppo (o per fortuna) i normali file system (ext2, ext3, ext4, reiserfs eccetera) operano un tipo di locking dei file che non è adatto alle letture e scritture contemporanee. Fortunatamente ci viene incontro egregiamente ocfs2, un tipo di file system creato da Oracle proprio per questo scopo.OCFS2 is a general-purpose shared-disk cluster file system for Linux capable of providing both high performance and high availability. As it provides local file system semantics, it can be used with almost all applications. Cluster-aware applications can make use of cache-coherent parallel I/Os from multiple nodes to scale out applications easily. Other applications can make use of the file system facilities to fail-over running application in the event of a node failure.Non ci resta che installarlo e configurarlo. relay-01/relay02
apt-get install ocfs2-tools dpkg-reconfigure ocfs2-toolsDurante la riconfigurazione, assolutamente necessaria, si possono lasciare i valori di default proposti dal sistema, con l’unica accortezza di attivare il sistema al boot (prima domanda: rispondere “yes”) e che i valori inseriti siano identici su ambo i relay. Ora dobbiamo istruire il cluster ocfs2 e indicargli chi sono i nodi. Per farlo ci basta creare il file /etc/ocfs2/cluster.conf relay-01/relay02
node: ip_port = 7777 ip_address = 10.0.1.129 number = 0 name = relay-01 cluster = ocfs2 node: ip_port = 7777 ip_address = 10.0.1.203 number = 1 name = relay-02 cluster = ocfs2 cluster: node_count = 2 name = ocfs2Istruito il cluster, dobbiamo creare il file system sulle partizioni relay-01/relay02
mkfs -t ocfs2 -N 2 -L ocfs2_drbd0 /dev/drbd0 mkdir /data mount -t ocfs2 /dev/drbd0 /dataSe tutto si è svolto senza errori, eseguendo “df -h” dovremmo vedere quanto segue
File system Dim. Usati Disp. Uso% Montato su /dev/mapper/relay–01-root 1,7G 1,4G 246M 86% / none 636M 204K 636M 1% /dev none 641M 0 641M 0% /dev/shm none 641M 88K 641M 1% /var/run none 641M 0 641M 0% /var/lock none 641M 0 641M 0% /lib/init/rw /dev/sda1 228M 17M 199M 8% /boot /dev/drbd0 3,8G 266M 3,5G 7% /dataEffettuiamo una serie di verifiche di buon funzionamento su ambo i relay.
service o2cb statusDovrebbe restituirci un output simile a questo
Driver for “configfs”: Loaded Filesystem “configfs”: Mounted Stack glue driver: Loaded Stack plugin “o2cb”: Loaded Driver for “ocfs2_dlmfs”: Loaded Filesystem “ocfs2_dlmfs”: Mounted Checking O2CB cluster ocfs2: Online Heartbeat dead threshold = 31 Network idle timeout: 30000 Network keepalive delay: 2000 Network reconnect delay: 2000 Checking O2CB heartbeat: ActiveProviamo a creare una directory (o un file) su uno dei nodi e vediamo cosa succede. relay-01
ls -l /dataDovrebbe dare un output di questo tipo
drwxr-xr-x 2 root root 3896 2011-11-03 03:18 lost+foundOra, sempre sul relay-01, eseguiamo
mkdir /data/testrelay-02
ls -l /dataL’output deve essere di questo tipo
drwxr-xr-x 2 root root 3896 2011-11-03 03:18 lost+found drwxr-xr-x 2 root root 3896 2011-11-03 03:20 testEseguiamo la controprova sul primo relay
ls -l /data drwxr-xr-x 2 root root 3896 2011-11-03 03:18 lost+found drwxr-xr-x 2 root root 3896 2011-11-03 03:20 testTutto funziona a dovere. Non ci resta quindi che rendere permanente il mount point. Modifichiamo su entrambi i relay il file /etc/fstab aggiungendo in coda la seguente riga
/dev/drbd0 /data ocfs2 _netdev,datavolume,nointr 0 0Al prossimo riavvio, /data sarà montato in automatico e potremo quindi lavorare indifferentemente sul relay-01 o sul relay-02. Il vantaggio di poter lavorare sull’uno o sull’altro in contemporanea è che possiamo per esempio installare apache sui due relay e configurare le homedir dei siti su /data (es /data/www.sito1/ /data/www.sito2/ eccetera) e quindi, grazie al balancer che andremo a configurare tra poco, ambo i server apache utilizzeranno gli stessi dati fornendoci di fatto un cluster in High Availability e un Load Balancer utilizzando solo tre server. Vediamo cosa è possbile condividere e cosa invece è meglio non condividere Cluster in High Availability e Load Balancing – parte 3
Introduzione: Cluster in High Availability e Load Balancing (concetti di base) Parte uno: Cluster in High Availability e Load Balancing – parte 1 (DRBD) Parte due: Cluster in High Availability e Load Balancing – parte 2 (ocfs2) Parte tre: Cluster in High Availability e Load Balancing – parte 3 (cosa e come condividere)

