DRBD:n määrittäminen replikoimaan tallennustilaa kahdella CentOS 7 -palvelimella


DRBD (lyhenne sanoista Distributed Replicated Block Device) on hajautettu, joustava ja monipuolinen replikoitu tallennusratkaisu Linuxille. Se heijastaa lohkolaitteiden, kuten kiintolevyjen, osioiden, loogisten taltioiden jne. sisältöä palvelimien välillä. Se sisältää kopion tiedoista kahdella tallennuslaitteella, joten jos toinen epäonnistuu, toisen tietoja voidaan käyttää.

Voit ajatella sitä jonkin verran kuin verkko-RAID 1 -kokoonpanoa, jossa levyt peilataan palvelimien välillä. Se toimii kuitenkin hyvin eri tavalla kuin RAID ja jopa verkko-RAID.

Alun perin DRBD:tä käytettiin pääasiassa korkean käytettävyyden (HA) tietokoneklustereissa, mutta versiosta 9 alkaen sitä voidaan käyttää pilvitallennusratkaisujen käyttöönotossa.

Tässä artikkelissa näytämme, kuinka DRBD asennetaan CentOS:ään, ja osoitamme lyhyesti, kuinka sitä käytetään tallennustilan (osion) replikoimiseen kahdella palvelimella. Tämä on täydellinen artikkeli aloittaaksesi DRBD:n käytön Linuxissa.

Testausympäristö

Tätä artikkelia varten käytämme tässä asennuksessa kahta solmuklusteria.

  • Solmu1: 192.168.56.101 – tecmint.tecmint.lan
  • Solmu2: 192.168.56.102 – server1.tecmint.lan

Vaihe 1: DRBD-pakettien asentaminen

DRBD on toteutettu Linux-ydinmoduulina. Se muodostaa tarkalleen virtuaalisen lohkolaitteen ohjaimen, joten se on sijoitettu aivan järjestelmän I/O-pinon alareunaan.

DRBD voidaan asentaa ELRepo- tai EPEL-varastoista. Aloitetaan tuomalla ELRepo-paketin allekirjoitusavain ja otetaan käyttöön arkisto molemmissa solmuissa esitetyllä tavalla.

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

Sitten voimme asentaa DRBD-ydinmoduulin ja apuohjelmat molempiin solmuihin suorittamalla:

yum install -y kmod-drbd84 drbd84-utils

Jos SELinux on käytössä, sinun on muutettava käytäntöjä vapauttaaksesi DRBD-prosessit SELinux-ohjauksesta.

semanage permissive -a drbd_t

Lisäksi, jos järjestelmässäsi on palomuuri käytössä (palomuuri), sinun on lisättävä palomuuriin DRBD-portti 7789, jotta data synkronoidaan kahden solmun välillä.

Suorita nämä komennot ensimmäisessä solmussa:

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

Suorita sitten nämä komennot toisessa solmussa:

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

Vaihe 2: Alemman tason tallennustilan valmistelu

Nyt kun DRBD on asennettu kahteen klusterin solmuun, meidän on valmisteltava suunnilleen samankokoinen tallennusalue molemmille solmuille. Tämä voi olla kiintolevyosio (tai täysi fyysinen kiintolevy), ohjelmisto-RAID-laite, LVM Logical Volume tai mikä tahansa muu järjestelmästäsi löytyvä lohkolaitetyyppi.

Tätä artikkelia varten luomme tyhjän lohkolaitteen, jonka koko on 2 Gt dd-komennolla.

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

Oletetaan, että tämä on käyttämätön osio (/dev/sdb1) toisessa lohkolaitteessa (/dev/sdb), joka on liitetty molempiin solmuihin.

Vaihe 3: DRBD:n määrittäminen

DRBD:n päämääritystiedosto sijaitsee osoitteessa /etc/drbd.conf, ja muita konfiguraatiotiedostoja löytyy hakemistosta /etc/drbd.d.

Tallennustilan replikointia varten meidän on lisättävä tarvittavat asetukset /etc/drbd.d/global_common.conf-tiedostoon, joka sisältää DRBD-määrityksen yleiset ja yleiset osat, ja voimme määrittää resurssit >.res-tiedostoja.

Tehdään varmuuskopio alkuperäisestä tiedostosta molemmissa solmuissa ja avataan sitten uusi tiedosto muokkausta varten (käytä haluamaasi tekstieditoria).

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

Lisää seuraavat rivit molempiin tiedostoihin:

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

Tallenna tiedosto ja sulje sitten editori.

Varjostetaan hetkeksi lisää valoa riville protokolla C. DRBD tukee kolmea erillistä replikointitilaa (eli kolmea replikointisynkronisuusastetta), jotka ovat:

  • protokolla A: Asynkroninen replikointiprotokolla; sitä käytetään useimmiten pitkän matkan replikointiskenaarioissa.
  • protokolla B: Puolisynkroninen replikointiprotokolla eli Memory synchronous protocol.
  • protokolla C: käytetään yleisesti lyhyen matkan verkkojen solmuissa; se on ylivoimaisesti yleisimmin käytetty replikointiprotokolla DRBD-asetuksissa.

Tärkeää: Replikointiprotokollan valinta vaikuttaa kahteen käyttöönoton tekijään: suojaukseen ja viiveeseen. Ja suorituskyky sitä vastoin on pitkälti riippumaton valitusta replikointiprotokollasta.

Vaihe 4: Resurssin lisääminen

Resurssi on yhteistermi, joka viittaa tietyn replikoidun tietojoukon kaikkiin näkökohtiin. Määrittelemme resurssimme tiedostossa nimeltä /etc/drbd.d/test.res.

Lisää seuraava sisältö tiedostoon molemmissa solmuissa (muista korvata sisällön muuttujat ympäristösi todellisilla arvoilla).

Huomaa isäntänimet, meidän on määritettävä verkon isäntänimi, joka saadaan suorittamalla komento 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;
        }
}
}

missä :

  • isäntänimessä: On-osion tilat, joihin mukana olevat määrityslausekkeet isännöidään.
  • testi: on uuden resurssin nimi.
  • laite /dev/drbd0: määrittää uuden virtuaalisen lohkolaitteen, jota DRBD hallitsee.
  • levy /dev/sdb1: on lohkolaiteosio, joka on DRBD-laitteen taustalaite.
  • meta-levy: määrittää, mihin DRBD tallentaa metatietonsa. Sisäinen käyttö tarkoittaa, että DRBD tallentaa metatietonsa samaan fyysiseen alemman tason laitteeseen kuin varsinaiset tuotantotiedot.
  • osoite: määrittää vastaavan solmun IP-osoitteen ja portin numeron.

Huomaa myös, että jos vaihtoehdoilla on samat arvot molemmissa isännissä, voit määrittää ne suoraan resurssiosiossa.

Esimerkiksi yllä oleva kokoonpano voidaan muuttaa seuraavasti:

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

Vaihe 5: Resurssin alustaminen ja käyttöönotto

Vuorovaikutuksessa DRBD:n kanssa käytämme seuraavia hallintatyökaluja, jotka kommunikoivat ydinmoduulin kanssa DRBD-resurssien määrittämiseksi ja hallitsemiseksi:

  • drbdadm: DRBD:n korkean tason hallintatyökalu.
  • drbdsetup: alemman tason hallintatyökalu DRBD-laitteiden liittämiseen tukilohkolaitteineen, DRBD-laiteparien määrittämiseen niiden tukilohkolaitteiden peilaamiseksi ja käynnissä olevien DRBD-laitteiden kokoonpanon tarkistamiseen.
  • Drbdmeta: on metatietojen hallintatyökalu.

Kun kaikki alkuperäiset resurssimääritykset on lisätty, meidän on tuotava resurssi esiin molemmissa solmuissa.

drbdadm create-md test

Seuraavaksi meidän tulee ottaa käyttöön resurssi, joka liittää resurssin taustalaitteineen, sitten se asettaa replikointiparametrit ja yhdistää resurssin vertaiseen:

drbdadm up test

Jos nyt suoritat lsblk-komennon, huomaat, että DRBD-laite/-taltio drbd0 on liitetty tukilaitteeseen /dev/sdb1:

lsblk

Poista resurssi käytöstä suorittamalla:

drbdadm down test

Tarkistaaksesi resurssin tilan, suorita seuraava komento (huomaa, että Epäjohdonmukainen/epäjohdonmukainen levytila odotetaan tässä vaiheessa):

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

Vaihe 6: Aseta laitteen alkuperäisen synkronoinnin ensisijainen resurssi/lähde

Tässä vaiheessa DRBD on nyt käyttövalmis. Nyt meidän on kerrottava sille, mitä solmua tulisi käyttää alkuperäisen laitesynkronoinnin lähteenä.

Aloita alkuperäinen täydellinen synkronointi suorittamalla seuraava komento vain yhdessä solmussa:

drbdadm primary --force test
drbdadm status test

Kun synkronointi on valmis, molempien levyjen tilan tulee olla UpToDate.

Vaihe 7: Testaa DRBD-asetusta

Lopuksi meidän on testattava, toimiiko DRBD-laite hyvin replikoituun tiedon tallentamiseen. Muista, että käytimme tyhjää levytilaa, joten meidän on luotava tiedostojärjestelmä laitteelle ja liitettävä se testataksemme, voimmeko käyttää sitä replikoituun tiedon tallentamiseen.

Voimme luoda tiedostojärjestelmän laitteelle seuraavalla komennolla solmuun, josta aloitimme alkuperäisen täyden synkronoinnin (jolla on resurssi ensisijaisella roolilla):

mkfs -t ext4 /dev/drbd0 

Asenna se sitten kuvan mukaisesti (voit antaa asennuspisteelle sopivan nimen):

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

Kopioi tai luo nyt joitain tiedostoja yllä olevaan liitoskohtaan ja tee pitkä luettelo käyttämällä ls-komentoa:

cd /mnt/DRDB_PRI/
ls -l 

Seuraavaksi irrota laite (varmista, että liitin ei ole auki, vaihda hakemistoa irrottamisen jälkeen virheiden välttämiseksi) ja muuta solmun rooli ensisijaisesta arvoon toissijainen:

umount /mnt/DRDB_PRI/
cd
drbdadm secondary test

Aseta toisessa solmussa (jolla on resurssi toissijaisessa roolissa) se ensisijainen, liitä sitten laite siihen ja suorita pitkä listaus liitospisteestä. Jos asennus toimii hyvin, kaikkien levylle tallennettujen tiedostojen pitäisi olla siellä:

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

Katso lisätietoja käyttäjätilan hallintatyökalujen man-sivuilta:

man drbdadm
man drbdsetup
man drbdmeta
Yhteenveto

DRBD on erittäin joustava ja monipuolinen, mikä tekee siitä tallennusreplikointiratkaisun, joka soveltuu HA:n lisäämiseen lähes kaikkiin sovelluksiin. Tässä artikkelissa olemme näyttäneet, kuinka DRBD asennetaan CentOS 7:ään, ja lyhyesti, kuinka sitä käytetään tallennustilan replikointiin. Voit vapaasti jakaa ajatuksesi kanssamme alla olevan palautelomakkeen kautta.