Kako podesiti DRBD da replicira skladište na dva CentOS 7 servera


DRBD (skraćeno od Distributed Replicated Block Device) je distribuirano, fleksibilno i svestrano rješenje za pohranu podataka za Linux. Preslikava sadržaj blok uređaja kao što su tvrdi diskovi, particije, logički volumeni itd. između servera. To uključuje kopiju podataka na dva uređaja za pohranu, tako da ako jedan pokvari, mogu se koristiti podaci na drugom.

O tome možete razmišljati kao o mrežnoj RAID 1 konfiguraciji sa diskovima koji se preslikavaju na servere. Međutim, radi na sasvim drugačiji način od RAID-a, pa čak i mrežnog RAID-a.

Prvobitno, DRBD se uglavnom koristio u računarskim klasterima visoke dostupnosti (HA), međutim, počevši od verzije 9, može se koristiti za implementaciju rješenja za pohranu u oblaku.

U ovom članku ćemo pokazati kako instalirati DRBD u CentOS i ukratko pokazati kako ga koristiti za repliciranje skladišta (particije) na dva servera. Ovo je savršen članak za početak korištenja DRBD-a u Linuxu.

Testing Environment

U svrhu ovog članka, koristimo dva klastera čvorova za ovo podešavanje.

  • Čvor1: 192.168.56.101 – tecmint.tecmint.lan
  • Čvor2: 192.168.56.102 – server1.tecmint.lan

Korak 1: Instaliranje DRBD paketa

DRBD je implementiran kao Linux kernel modul. Precizno sačinjava drajver za virtuelni blok uređaj, tako da je postavljen tačno pri dnu I/O steka sistema.

DRBD se može instalirati iz ELRepo ili EPEL spremišta. Počnimo s uvozom ključa za potpisivanje ELRepo paketa i omogućimo spremište kao što je prikazano na oba čvora.

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

Zatim možemo instalirati DRBD kernel modul i uslužne programe na oba čvora tako što ćemo pokrenuti:

yum install -y kmod-drbd84 drbd84-utils

Ako ste omogućili SELinux, morate izmijeniti pravila kako biste izuzeli DRBD procese iz SELinux kontrole.

semanage permissive -a drbd_t

Osim toga, ako vaš sistem ima omogućen zaštitni zid (firewalld), morate dodati DRBD port 7789 u zaštitni zid kako biste omogućili sinhronizaciju podataka između dva čvora.

Pokrenite ove komande na prvom čvoru:

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

Zatim pokrenite ove naredbe na drugom čvoru:

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

Korak 2: Priprema pohrane nižeg nivoa

Sada kada imamo DRBD instaliran na dva čvora klastera, moramo pripremiti prostor za skladištenje približno identične veličine na oba čvora. Ovo može biti particija čvrstog diska (ili puni fizički čvrsti disk), softverski RAID uređaj, LVM logički volumen ili bilo koji drugi tip blok uređaja koji se nalazi na vašem sistemu.

Za potrebe ovog članka, kreirat ćemo lažni blok uređaj veličine 2GB koristeći dd komandu.

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

Pretpostavit ćemo da je ovo neiskorištena particija (/dev/sdb1) na drugom blok uređaju (/dev/sdb) spojenom na oba čvora.

Korak 3: Konfiguriranje DRBD-a

Glavna konfiguracijska datoteka DRBD-a nalazi se na /etc/drbd.conf, a dodatne konfiguracijske datoteke se mogu naći u direktoriju /etc/drbd.d.

Da bismo replicirali pohranu, moramo dodati potrebne konfiguracije u datoteku /etc/drbd.d/global_common.conf koja sadrži globalne i zajedničke dijelove DRBD konfiguracije i možemo definirati resurse u .res fajlove.

Napravimo sigurnosnu kopiju originalne datoteke na oba čvora, a zatim otvorimo novu datoteku za uređivanje (koristite uređivač teksta po svom ukusu).

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

Dodajte sljedeće redove u oba fajla:

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

Sačuvajte datoteku, a zatim zatvorite uređivač.

Hajde da nakratko zasjenimo više svjetla na liniji protokol C. DRBD podržava tri različita načina replikacije (dakle tri stepena sinkroniciteta replikacije) koji su:

  • protokol A: Protokol asinhrone replikacije; najčešće se koristi u scenarijima replikacije na velike udaljenosti.
  • protokol B: Protokol polusinhrone replikacije aka memorijski sinhroni protokol.
  • protokol C: obično se koristi za čvorove u mrežama na malim udaljenostima; to je daleko, najčešće korišteni protokol replikacije u DRBD postavkama.

Važno: Izbor protokola replikacije utiče na dva faktora vaše implementacije: zaštitu i latenciju. A propusnost je, nasuprot tome, u velikoj mjeri nezavisna od odabranog protokola replikacije.

Korak 4: Dodavanje resursa

Resurs je zajednički termin koji se odnosi na sve aspekte određenog repliciranog skupa podataka. Naš resurs ćemo definirati u datoteci pod nazivom /etc/drbd.d/test.res.

Dodajte sljedeći sadržaj u datoteku, na oba čvora (ne zaboravite da zamijenite varijable u sadržaju stvarnim vrijednostima za vaše okruženje).

Uzmite u obzir hostnames, moramo navesti mrežno ime hosta koje se može dobiti pokretanjem naredbe 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;
        }
}
}

gdje:

  • na hostname: odjeljak on navodi na koji host se primjenjuju priloženi konfiguracijski izrazi.
  • test: je naziv novog resursa.
  • uređaj /dev/drbd0: specificira novi virtuelni blok uređaj kojim upravlja DRBD.
  • disk /dev/sdb1: je particija blok uređaja koja je pomoćni uređaj za DRBD uređaj.
  • meta-disk: Definira gdje DRBD pohranjuje svoje metapodatke. Upotreba internog znači da DRBD pohranjuje svoje meta podatke na istom fizičkom uređaju niže razine kao i stvarni proizvodni podaci.
  • adresa: specificira IP adresu i broj porta odgovarajućeg čvora.

Također imajte na umu da ako opcije imaju jednake vrijednosti na oba hosta, možete ih navesti direktno u odjeljku resursa.

Na primjer, gornja konfiguracija se može restrukturirati na:

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

Korak 5: Inicijalizacija i omogućavanje resursa

Za interakciju sa DRBD, koristit ćemo sljedeće administrativne alate koji komuniciraju s modulom kernela kako bismo konfigurirali i administrirali DRBD resurse:

  • drbdadm: alat za administraciju visokog nivoa DRBD-a.
  • drbdsetup: administrativni alat nižeg nivoa za spajanje DRBD uređaja sa njihovim pratećim blok uređajima, za postavljanje parova DRBD uređaja za zrcaljenje njihovih zaštitnih blok uređaja i za provjeru konfiguracije pokrenutih DRBD uređaja.
  • Drbdmeta: je alat za upravljanje meta podacima.

Nakon dodavanja svih početnih konfiguracija resursa, moramo prikazati resurs na oba čvora.

drbdadm create-md test

Zatim bismo trebali omogućiti resurs, koji će povezati resurs sa svojim pratećim uređajem, zatim postavlja parametre replikacije i povezuje resurs sa svojim kolegama:

drbdadm up test

Sada ako pokrenete naredbu lsblk, primijetit ćete da je DRBD uređaj/volumen drbd0 povezan sa pratećim uređajem /dev/sdb1:

lsblk

Da onemogućite resurs, pokrenite:

drbdadm down test

Da biste provjerili status resursa, pokrenite sljedeću naredbu (imajte na umu da se u ovom trenutku očekuje Nedosljedno/Nedosljedno stanje diska):

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

Korak 6: Postavite primarni resurs/izvor početne sinhronizacije uređaja

U ovoj fazi, DRBD je sada spreman za rad. Sada mu moramo reći koji čvor treba koristiti kao izvor početne sinhronizacije uređaja.

Pokrenite sljedeću naredbu na samo jednom čvoru da započnete početnu punu sinhronizaciju:

drbdadm primary --force test
drbdadm status test

Kada se sinhronizacija završi, status oba diska bi trebao biti UpToDate.

Korak 7: Testiranje DRBD podešavanja

Konačno, moramo testirati da li će DRBD uređaj dobro raditi za pohranjivanje repliciranih podataka. Zapamtite, koristili smo prazan volumen diska, stoga moramo kreirati sistem datoteka na uređaju i montirati ga da bismo testirali možemo li ga koristiti za pohranu repliciranih podataka.

Možemo kreirati sistem datoteka na uređaju sa sljedećom naredbom, na čvoru gdje smo započeli početnu punu sinhronizaciju (koji ima resurs sa primarnom ulogom):

mkfs -t ext4 /dev/drbd0 

Zatim ga montirajte kao što je prikazano (tački montiranja možete dati odgovarajuće ime):

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

Sada kopirajte ili kreirajte neke fajlove u gornjoj tački montiranja i napravite dugačku listu koristeći komandu ls:

cd /mnt/DRDB_PRI/
ls -l 

Zatim demontirajte uređaj (uvjerite se da mount nije otvoren, promijenite direktorij nakon demontaže kako biste spriječili bilo kakve greške) i promijenite ulogu čvora iz primarne u < jak>sekundarni:

umount /mnt/DRDB_PRI/
cd
drbdadm secondary test

Na drugom čvoru (koji ima resurs sa sekundarnom ulogom), učinite ga primarnim, a zatim montirajte uređaj na njega i izvršite dugu listu tačke montiranja. Ako postavka radi dobro, sve datoteke pohranjene u volumenu bi trebale biti tamo:

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

Za više informacija pogledajte man stranice alata za administraciju korisničkog prostora:

man drbdadm
man drbdsetup
man drbdmeta
Sažetak

DRBD je izuzetno fleksibilan i raznovrstan, što ga čini rješenjem za replikaciju pohrane pogodnim za dodavanje HA u gotovo svaku aplikaciju. U ovom članku smo pokazali kako instalirati DRBD u CentOS 7 i ukratko demonstrirali kako ga koristiti za repliciranje pohrane. Slobodno podijelite svoje misli s nama putem obrasca za povratne informacije ispod.