Configurazione di DRBD per la replica dell'archiviazione su due server CentOS 7

La traduzione dell'articolo è stata preparata alla vigilia dell'inizio del corso "Amministratore Linux. Virtualizzazione e clustering".

DRBD (Distributed Replicated Block Device) è una soluzione di archiviazione distribuita, flessibile e universalmente replicabile per Linux. Riflette 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, se uno di essi si guasta, è possibile utilizzare i dati sul secondo.

Si potrebbe dire che è qualcosa del genere configurazione RAID di rete 1 con dischi mappati su server diversi. Tuttavia, funziona in modo completamente diverso dal RAID (anche dal RAID di rete).

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

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

Ambiente di test

Utilizzeremo un cluster a due nodi per questa configurazione.

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

Passaggio 1: installa i pacchetti DRBD

DRBD è implementato come modulo del kernel Linux. È un driver per un dispositivo a blocchi virtuale, quindi si trova in fondo allo stack I/O del sistema.

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

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

# yum install -y kmod-drbd84 drbd84-utils

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

# semanage permissive -a drbd_t

Inoltre, se il tuo sistema utilizza un firewall (firewalld), dovrai 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

Passaggio 2: preparare l'archiviazione di basso livello

Ora che abbiamo installato DRBD su entrambi i nodi del cluster, dobbiamo fornire su di essi aree di storage approssimativamente della stessa dimensione. Potrebbe trattarsi di una partizione del disco rigido (o di un intero disco rigido fisico), di un dispositivo RAID software, Volume logico LVM o qualsiasi altro tipo di dispositivo a blocchi trovato sul tuo sistema.

Per questo articolo creeremo un dispositivo con blocco di prova da 2 GB utilizzando il comando dd.

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

Supponiamo che questa sia una partizione inutilizzata (/dev/sdb1) su un secondo dispositivo a blocchi (/dev/sdb) connesso ad entrambi i nodi.

Passaggio 3. Configurazione di DRBD

File di configurazione principale DRBD − /etc/drbd.confe 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 sezioni globali e generali della configurazione DRBD e dobbiamo definire le risorse in .res File.

Facciamo una copia di backup del file originale su entrambi i nodi, quindi apriamo il 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;
 }
}

Salvare il file e quindi chiudere l'editor.

Diamo un'occhiata per un momento alla linea del protocollo C. DRBD supporta tre diverse modalità di replica (ovvero tre gradi di sincronia di replica), vale a dire:

  • protocollo A: protocollo di replica asincrona; più spesso utilizzato in scenari di replica a lunga distanza.
  • protocollo B: protocollo di replica semisincrona o protocollo di memoria sincrona.
  • protocollo C: solitamente utilizzato per i nodi di reti a breve distanza; questo è di gran lunga il protocollo di replica più comunemente utilizzato nelle impostazioni DRBD.

È importante: La scelta del protocollo di replica influisce su due fattori di distribuzione: sicurezza e latenza. Al contrario, la velocità effettiva non dipende in modo significativo dal protocollo di replica selezionato.

Passaggio 4: aggiungi una risorsa

Risorsa è un termine generico che si riferisce a tutti gli aspetti di un particolare set di dati replicato. Definiremo la nostra risorsa nel file /etc/drbd.d/test.res.

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

Presta attenzione ai nomi host, dobbiamo specificare il nome host della rete, che può essere ottenuto utilizzando 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:

  • sul nome host: la sezione on a cui si applica l'istruzione di configurazione nidificata.
  • test: Questo è il nome della nuova risorsa.
  • dispositivo /dev/drbd0: Indica un nuovo dispositivo a blocchi virtuale gestito da DRBD.
  • disco /dev/sdb1: Questa è una partizione del dispositivo a blocchi che è un dispositivo di backup per il dispositivo DRBD.
  • meta-disco: Definisce dove DRBD memorizza i suoi metadati. Interno significa che DRBD memorizza i propri metadati sullo stesso dispositivo fisico di basso livello dei dati effettivi in ​​produzione.
  • indirizzo: Indica l'indirizzo IP e il numero di porta del nodo corrispondente.

Tieni inoltre presente che se i parametri hanno gli stessi valori su entrambi gli host, puoi specificarli direttamente nella sezione risorse.

Ad esempio, la configurazione di cui sopra potrebbe 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. Inizializzare e avviare la risorsa

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

  • drbdadm: Strumento di amministrazione di alto livello DRBD.
  • configurazione drbd: uno strumento di amministrazione di livello inferiore per connettere i dispositivi DRBD ai relativi dispositivi di backup, configurare coppie di dispositivi DRBD in modo che riflettano i relativi dispositivi di backup e per verificare la configurazione dei dispositivi DRBD in esecuzione.
  • Drbdmeta: strumento di gestione dei metadati.

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

# drbdadm create-md test

Configurazione di DRBD per la replica dell'archiviazione su due server CentOS 7
Inizializzazione dell'archivio metadati

Successivamente dobbiamo eseguirlo, che collegherà la risorsa al suo dispositivo di backup, 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 backup /dev/sdb1:

# lsblk

Configurazione di DRBD per la replica dell'archiviazione su due server CentOS 7
Elenco dei dispositivi a blocchi

Per disabilitare una risorsa, eseguire:

# drbdadm down test

Per verificare lo stato di una risorsa, esegui il comando seguente (nota che a questo punto è previsto lo stato dei dischi Incoerente/Incoerente):

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

Configurazione di DRBD per la replica dell'archiviazione su due server CentOS 7
Verifica dello stato di una risorsa su
cattivo

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

In questa fase, DRBD è pronto a partire. Ora dobbiamo specificare quale nodo deve essere utilizzato come origine della sincronizzazione iniziale del dispositivo.

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

# drbdadm primary --force test
# drbdadm status test

Configurazione di DRBD per la replica dell'archiviazione su due server CentOS 7
Impostazione del nodo primario come dispositivo iniziale
Una volta completata la sincronizzazione, lo stato di entrambe le unità dovrebbe essere UpToDate.

Passaggio 7: test della configurazione DRBD

Infine, dobbiamo verificare se il dispositivo DRBD funzionerà come necessario per archiviare i dati replicati. Ricorda che abbiamo utilizzato un volume del disco vuoto, quindi dobbiamo creare un file system sul dispositivo e montarlo per verificare se possiamo utilizzarlo per archiviare i dati replicati.

Dobbiamo creare un file system sul dispositivo utilizzando il seguente comando sul nodo in cui abbiamo avviato la sincronizzazione completa iniziale (che ha una risorsa con il ruolo primario):

# mkfs -t ext4 /dev/drbd0

Configurazione di DRBD per la replica dell'archiviazione su due server CentOS 7
Creazione di un file system sul volume Drbd

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

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

Ora copia o crea alcuni file nel punto di montaggio sopra e crea un lungo elenco con comandi ls:

# cd /mnt/DRDB_PRI/
# ls -l 

Configurazione di DRBD per la replica dell'archiviazione su due server CentOS 7
Elenca il contenuto del volume Drbd principale

Successivamente, smonta il dispositivo (assicurati che il montaggio non sia aperto, cambia la 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 primario l'altro nodo (che ha una risorsa con un ruolo secondario), quindi collega ad esso un dispositivo ed emetti un lungo elenco di punti di montaggio. Se la configurazione funziona correttamente, tutti i file archiviati sul volume dovrebbero essere presenti:

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

Configurazione di DRBD per la replica dell'archiviazione su due server CentOS 7
Controllo della configurazione DRBD in esecuzione sul nodo secondario.

Per ulteriori informazioni, consultare le pagine della guida degli strumenti di amministrazione:

# man drbdadm
# man drbdsetup
# man drbdmeta

Informazioni: Manuale utente DRBD.

Riassunto

DRBD è estremamente flessibile e versatile, il che lo rende una soluzione di replica dello storage adatta per aggiungere HA a quasi tutte le applicazioni. In questo articolo abbiamo mostrato come installare DRBD su CentOS 7 e illustrato brevemente come utilizzarlo per la replica dello storage. Sentiti libero di condividere i tuoi pensieri con noi utilizzando il modulo di feedback qui sotto.

Scopri di più sul corso.

Fonte: habr.com

Aggiungi un commento