Kako postaviti DRBD da replicira pohranu na dva poslužitelja CentOS 7


DRBD (skraćeno od Distributed Replicated Block Device) distribuirano je, fleksibilno i svestrano replicirano rješenje za pohranu podataka za Linux. Zrcali sadržaj blokovskih uređaja poput tvrdih diskova, particija, logičkih volumena itd. Između poslužitelja. Uključuje kopiju podataka na dva uređaja za pohranu, tako da ako jedan ne uspije, mogu se koristiti podaci na drugom.

Možete to zamisliti nekako poput mrežne RAID 1 konfiguracije s diskovima zrcaljenim na više poslužitelja. Međutim, djeluje na vrlo različit način od RAID-a, pa čak i mrežnog RAID-a.

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

U ovom ćemo članku pokazati kako instalirati DRBD u CentOS i ukratko demonstrirati kako se njime replicira pohrana (particija) na dva poslužitelja. Ovo je savršen članak za početak korištenja DRBD-a u Linuxu.

U svrhu ovog članka za ovu postavku koristimo klaster dva čvora.

  • Č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. Točno predstavlja pokretački program za virtualni blok uređaj, pa je uspostavljen tik uz dno I/O snopa sustava.

DRBD se može instalirati iz spremišta ELRepo ili EPEL. Počnimo s uvozom ključa za potpisivanje paketa ELRepo 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

Tada možemo instalirati DRBD modul kernela i uslužne programe na oba čvora pokretanjem:

# yum install -y kmod-drbd84 drbd84-utils

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

# semanage permissive -a drbd_t

Osim toga, ako je u vašem sustavu omogućen vatrozid (vatrozid), u vatrozid morate dodati DRBD priključak 7789 kako biste omogućili sinkronizaciju podataka između dva čvora.

Izvedite ove naredbe 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že razine

Sada kada imamo DRBD instaliran na dva čvora klastera, moramo pripremiti približno identično veliko skladišno područje na oba čvora. To može biti particija tvrdog diska (ili potpuno fizički tvrdi disk), softverski RAID uređaj, LVM logički volumen ili bilo koja druga vrsta blok uređaja koja se nalazi u vašem sustavu.

U svrhu ovog članka stvorit ćemo lažni blok veličine 2 GB pomoću naredbe dd.

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

Pretpostavit ćemo da je ovo neiskorištena particija (/ dev/sdb1) na uređaju drugog bloka (/ dev/sdb) koji je priključen na oba čvora.

Korak 3: Konfiguriranje DRBD-a

Glavna konfiguracijska datoteka DRBD-a nalazi se na /etc/drbd.conf, a dodatne konfiguracijske datoteke mogu se pronać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 uobičajene odjeljke konfiguracije DRBD, a resurse možemo definirati u .res datotekama.

Napravimo sigurnosnu kopiju izvorne datoteke na oba čvora, a zatim otvorimo novu datoteku za uređivanje (upotrijebite uređivač teksta po vašem ukusu).

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

U obje datoteke dodajte sljedeće retke:

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

Spremite datoteku, a zatim zatvorite uređivač.

Osvijetlimo nakratko više svjetla na linijskom protokolu C. DRBD podržava tri različita načina replikacije (dakle tri stupnja sinkronizacije replikacije) koji su:

  • protokol A: protokol asinkrone replikacije; najčešće se koristi u scenarijima replikacije na velike udaljenosti.
  • protokol B: Polusinhroni protokol replikacije, zvani memorijski sinkroni protokol.
  • protokol C: obično se koristi za čvorove u kratkim distanciranim mrežama; to je daleko najčešće korišteni protokol replikacije u postavkama DRBD-a.

Važno: Izbor protokola replikacije utječe na dva čimbenika vašeg raspoređivanja: zaštitu i latenciju. A protok je, za razliku od toga, uglavnom neovisan o odabranom protokolu replikacije.

Korak 4: Dodavanje resursa

Resurs je skupni pojam koji se odnosi na sve aspekte određenog repliciranog skupa podataka. Svoj ćemo resurs definirati u datoteci nazvanoj /etc/drbd.d/test.res.

U datoteku dodajte sljedeći sadržaj na oba čvora (ne zaboravite zamijeniti varijable u sadržaju stvarnim vrijednostima za vaše okruženje).

Zabilježite imena hostova, trebamo navesti mrežni naziv hosta koji 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 ime hosta: odjeljak on navodi na koje se hostuju priloženi konfiguracijski izrazi.
  • test: naziv je novog resursa.
  • device/dev/drbd0: navodi novi virtualni blok uređaj kojim upravlja DRBD.
  • disk/dev/sdb1: je particija blok uređaja koja je sigurnosni uređaj za DRBD uređaj.
  • meta-disk: definira gdje DRBD pohranjuje svoje metapodatke. Upotreba Internih znači da DRBD pohranjuje svoje meta podatke na isti fizički uređaj niže razine kao stvarni proizvodni podaci.
  • adresa: određuje 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 odrediti izravno u odjeljku resursa.

Na primjer, gornja konfiguracija može se preustrojiti u:

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 s DRBD-om koristit ćemo sljedeće administracijske alate koji komuniciraju s modulom jezgre kako bismo konfigurirali i upravljali DRBD resursima:

  • drbdadm: administrativni alat DRBD-a na visokoj razini.
  • drbdsetup: administrativni alat niže razine za spajanje DRBD uređaja s njihovim pratećim blokovnim uređajima, postavljanje parova DRBD uređaja za zrcaljenje njihovih sigurnosnih blokovskih uređaja i pregled konfiguracije pokrenutih DRBD uređaja.
  • Drbdmeta: je alat za upravljanje meta podacima.

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

# drbdadm create-md test

Dalje, trebali bismo omogućiti resurs, koji će ga spojiti svojim sigurnosnim uređajem, zatim postavlja parametre replikacije i povezuje resurs sa svojim vršnjakom:

# drbdadm up test

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

# lsblk

Da biste onemogućili resurs, pokrenite:

# drbdadm down test

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

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

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

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

Pokrenite sljedeću naredbu na samo jednom čvoru da biste započeli početnu potpunu sinkronizaciju:

# drbdadm primary --force test
# drbdadm status test

Nakon završetka sinkronizacije, status oba diska trebao bi biti UpToDate.

Korak 7: Testiranje postavke DRBD

Na kraju, moramo testirati hoće li DRBD uređaj raditi dobro za repliciranu pohranu podataka. Zapamtite, koristili smo prazan volumen diska, stoga moramo stvoriti datotečni sustav na uređaju i montirati ga kako bismo testirali možemo li ga koristiti za kopiranje podataka.

Na uređaju možemo stvoriti datotečni sustav pomoću sljedeće naredbe, na čvoru gdje smo započeli početnu potpunu sinkronizaciju (koja ima resurs s primarnom ulogom):

# mkfs -t ext4 /dev/drbd0 

Zatim ga montirajte kako je prikazano (točki montiranja možete dati odgovarajući naziv):

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

Sada kopirajte ili izradite neke datoteke u gornjoj točki montiranja i napravite poduži popis pomoću naredbe ls:

# cd /mnt/DRDB_PRI/
# ls -l 

Dalje, demontirajte uređaj (osigurajte da montiranje nije otvoreno, promijenite direktorij nakon demontaže kako biste spriječili bilo kakve pogreške) i promijenite ulogu čvora iz primarnog u sekundarni:

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

Na drugom čvoru (koji ima resurs s sekundarnom ulogom) učinite ga primarnim, a zatim montirajte uređaj na njega i izvedite poduži popis točke montiranja. Ako postava radi u redu, sve datoteke pohranjene u tomu trebaju 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 upute na stranicama alata za administraciju korisničkog prostora:

# man drbdadm
# man drbdsetup
# man drbdmeta

Referenca: Korisnički vodič za DRBD.

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