Configurăm DRBD pentru replicarea stocării pe două servere CentOS 7

Articolul este tradus în cadrul pregătirii pentru lansarea cursului „Administrator Linux. Virtualizare și clusterizare”.

DRBD (Dispozitiv bloc replicat distribuit — Distributed Replicated Block Device) este o soluție flexibilă și versatilă de stocare a datelor pentru Linux, care permite replicarea conținutului dispozitivelor de bloc, cum ar fi hard disk-uri, partiții, volume logice etc., între servere. Acesta creează copii ale datelor pe două dispozitive de stocare, astfel încât, în cazul unei defecțiuni a unuia dintre acestea, datele de pe celălalt să poată fi utilizate.

Se poate spune că este ceva de genul configurației RAID 1 cu discuri replicate pe servere diferite. Totuși, nu funcționează deloc ca RAID (chiar și cel de tip rețea).

Inițial, DRBD a fost utilizat în principal în clustere de calcul cu mare disponibilitate (HA — high availability), însă, începând cu versiunea a noua, poate fi folosit pentru implementarea soluțiilor de stocare în cloud.

În acest articol, vom arăta cum să instalăm DRBD pe CentOS și vom demonstra pe scurt cum să-l utilizăm pentru replicarea stocării (partiției) pe două servere. Acesta este articolul ideal pentru a începe lucrul cu DRBD în Linux.

Mediu de testare

Vom folosi un cluster format din două noduri pentru această configurație.

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

Pasul 1: Instalarea pachetelor DRBD

DRBD este implementat ca un modul al nucleului Linux. Acesta funcționează ca un driver pentru un dispozitiv bloc virtual, așadar se află la baza stivei de intrare-ieșire a sistemului.

DRBD poate fi instalat din ELRepo sau EPEL. Să începem cu importarea cheii de semnare a pachetului ELRepo și conectarea la repository pe ambele noduri, așa cum este indicat mai jos.

# 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

Apoi, trebuie să instalați modulul nucleului DRBD și utilitarele pe ambele noduri folosind:

# yum install -y kmod-drbd84 drbd84-utils

Dacă aveți SELinux activat, va trebui să configurați politicile pentru a elibera procesele DRBD de sub controlul SELinux.

# semanage permissive -a drbd_t

În plus, dacă în sistemul vostru rulează un firewall (firewalld), va trebui să adăugați portul DRBD 7789 pentru a permite sincronizarea datelor între cele două noduri.

Rulați aceste comenzi pentru primul nod:

# firewall-cmd --permanent --add-rich-rule='rule family="ipv4"  source address="192.168.56.102" port port="7789" protocol="tcp" accept'
# firewall-cmd --reload

Apoi, rulați aceste comenzi pentru al doilea nod:

# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.56.101" port port="7789" protocol="tcp" accept'
# firewall-cmd --reload

Pasul 2. Pregătirea stocării de nivel inferios

Acum că avem DRBD instalat pe ambele noduri ale clusterei, trebuie să pregătim volume de stocare de aproximativ aceeași dimensiune. Acestea pot fi o partiție de hard disk (sau un întreg hard disk fizic), un dispozitiv RAID software, un volum logic LVM sau orice alt tip de dispozitiv de bloc aflat în sistemul dumneavoastră.

Pentru acest articol, vom crea un dispozitiv de bloc de test cu o dimensiune de 2 GB folosind comanda dd.

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

Să presupunem că aceasta este o partiție neutilizată (/dev/sdb1) pe al doilea dispozitiv de bloc (/dev/sdb), conectat la ambele noduri.

Pasul 3. Configurarea DRBD

Fișierul principal de configurare DRBD este /etc/drbd.conf, iar fișierele de configurare suplimentare pot fi găsite în directorul /etc/drbd.d.

Pentru a replica stocarea, trebuie să adăugăm configurațiile necesare în fișierul /etc/drbd.d/global_common.conf, care conține secțiuni globale și comune de configurare DRBD, iar resursele trebuie definite în .res fișiere.

Să facem o copie de rezervă a fișierului original pe ambele noduri, apoi să deschidem un fișier nou pentru editare (folosiți editorul de text preferat).

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

Adăugați în ambele fișiere următoarele linii:

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

Salvați fișierul, apoi închideți editorul.

Să ne oprim puțin asupra liniei protocol C. DRBD suportă trei moduri diferite de replicare (adică trei niveluri de sincronicitate a replicării), și anume:

  • protocol A: protocol de replicare asincronă; cel mai adesea folosit în scenarii de replicare pe distanțe mari.
  • protocol B: protocol de replicare semi-sincronă sau protocol de memorie sincronă.
  • protocol C: folosit de obicei pentru noduri în rețele cu distanțe mici; acesta este, fără îndoială, cel mai frecvent utilizat protocol de replicare în configurațiile DRBD.

Este important: Alegerea protocolului de replicare influențează două factori de desfășurare: protecția și întârzierea. Lățimea de bandă, pe de altă parte, nu depinde semnificativ de protocolul de replicare ales.

Pasul 4. Adăugarea resursei

Resursa (Resource) este un termen general care se referă la toate aspectele unui set specific de date replicabile. Vom defini resursa noastră în fișierul /etc/drbd.d/test.res.

Adăugați următoarele în fișierul de pe ambele noduri (nu uitați să înlocuiți variabilele cu valori reale pentru mediu dumneavoastră).

Vă rugăm să acordați atenție numelui gazdelor, trebuie să specificăm numele de rețea al gazdelor, care poate fi obținut folosind comanda 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;
        }
}
}

unde:

  • pe numele gazdei: secțiunea on, la care se referă operatorul de configurare încorporat.
  • test: acesta este numele noului resurs.
  • device /dev/drbd0: indică un nou dispozitiv de bloc virtual gestionat de DRBD.
  • disk /dev/sdb1: acesta este partția de bloc care este dispozitivul de rezervă pentru dispozitivul DRBD.
  • meta-disk: definește unde DRBD stochează metadatele sale. Internal înseamnă că DRBD își stochează metadatele pe același dispozitiv fizic la nivel scăzut ca și datele reale din producție.
  • address: indică adresa IP și numărul portului nodului corespunzător.

De asemenea, rețineți că dacă pe ambele gazde parametrii au valori identice, le puteți specifica direct în secțiunea de resurse.

De exemplu, configurația de mai sus poate fi restructurată în:

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

Pasul 5. Inițializarea și pornirea resursei

Pentru a interacționa cu DRBD, vom folosi următoarele instrumente de administrare (care interacționează cu modulul kernel pentru configurarea și administrarea resurselor DRBD):

  • drbdadm: instrument de administrare la un nivel înalt pentru DRBD.
  • drbdsetup: instrument de administrare la un nivel mai scăzut pentru a conecta dispozitivele DRBD la dispozitivele lor de rezervă, configurarea perechilor de dispozitive DRBD pentru a reflecta dispozitivele lor de rezervă și pentru a verifica configurația dispozitivelor DRBD aflate în funcțiune.
  • Drbdmeta: instrument de gestionare a metadatelor.

După adăugarea tuturor configurațiilor inițiale ale resursei, trebuie să activăm resursa pe ambele noduri.

# drbdadm create-md test

Configurăm DRBD pentru replicarea stocării pe două servere CentOS 7
Inițializarea stocării metadatelor

Apoi, trebuie să o pornim, ceea ce va conecta resursa la dispozitivul său de rezervă, apoi va stabili parametrii de replicare și va conecta resursa la perechea sa:

# drbdadm up test

Acum, dacă rulați comanda lsblk, veți observa că dispozitivul / volum DRBD drbd0 este legat de dispozitivul de rezervă /dev/sdb1:

# lsblk

Configurăm DRBD pentru replicarea stocării pe două servere CentOS 7
Lista dispozitivelor de bloc

Pentru a dezactiva resursa, rulați:

# drbdadm down test

Pentru a verifica starea resursei, rulați următoarea comandă (rețineți că în acest moment se așteaptă starea discurilor Inconsistent/Inconsistent):

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

Configurăm DRBD pentru replicarea stocării pe două servere CentOS 7
Verificarea stării resursei pe
sisteme

Pasul 6: Instalarea resursei principale/sursă pentru sincronizarea inițială a dispozitivelor

În acest moment, DRBD este deja pregătit pentru utilizare. Acum trebuie să specificăm ce nod să folosim ca sursă pentru sincronizarea inițială a dispozitivelor.

Rulați următoarea comandă doar pe un singur nod pentru a începe sincronizarea completă inițială:

# drbdadm primary --force test
# drbdadm status test

Configurăm DRBD pentru replicarea stocării pe două servere CentOS 7
Setarea nodului principal ca dispozitiv inițial
După finalizarea sincronizării, starea ambelor discuri ar trebui să fie UpToDate.

Pasul 7: Testarea configurației DRBD

În cele din urmă, trebuie să verificăm dacă dispozitivul DRBD va funcționa așa cum trebuie pentru stocarea datelor replicabile. Rețineți că am folosit un volum de disc gol, așa că trebuie să creăm un sistem de fișiere pe dispozitiv și să-l montăm pentru a verifica dacă putem să-l utilizăm pentru stocarea datelor replicabile.

Trebuie să creăm un sistem de fișiere pe dispozitiv folosind următoarea comandă pe nodul de pe care am început sincronizarea completă inițială (pe care există resursa cu rol principal):

# mkfs -t ext4 /dev/drbd0

Configurăm DRBD pentru replicarea stocării pe două servere CentOS 7
Creăm un sistem de fișiere pe volumul Drbd

Apoi montați-l așa cum este arătat (puteți da punctului de montare un nume adecvat):

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

Acum copiați sau creați câteva fișiere în punctul de montare specificat mai sus și faceți o listă lungă cu ajutorul comenzii ls:

# cd /mnt/DRDB_PRI/
# ls -l 

Configurăm DRBD pentru replicarea stocării pe două servere CentOS 7
Afișați lista conținutului volumului principal Drbd

Apoi dezmontați dispozitivul (asigurați-vă că montarea nu este deschisă, schimbați directorul după dezmontare pentru a evita erorile) și schimbați rolul nodului de la principal la secundar:

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

Celălalt nod (pe care există resursa cu rol secundar) faceți-l principal, apoi conectați-l la dispozitiv și rulați o listă lungă a punctelor de montare. Dacă configurația funcționează bine, toate fișierele stocate pe volum ar trebui să fie acolo:

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

Configurăm DRBD pentru replicarea stocării pe două servere CentOS 7
Verificarea configurației DRBD care funcționează pe nodul secundar.

Pentru informații suplimentare, consultați paginile de ajutor ale uneltelor de administrare:

# man drbdadm
# man drbdsetup
# man drbdmeta

Informații utile: Ghidul utilizatorului DRBD.

Rezumat

DRBD este extrem de flexibil și versatil, făcându-l o soluție pentru replicarea stocării, potrivită pentru adăugarea HA în aproape orice aplicație. În acest articol, am arătat cum să instalăm DRBD pe CentOS 7 și am demonstrat succint cum să-l folosim pentru replicarea stocării. Nu ezitați să ne împărtășiți gândurile voastre prin formularul de feedback de mai jos.

Află mai multe despre curs.

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster