La traduzione dell'articolo è stata preparata in vista dell'inizio del corso .
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 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.rpmPoi è necessario installare il modulo del kernel DRBD e le utilità su entrambi i nodi utilizzando:
# yum install -y kmod-drbd84 drbd84-utilsSe 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 --reloadPoi 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 --reloadPasso 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, 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=1024Supponiamo 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 
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 , noterete che il dispositivo/volume DRBD drbd0 è collegato al dispositivo di riserva /dev/sdb1:
# lsblk 
Elenco dei dispositivi a blocchi
Per disattivare la risorsa, eseguire:
# drbdadm down testPer 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 
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 
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 
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 :
# cd /mnt/DRDB_PRI/
# ls -l 
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 testRendi 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 
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 drbdmetaGuida: .
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.
Fonte: habr.com
