Ricerca nel sito web

Come configurare DRBD per replicare l'archiviazione su due server CentOS 7


Il DRBD (sta per Distributed Replicated Block Device) è una soluzione di archiviazione replicata distribuita, flessibile e versatile per Linux. Rispecchia il contenuto dei dispositivi a blocchi come dischi rigidi, partizioni, volumi logici ecc. tra i server. Implica una copia dei dati su due dispositivi di archiviazione, in modo tale che, se uno si guasta, è possibile utilizzare i dati sull'altro.

Puoi considerarla un po' come una configurazione di rete RAID 1 con i dischi sottoposti a mirroring sui server. Tuttavia, funziona in modo molto diverso dal RAID e persino dal RAID di rete.

Originariamente DRBD veniva utilizzato principalmente nei cluster di computer ad alta disponibilità (HA), tuttavia, a partire dalla versione 9, può essere utilizzato per implementare soluzioni di archiviazione cloud.

In questo articolo mostreremo come installare DRBD in CentOS e dimostreremo brevemente come utilizzarlo per replicare l'archiviazione (partizione) su due server. Questo è l'articolo perfetto per iniziare a utilizzare DRBD in Linux.

Ambiente di test

Ai fini di questo articolo, utilizzeremo un cluster a due nodi per questa configurazione.

  • Nodo1: 192.168.56.101 – tecmint.tecmint.lan
  • Nodo2: 192.168.56.102 – server1.tecmint.lan

Passaggio 1: installazione dei pacchetti DRBD

DRBD è implementato come modulo del kernel Linux. Costituisce precisamente un driver per un dispositivo a blocchi virtuale, quindi è stabilito proprio nella parte inferiore dello stack I/O di un sistema.

DRBD può essere installato dai repository ELRepo o EPEL. Iniziamo importando la chiave di firma del pacchetto ELRepo e abilitando il repository come mostrato su entrambi i nodi.

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm

Quindi possiamo installare il modulo del kernel DRBD e le utilità su entrambi i nodi eseguendo:

yum install -y kmod-drbd84 drbd84-utils

Se hai SELinux abilitato, devi modificare le policy per esentare i processi DRBD dal controllo di SELinux.

semanage permissive -a drbd_t

Inoltre, se il tuo sistema ha un firewall abilitato (firewalld), devi aggiungere la porta DRBD 7789 nel firewall per consentire la sincronizzazione dei dati tra i due nodi.

Esegui questi comandi sul primo nodo:

firewall-cmd --permanent --add-rich-rule='rule family="ipv4"  source address="192.168.56.102" port port="7789" protocol="tcp" accept'
firewall-cmd --reload

Quindi esegui questi comandi sul secondo nodo:

firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.56.101" port port="7789" protocol="tcp" accept'
firewall-cmd --reload

Passaggio 2: preparazione dell'archiviazione di livello inferiore

Ora che abbiamo DRBD installato sui due nodi del cluster, dobbiamo preparare un'area di archiviazione di dimensioni più o meno identiche su entrambi i nodi. Può trattarsi di una partizione del disco rigido (o di un disco rigido fisico completo), di un dispositivo RAID software, di un volume logico LVM o di qualsiasi altro tipo di dispositivo a blocchi presente sul sistema.

Ai fini di questo articolo, creeremo un dispositivo a blocchi fittizio di dimensioni 2 GB utilizzando il comando dd.

 
dd if=/dev/zero of=/dev/sdb1 bs=2024k count=1024

Assumeremo che si tratti di una partizione inutilizzata (/dev/sdb1) su un secondo dispositivo a blocchi (/dev/sdb) collegato a entrambi i nodi.

Passaggio 3: configurazione di DRBD

Il file di configurazione principale di DRBD si trova in /etc/drbd.conf e file di configurazione aggiuntivi possono essere trovati nella directory /etc/drbd.d.

Per replicare l'archiviazione, dobbiamo aggiungere le configurazioni necessarie nel file /etc/drbd.d/global_common.conf che contiene le sezioni globale e comune della configurazione DRBD e possiamo definire le risorse in .res.

Facciamo un backup del file originale su entrambi i nodi, quindi apriamo un nuovo file per la modifica (usa un editor di testo di tuo gradimento).

mv /etc/drbd.d/global_common.conf /etc/drbd.d/global_common.conf.orig
vim /etc/drbd.d/global_common.conf 

Aggiungi le seguenti righe in entrambi i file:

global {
 usage-count  yes;
}
common {
 net {
  protocol C;
 }
}

Salvare il file e quindi chiudere l'editor.

Oscuriamo brevemente più luce sulla linea protocollo C. DRBD supporta tre distinte modalità di replica (quindi tre gradi di sincronicità di replica) che sono:

  • protocollo A: protocollo di replica asincrona; viene spesso utilizzato in scenari di replica a lunga distanza.
  • protocollo B: protocollo di replica semisincrona noto anche come protocollo sincrono di memoria.
  • protocollo C: comunemente usato per i nodi in reti a breve distanza; è di gran lunga il protocollo di replica più comunemente utilizzato nelle configurazioni DRBD.

Importante: la scelta del protocollo di replica influenza due fattori della tua distribuzione: protezione e latenza. E il throughput, al contrario, è in gran parte indipendente dal protocollo di replica selezionato.

Passaggio 4: aggiunta di una risorsa

Una risorsa è il termine collettivo che si riferisce a tutti gli aspetti di un particolare set di dati replicati. Definiremo la nostra risorsa in un file chiamato /etc/drbd.d/test.res.

Aggiungi il seguente contenuto al file, su entrambi i nodi (ricordati di sostituire le variabili nel contenuto con i valori effettivi per il tuo ambiente).

Prendi nota dei nomi host, dobbiamo specificare il nome host di rete che può essere ottenuto eseguendo il comando uname -n.

resource test {
        on tecmint.tecmint.lan {
 		device /dev/drbd0;
       		disk /dev/sdb1;
        		meta-disk internal;	
                	address 192.168.56.101:7789;
        }
        on server1.tecmint.lan  {
		device /dev/drbd0;
        		disk /dev/sdb1;
        		meta-disk internal;
                	address 192.168.56.102:7789;
        }
}
}

Dove :

  • on hostname: la sezione on indica a quale host si applicano le istruzioni di configurazione allegate.
  • test: è il nome della nuova risorsa.
  • device /dev/drbd0: specifica il nuovo dispositivo a blocchi virtuale gestito da DRBD.
  • disco /dev/sdb1: è la partizione del dispositivo a blocchi che funge da dispositivo di supporto per il dispositivo DRBD.
  • meta-disco: definisce dove DRBD memorizza i suoi metadati. L'utilizzo di Internal significa che DRBD memorizza i propri metadati sullo stesso dispositivo fisico di livello inferiore dei dati di produzione effettivi.
  • indirizzo: specifica l'indirizzo IP e il numero di porta del rispettivo nodo.

Tieni inoltre presente che se le opzioni hanno valori uguali su entrambi gli host, puoi specificarle direttamente nella sezione delle risorse.

Ad esempio la configurazione di cui sopra può essere ristrutturata in:

resource test {
	device /dev/drbd0;
	disk /dev/sdb1;
        	meta-disk internal;	
        	on tecmint.tecmint.lan {
 		address 192.168.56.101:7789;
        	}
        	on server1.tecmint.lan  {
		address 192.168.56.102:7789;
        		}
}

Passaggio 5: inizializzazione e abilitazione della risorsa

Per interagire con DRBD, utilizzeremo i seguenti strumenti di amministrazione che comunicano con il modulo del kernel per configurare e amministrare le risorse DRBD:

  • drbdadm: uno strumento di amministrazione di alto livello del DRBD.
  • drbdsetup: uno strumento di amministrazione di livello inferiore per collegare i dispositivi DRBD ai relativi dispositivi di backing block, per configurare coppie di dispositivi DRBD per eseguire il mirroring dei relativi dispositivi di backing block e per ispezionare la configurazione dei dispositivi DRBD in esecuzione.
  • Drbdmeta: è lo strumento di gestione dei metadati.

Dopo aver aggiunto tutte le configurazioni iniziali delle risorse, dobbiamo visualizzare la risorsa su entrambi i nodi.

drbdadm create-md test

Successivamente, dovremmo abilitare la risorsa, che collegherà la risorsa al suo dispositivo di supporto, quindi imposterà i parametri di replica e collegherà la risorsa al suo peer:

drbdadm up test

Ora se esegui il comando lsblk, noterai che il dispositivo/volume DRBD drbd0 è associato al dispositivo di supporto /dev/sdb1:

lsblk

Per disabilitare la risorsa, eseguire:

drbdadm down test

Per verificare lo stato della risorsa, esegui il comando seguente (nota che a questo punto è previsto lo stato del disco Incoerente/Incoerente):

drbdadm status test
OR
drbdsetup status test --verbose --statistics 	#for  a more detailed status 

Passaggio 6: impostare la risorsa primaria/origine della sincronizzazione iniziale del dispositivo

A questo punto, DRBD è pronto per l'uso. Ora dobbiamo dirgli quale nodo deve essere utilizzato come origine della sincronizzazione iniziale del dispositivo.

Eseguire il comando seguente su un solo nodo per avviare la sincronizzazione completa iniziale:

drbdadm primary --force test
drbdadm status test

Una volta completata la sincronizzazione, lo stato di entrambi i dischi dovrebbe essere UpToDate.

Passaggio 7: test della configurazione DRBD

Infine, dobbiamo verificare se il dispositivo DRBD funzionerà bene per l'archiviazione dei dati replicati. Ricorda, abbiamo utilizzato un volume del disco vuoto, quindi dobbiamo creare un file system sul dispositivo e montarlo per verificare se possiamo utilizzarlo per l'archiviazione dei dati replicati.

Possiamo creare un filesystem sul dispositivo con il seguente comando, sul nodo dove abbiamo avviato la sincronizzazione completa iniziale (che ha la risorsa con ruolo primario):

mkfs -t ext4 /dev/drbd0 

Quindi montalo come mostrato (puoi dare al punto di montaggio un nome appropriato):

mkdir -p /mnt/DRDB_PRI/
mount /dev/drbd0 /mnt/DRDB_PRI/

Ora copia o crea alcuni file nel punto di montaggio sopra ed esegui un lungo elenco utilizzando il comando ls:

cd /mnt/DRDB_PRI/
ls -l 

Successivamente, smonta il dispositivo (assicurati che il montaggio non sia aperto, cambia directory dopo averlo smontato per evitare eventuali errori) e cambia il ruolo del nodo da primario a secondario:

umount /mnt/DRDB_PRI/
cd
drbdadm secondary test

Sull'altro nodo (che ha la risorsa con un ruolo secondario), rendilo primario, quindi monta il dispositivo su di esso ed esegui un lungo elenco del punto di montaggio. Se la configurazione funziona correttamente, tutti i file archiviati nel volume dovrebbero essere presenti:

drbdadm primary test
mkdir -p /mnt/DRDB_SEC/
mount /dev/drbd0 /mnt/DRDB_SEC/
cd /mnt/DRDB_SEC/
ls  -l 

Per ulteriori informazioni, consultare le pagine man degli strumenti di amministrazione dello spazio utente:

man drbdadm
man drbdsetup
man drbdmeta
Riepilogo

DRBD è estremamente flessibile e versatile, il che lo rende una soluzione di replica dello storage adatta per aggiungere HA praticamente a qualsiasi applicazione. In questo articolo, abbiamo mostrato come installare DRBD in CentOS 7 e abbiamo dimostrato brevemente come utilizzarlo per replicare l'archiviazione. Sentiti libero di condividere i tuoi pensieri con noi tramite il modulo di feedback qui sotto.