La traduzione dell'articolo è stata preparata in vista dell'inizio del corso .
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 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.rpmDopo di che, è necessario installare il modulo del kernel DRBD e gli strumenti su entrambi i nodi utilizzando:
# yum install -y kmod-drbd84 drbd84-utilsSe 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 --reloadQuindi 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 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, 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=1024Supponiamo 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 
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 , noterai che il dispositivo/tomo DRBD drbd0 è collegato al dispositivo di backup /dev/sdb1:
# lsblk 
Elenco dei dispositivi di blocco
Per disconnettere la risorsa, esegui:
# drbdadm down testPer 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 
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 
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 
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 :
# cd /mnt/DRDB_PRI/
# ls -l 
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 testFai 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 
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 drbdmetaAiuto: .
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.
Fonte: habr.com
