Configurare 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 clustering».

DRBD (Distributed Replicated Block Device — dispositivo di blocco replicato distribuito) è una soluzione di archiviazione dati distribuita, flessibile e universalmente replicabile per Linux. Rappresenta il contenuto dei dispositivi a blocchi, come dischi rigidi, partizioni, volumi logici, ecc. tra server. Crea copie dei dati su due dispositivi di archiviazione in modo che, in caso di guasto di uno di essi, i dati possano essere utilizzati sul secondo.

Si può dire che sia qualcosa di simile a una configurazione RAID 1 con dischi replicati su server diversi. Tuttavia, non funziona affatto come il RAID (neanche quello di rete).

Inizialmente, DRBD veniva utilizzato principalmente nei cluster di computer ad alta disponibilità (HA — high availability), tuttavia, a partire dalla nona versione, può essere utilizzato per il dispiegamento di soluzioni di archiviazione cloud.

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

Ambiente di test

Useremo 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 di blocco virtuale, quindi si trova nella parte più bassa dello stack I/O del sistema.

DRBD può essere installato da ELRepo o EPEL. Iniziamo importando la chiave di firma del pacchetto ELRepo e collegandoci al 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

Dopo di che, è necessario installare il modulo del kernel DRBD e gli strumenti su entrambi i nodi utilizzando:

# yum install -y kmod-drbd84 drbd84-utils

Se hai SELinux abilitato, devi configurare le politiche per liberare 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

Quindi 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 per essi aree di archiviazione di dimensioni all'incirca equivalenti. Questo può essere una partizione del disco rigido (o un intero disco rigido fisico), un dispositivo RAID software, volume logico LVM o qualsiasi altro tipo di dispositivo a blocchi presente nel sistema.

Per questo articolo, creeremo un dispositivo a blocchi di prova 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 non utilizzata (/dev/sdb1) sul 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 directory /etc/drbd.d.

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

Facciamo un backup del file sorgente su entrambi i nodi, quindi apriamo un nuovo file per la modifica (utilizza un editor di testo a tua scelta).

# 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 a entrambi i file:

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

Salva il file e poi chiudi l'editor.

Fermiamoci un attimo sulla riga protocol C. DRBD supporta tre diversi modi di replicazione (cioè tre gradi di sincronizzazione della replicazione), vale a dire:

  • protocol A: protocollo di replicazione asincrona; più comunemente utilizzato in scenari di replicazione a grandi distanze.
  • protocol B: protocollo di replicazione semisincrona o protocollo di sincronizzazione in memoria.
  • protocol C: comunemente usato per nodi in reti a piccole distanze; è indubbiamente il protocollo di replicazione più utilizzato nelle configurazioni DRBD.

Importante: La scelta del protocollo di replicazione influisce su due fattori di distribuzione: protezione e latenza. E la larghezza di banda, al contrario, non dipende in modo significativo dal protocollo di replicazione scelto.

Passo 4. Aggiunta della risorsa

Una risorsa (Resource) è un termine generico che si riferisce a tutti gli aspetti di un insieme di dati replicabili specifico. Definiremo la nostra risorsa nel file /etc/drbd.d/test.res.

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

Fai attenzione ai nomi degli host, abbiamo bisogno di 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: sezione on a cui si riferisce l'operatore di configurazione annidato.
  • test: è il nome della nuova risorsa.
  • device /dev/drbd0: indica un nuovo dispositivo di blocco virtuale gestito da DRBD.
  • disco /dev/sdb1: è la partizione del dispositivo di blocco che funge da dispositivo di backup per il dispositivo DRBD.
  • meta-disk: definisce dove DRBD memorizza i suoi metadati. Interno significa che DRBD memorizza i suoi metadati sullo stesso dispositivo fisico a basso livello dei dati effettivi in produzione.
  • address: indica l'indirizzo IP e il numero di porta del nodo corrispondente.

Si prega di notare che se entrambi gli host hanno le stesse impostazioni, è possibile specificarle direttamente nella sezione delle risorse.

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

risorsa test {
	dispositivo /dev/drbd0;
	disco /dev/sdb1;
        	meta-disk interno;	
        	on tecmint.tecmint.lan {
 		indirizzo 192.168.56.101:7789;
        	}
        	on server1.tecmint.lan  {
		indirizzo 192.168.56.102:7789;
        		}
}

Passaggio 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 di livello inferiore per collegare i dispositivi DRBD ai loro dispositivi di backup, configurare coppie di dispositivi DRBD per riflettere i loro dispositivi di backup e controllare la configurazione dei dispositivi DRBD in esecuzione.
  • Drbdmeta: strumento di gestione dei metadati.

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

# drbdadm create-md test

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

Dopo di che dobbiamo avviarlo, il che collegherà la risorsa al suo dispositivo di backup, poi imposterà le opzioni di replica e collegherà la risorsa al suo peer:

# drbdadm up test

Ora, se esegui il comando lsblk, noterai che il dispositivo/tomo DRBD drbd0 è collegato al dispositivo di backup /dev/sdb1:

# lsblk

Configurare DRBD per la replica dello storage su due server CentOS 7
Elenco dei dispositivi di blocco

Per disconnettere la risorsa, esegui:

# drbdadm down test

Per controllare lo stato della risorsa, esegui il seguente comando (si prega di notare che in questa fase lo stato dei dischi è atteso Incoerente/Incoerente):

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

Configurare DRBD per la replica dello storage su due server CentOS 7
Controllo dello stato della risorsa nei
nodi

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

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

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

# drbdadm primary --force test
# drbdadm status test

Configurare DRBD per la replica dello storage su due server CentOS 7
Impostare il nodo principale come dispositivo iniziale
Al termine della 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à come previsto per l'archiviazione dei dati replicati. Ricorda che abbiamo utilizzato un volume vuoto, quindi dobbiamo creare un file system sul dispositivo e montarlo per verificare se possiamo utilizzarlo per l'archiviazione dei dati replicati.

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

# mkfs -t ext4 /dev/drbd0

Configurare 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 elenco lungo utilizzando il comando ls:

# cd /mnt/DRDB_PRI/
# ls -l 

Configurare DRBD per la replica dello storage su due server CentOS 7
Mostra l'elenco del contenuto del volume principale 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

Fai diventare l'altro nodo (dove è presente il resource con il ruolo secondario) primario, quindi collega il dispositivo e esegui un elenco lungo dei punti di montaggio. Se la configurazione funziona correttamente, tutti i file memorizzati 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 

Configurare DRBD per la replica dello storage su due server CentOS 7
Controllo della configurazione di DRBD in esecuzione sul nodo secondario.

Per ulteriori informazioni, fai riferimento alle pagine di aiuto degli strumenti di amministrazione:

# man drbdadm
# man drbdsetup
# man drbdmeta

Aiuto: Manuale utente DRBD.

Riepilogo

DRBD è estremamente flessibile e versatile, rendendolo una soluzione per la replica dello storage, adatta ad 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 replica dello storage. Non esitate a condividere le vostre opinioni 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