Configuriamo DRBD per la replica dello storage su due server CentOS 7

La traduzione dell'articolo è stata preparata in vista dell'inizio del corso «Amministratore Linux. Virtualizzazione e clusterizzazione».

DRBD (Distributed Replicated Block Device) è una soluzione di storage distribuito, flessibile e universalmente replicabile per Linux. Riflette il contenuto di dispositivi a blocchi come hard disk, partizioni e volumi logici tra server. Crea copie dei dati su due dispositivi di storage in modo che, in caso di guasto di uno di essi, i dati possano essere utilizzati sul secondo.

Si potrebbe dire che è qualcosa di simile a una configurazione RAID 1 con dischi replicati su diversi server. Tuttavia, funziona in modo completamente diverso rispetto a RAID (anche quello di rete).

Inizialmente, DRBD veniva utilizzato principalmente in cluster informatici ad alta disponibilità (HA - high availability), tuttavia, a partire dalla nona versione, può essere impiegato per implementare soluzioni di cloud storage.

In questo articolo, spiegheremo come installare DRBD su CentOS e dimostreremo brevemente come utilizzarlo per la replicazione dello storage (partizione) su due server. Questo articolo è ideale per iniziare a lavorare con DRBD su Linux.

Ambiente di test

Utilizzeremo un cluster di due nodi per questa configurazione.

  • Nodo 1: 192.168.56.101 – tecmint.tecmint.lan
  • Nodo 2: 192.168.56.102 – server1.tecmint.lan

Passo 1: Installazione dei pacchetti DRBD

DRBD è implementato come modulo del kernel Linux. Funziona come un driver per un dispositivo a blocchi virtuale, quindi si trova alla base dello stack I/O del sistema.

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

# 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

Poi è necessario installare il modulo del kernel DRBD e le utilità su entrambi i nodi utilizzando:

# yum install -y kmod-drbd84 drbd84-utils

Se SELinux è attivato, devi configurare le politiche per esentare i processi DRBD dal controllo di SELinux.

# semanage permissive -a drbd_t

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

Esegui questi comandi per il 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

Poi esegui questi comandi per il 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

Passo 2. Preparazione dello storage a basso livello

Ora che abbiamo installato DRBD su entrambi i nodi del cluster, dobbiamo preparare aree di archiviazione di dimensioni più o meno uguali. Questo può essere una partizione del disco rigido (o un intero disco rigido fisico), un dispositivo RAID software, un volume logico LVM o qualsiasi altro tipo di dispositivo a blocchi presente nel vostro sistema.

Per questo articolo, creeremo un dispositivo a blocchi di test della dimensione di 2 GB utilizzando il comando dd.

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

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

Passo 3. Configurazione di DRBD

Il file di configurazione principale di DRBD è /etc/drbd.conf, mentre i file di configurazione aggiuntivi possono essere trovati nella cartella /etc/drbd.d.

Per replicare lo storage, dobbiamo aggiungere le configurazioni necessarie nel file /etc/drbd.d/global_common.conf, che contiene sezioni di configurazione DRBD globali e comuni, mentre dobbiamo definire le risorse nei .res file.

Facciamo un backup del file originale su entrambi i nodi, quindi apriamo un nuovo file per la modifica (utilizzate l'editor di testo che preferite).

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

Aggiungete le seguenti righe in entrambi i file:

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

Salva il file e chiudi l'editor.

Fermiamoci un momento sulla riga protocol C. DRBD supporta tre modalità di replica diverse (cioè tre gradi di sincronizzazione della replica), ossia:

  • protocol A: protocollo di replica asincrona; è il più usato negli scenari di replica a grandi distanze.
  • protocol B: protocollo di replica semi-sincrona o protocollo di memoria sincrona.
  • protocol C: viene normalmente utilizzato per nodi in reti a breve distanza; è senza dubbio il protocollo di replica più comunemente usato nelle configurazioni DRBD.

Importante: La scelta del protocollo di replica influisce su due fattori di implementazione: protezione e latenza. La larghezza di banda, d'altra parte, non dipende in misura significativa dal protocollo di replica scelto.

Passo 4. Aggiunta della risorsa

La risorsa (Resource) è un termine collettivo che si riferisce a tutti gli aspetti di un dato replicabile specifico. Definiremo la nostra risorsa nel file /etc/drbd.d/test.res.

Aggiungi quanto segue al file su entrambi i nodi (ricorda di sostituire le variabili con i valori effettivi per il tuo ambiente).

Fai attenzione ai nomi degli host, dobbiamo specificare il nome di rete dell'host, che può essere ottenuto con 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:

  • su hostname: la sezione on a cui si riferisce l'operatore di configurazione annidato.
  • test: questo è il nome della nuova risorsa.
  • device /dev/drbd0: specifica un nuovo dispositivo a blocchi virtuali gestito da DRBD.
  • disk /dev/sdb1: questa è la partizione del dispositivo a blocchi, che è il dispositivo di backup per il dispositivo DRBD.
  • meta-disk: definisce dove DRBD memorizza i suoi metadati. Internal significa che DRBD memorizza i propri metadati sullo stesso dispositivo fisico a basso livello dei dati effettivi in produzione.
  • address: specifica l'indirizzo IP e il numero di porta del nodo corrispondente.

Nota anche che se su entrambi gli host i parametri hanno valori identici, puoi specificarli direttamente nella sezione delle risorse.

Ad esempio, la configurazione sopra citata può essere ristrutturata in:

risorsa 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;
        		}
}

Passo 5. Inizializzazione e avvio della risorsa

Per interagire con DRBD utilizzeremo i seguenti strumenti di amministrazione (che interagiscono con il modulo del kernel per configurare e gestire le risorse DRBD):

  • drbdadm: strumento di amministrazione di alto livello per DRBD.
  • drbdsetup: strumento di amministrazione a basso livello per collegare i dispositivi DRBD ai loro dispositivi di backup, configurare le coppie di dispositivi DRBD per riflettere i loro dispositivi di backup e per verificare la configurazione dei dispositivi DRBD attivi.
  • Drbdmeta: strumento di gestione dei metadati.

Dopo aver aggiunto tutte le configurazioni iniziali della risorsa, dobbiamo chiamare la risorsa su entrambi i nodi.

# drbdadm create-md test

Configuriamo DRBD per la replica dello storage su due server CentOS 7
Inizializzazione dello storage dei metadati

Successivamente dobbiamo avviarlo, il che collegherà la risorsa al suo dispositivo di backup, stabilirà quindi i parametri di replica e collegherà la risorsa al suo peer:

# drbdadm up test

Ora, se esegui il comando lsblk, noterete che il dispositivo/volume DRBD drbd0 è collegato al dispositivo di riserva /dev/sdb1:

# lsblk

Configuriamo DRBD per la replica dello storage su due server CentOS 7
Elenco dei dispositivi a blocchi

Per disattivare la risorsa, eseguire:

# drbdadm down test

Per controllare lo stato della risorsa, eseguire il seguente comando (si noti che in questa fase si prevede lo stato dei dischi Incoerente/Incoerente):

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

Configuriamo DRBD per la replica dello storage su due server CentOS 7
Verifica dello stato della risorsa su
nodi

Passo 6: Impostazione della risorsa principale/sorgente per la sincronizzazione iniziale dei dispositivi

A questo punto, DRBD è già pronto per l'uso. Ora dobbiamo indicare quale nodo dovrebbe essere utilizzato come sorgente per la sincronizzazione iniziale dei dispositivi.

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

# drbdadm primary --force test
# drbdadm status test

Configuriamo DRBD per la replica dello storage su due server CentOS 7
Impostazione del nodo principale come dispositivo iniziale
Una volta completata la sincronizzazione, lo stato di entrambi i dischi dovrebbe essere UpToDate.

Passo 7: Testare la configurazione di DRBD

Infine, dobbiamo verificare se il dispositivo DRBD funzionerà correttamente per memorizzare i dati replicati. Ricordate che abbiamo utilizzato un volume vuoto, quindi dobbiamo creare un file system sul dispositivo e montarlo per verificare se possiamo utilizzarlo per la memorizzazione dei dati replicati.

Dobbiamo creare un file system sul dispositivo utilizzando il seguente comando sul nodo da cui abbiamo iniziato la sincronizzazione completa iniziale (dove è presente la risorsa con il ruolo primario):

# mkfs -t ext4 /dev/drbd0

Configuriamo DRBD per la replica dello storage su due server CentOS 7
Creiamo un file system sul volume Drbd

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

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

Ora copia o crea alcuni file nel punto di montaggio sopra indicato e fai un lungo elenco utilizzando il comando ls:

# cd /mnt/DRDB_PRI/
# ls -l 

Configuriamo DRBD per la replica dello storage su due server CentOS 7
Visualizza l'elenco del contenuto del volume principale di Drbd

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

# umount /mnt/DRDB_PRI/
# cd
# drbdadm secondary test

Rendi un altro nodo (su cui è presente una risorsa con ruolo secondario) primario, quindi collegalo al dispositivo e esegui un lungo elenco di punti di montaggio. Se la configurazione funziona correttamente, tutti i file memorizzati nel volume dovrebbero essere lì:

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

Configuriamo DRBD per la replica dello storage su due server CentOS 7
Verifica della configurazione DRBD in esecuzione sul nodo secondario.

Per ulteriori informazioni, consulta le pagine di riferimento degli strumenti di amministrazione:

# man drbdadm
# man drbdsetup
# man drbdmeta

Guida: Guida dell'utente DRBD.

Riepilogo

DRBD è estremamente flessibile e versatile, rendendolo una soluzione per la replica dello storage adatta per aggiungere HA praticamente a qualsiasi applicazione. In questo articolo abbiamo mostrato come installare DRBD su CentOS 7 e abbiamo brevemente dimostrato come utilizzarlo per la replicazione dello storage. Non esitare a condividere i tuoi pensieri con noi tramite il modulo di feedback qui sotto.

Scopri di più sul corso.

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster