Zoeken op website

DRBD instellen om opslag te repliceren op twee CentOS 7-servers


De DRBD (staat voor Distributed Replicated Block Device) is een gedistribueerde, flexibele en veelzijdige gerepliceerde opslagoplossing voor Linux. Het weerspiegelt de inhoud van blokapparaten zoals harde schijven, partities, logische volumes enz. tussen servers. Het gaat om een kopie van gegevens op twee opslagapparaten, zodat als het ene uitvalt, de gegevens op het andere kunnen worden gebruikt.

Je kunt het een beetje zien als een netwerk RAID 1-configuratie waarbij de schijven over servers worden gespiegeld. Het werkt echter op een heel andere manier dan RAID en zelfs netwerk-RAID.

Oorspronkelijk werd DRBD voornamelijk gebruikt in computerclusters met hoge beschikbaarheid (HA), maar vanaf versie 9 kan het worden gebruikt om cloudopslagoplossingen te implementeren.

In dit artikel laten we zien hoe je DRBD in CentOS installeert en demonstreren we kort hoe je het kunt gebruiken om opslag (partitie) op twee servers te repliceren. Dit is het perfecte artikel om aan de slag te gaan met het gebruik van DRBD in Linux.

Omgeving testen

Voor de doeleinden van dit artikel gebruiken we voor deze configuratie twee knooppuntenclusters.

  • Knooppunt1: 192.168.56.101 – tecmint.tecmint.lan
  • Knooppunt2: 192.168.56.102 – server1.tecmint.lan

Stap 1: DRBD-pakketten installeren

DRBD is geïmplementeerd als een Linux-kernelmodule. Het vormt precies een driver voor een virtueel blokapparaat, dus het bevindt zich vlak aan de onderkant van de I/O-stack van een systeem.

DRBD kan worden geïnstalleerd vanuit de ELRepo- of EPEL-opslagplaatsen. Laten we beginnen met het importeren van de ELRepo-pakketondertekeningssleutel en de repository inschakelen zoals weergegeven op beide knooppunten.

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

Vervolgens kunnen we de DRBD-kernelmodule en hulpprogramma's op beide knooppunten installeren door het volgende uit te voeren:

yum install -y kmod-drbd84 drbd84-utils

Als je SELinux hebt ingeschakeld, moet je het beleid aanpassen om DRBD-processen uit te sluiten van SELinux-controle.

semanage permissive -a drbd_t

Als op uw systeem een firewall is ingeschakeld (firewalld), moet u bovendien de DRBD-poort 7789 aan de firewall toevoegen om synchronisatie van gegevens tussen de twee knooppunten mogelijk te maken.

Voer deze opdrachten uit op het eerste knooppunt:

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

Voer vervolgens deze opdrachten uit op het tweede knooppunt:

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

Stap 2: Opslag op een lager niveau voorbereiden

Nu we DRBD op de twee clusterknooppunten hebben geïnstalleerd, moeten we op beide knooppunten een ongeveer identiek grote opslagruimte voorbereiden. Dit kan een harde schijfpartitie zijn (of een volledige fysieke harde schijf), een software RAID-apparaat, een LVM logisch volume of een ander type blokapparaat dat op uw systeem wordt aangetroffen.

Voor de doeleinden van dit artikel zullen we een dummy-blokapparaat van 2GB maken met behulp van de dd-opdracht.

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

We gaan ervan uit dat dit een ongebruikte partitie is (/dev/sdb1) op een tweede blokapparaat (/dev/sdb) dat aan beide knooppunten is gekoppeld.

Stap 3: DRBD configureren

Het hoofdconfiguratiebestand van DRBD bevindt zich op /etc/drbd.conf en aanvullende configuratiebestanden kunnen worden gevonden in de map /etc/drbd.d.

Om opslag te repliceren, moeten we de benodigde configuraties toevoegen aan het bestand /etc/drbd.d/global_common.conf dat de globale en algemene secties van de DRBD-configuratie bevat en kunnen we bronnen definiëren in .res bestanden.

Laten we een back-up maken van het originele bestand op beide knooppunten en vervolgens een nieuw bestand openen om te bewerken (gebruik een teksteditor van uw keuze).

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

Voeg de volgende regels toe in beide bestanden:

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

Sla het bestand op en sluit vervolgens de editor.

Laten we kort wat meer licht werpen op de regel protocol C. DRBD ondersteunt drie verschillende replicatiemodi (dus drie graden van replicatiesynchroniciteit), namelijk:

  • protocol A: Asynchrone replicatieprotocol; het wordt het vaakst gebruikt in replicatiescenario's over lange afstanden.
  • protocol B: Semi-synchrone replicatieprotocol, ook wel Memory synchroon protocol genoemd.
  • protocol C: vaak gebruikt voor knooppunten in netwerken op korte afstand; het is veruit het meest gebruikte replicatieprotocol in DRBD-opstellingen.

Belangrijk: de keuze van het replicatieprotocol beïnvloedt twee factoren van uw implementatie: bescherming en latentie. En de doorvoer is daarentegen grotendeels onafhankelijk van het geselecteerde replicatieprotocol.

Stap 4: Een bron toevoegen

Een bron is de verzamelterm die verwijst naar alle aspecten van een bepaalde gerepliceerde dataset. We zullen onze bron definiëren in een bestand met de naam /etc/drbd.d/test.res.

Voeg de volgende inhoud toe aan het bestand, op beide knooppunten (vergeet niet om de variabelen in de inhoud te vervangen door de werkelijke waarden voor uw omgeving).

Noteer de hostnamen. We moeten de netwerkhostnaam specificeren die kan worden verkregen door het commando uname -n uit te voeren.

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

waar :

  • on hostname: in de on-sectie wordt aangegeven op welke host de bijgevoegde configuratie-instructies van toepassing zijn.
  • test: is de naam van de nieuwe bron.
  • device /dev/drbd0: specificeert het nieuwe virtuele blokapparaat dat wordt beheerd door DRBD.
  • schijf /dev/sdb1: is de blokapparaatpartitie die het back-upapparaat is voor het DRBD-apparaat.
  • metaschijf: definieert waar DRBD zijn metadata opslaat. Het gebruik van Intern betekent dat DRBD zijn metagegevens op hetzelfde fysieke apparaat op een lager niveau opslaat als de daadwerkelijke productiegegevens.
  • adres: specificeert het IP-adres en poortnummer van het betreffende knooppunt.

Houd er ook rekening mee dat als de opties op beide hosts gelijke waarden hebben, u ze rechtstreeks in de resourcesectie kunt opgeven.

De bovenstaande configuratie kan bijvoorbeeld worden geherstructureerd naar:

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

Stap 5: Resource initialiseren en inschakelen

Voor interactie met DRBD zullen we de volgende beheertools gebruiken die communiceren met de kernelmodule om DRBD-bronnen te configureren en te beheren:

  • drbdadm: een beheertool op hoog niveau van de DRBD.
  • drbdsetup: een beheertool op een lager niveau om DRBD-apparaten te koppelen aan hun backingblock-apparaten, om DRBD-apparaatparen in te stellen om hun backingblock-apparaten te spiegelen, en om de configuratie van actieve DRBD-apparaten te inspecteren.
  • Drbdmeta: is de tool voor het beheer van metadata.

Nadat we alle initiële resourceconfiguraties hebben toegevoegd, moeten we de resource op beide knooppunten weergeven.

drbdadm create-md test

Vervolgens moeten we de bron inschakelen, die de bron koppelt aan zijn back-upapparaat, vervolgens replicatieparameters instelt en de bron verbindt met zijn peer:

drbdadm up test

Als u nu de opdracht lsblk uitvoert, zult u merken dat het DRBD-apparaat/volume drbd0 is gekoppeld aan het back-upapparaat /dev/sdb1:

lsblk

Voer het volgende uit om de bron uit te schakelen:

drbdadm down test

Om de bronstatus te controleren, voert u de volgende opdracht uit (merk op dat de schijfstatus Inconsistent/Inconsistent op dit moment wordt verwacht):

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

Stap 6: Stel de primaire bron/bron van de initiële apparaatsynchronisatie in

In dit stadium is DRBD nu klaar voor gebruik. We moeten nu vertellen welk knooppunt moet worden gebruikt als de bron van de initiële apparaatsynchronisatie.

Voer de volgende opdracht uit op slechts één knooppunt om de eerste volledige synchronisatie te starten:

drbdadm primary --force test
drbdadm status test

Zodra de synchronisatie is voltooid, moet de status van beide schijven UpToDate zijn.

Stap 7: DRBD-installatie testen

Ten slotte moeten we testen of het DRBD-apparaat goed zal werken voor gerepliceerde gegevensopslag. Houd er rekening mee dat we een leeg schijfvolume hebben gebruikt. Daarom moeten we een bestandssysteem op het apparaat maken en dit koppelen om te testen of we het kunnen gebruiken voor gerepliceerde gegevensopslag.

We kunnen een bestandssysteem op het apparaat maken met de volgende opdracht, op het knooppunt waar we de eerste volledige synchronisatie zijn gestart (die de bron met primaire rol heeft):

mkfs -t ext4 /dev/drbd0 

Monteer het vervolgens zoals weergegeven (u kunt het mountpunt een passende naam geven):

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

Kopieer of maak nu enkele bestanden in het bovenstaande mountpunt en maak een lange lijst met de opdracht ls:

cd /mnt/DRDB_PRI/
ls -l 

Vervolgens ontkoppelt het apparaat (zorg ervoor dat de aankoppeling niet open is, wijzig de map na het ontkoppelen om eventuele fouten te voorkomen) en verander de rol van het knooppunt van primair in < sterk>secundair:

umount /mnt/DRDB_PRI/
cd
drbdadm secondary test

Op het andere knooppunt (dat de bron met een secundaire rol heeft), maakt u dit primair, koppelt u vervolgens het apparaat erop en voert u een lange lijst van het koppelpunt uit. Als de installatie goed werkt, zouden alle bestanden die op het volume zijn opgeslagen aanwezig moeten zijn:

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

Voor meer informatie, zie de manpagina's van de beheertools voor de gebruikersruimte:

man drbdadm
man drbdsetup
man drbdmeta
Samenvatting

DRBD is uiterst flexibel en veelzijdig, waardoor het een oplossing voor opslagreplicatie is die geschikt is voor het toevoegen van HA aan vrijwel elke toepassing. In dit artikel hebben we laten zien hoe u DRBD in CentOS 7 kunt installeren en kort hebben gedemonstreerd hoe u dit kunt gebruiken om opslag te repliceren. Deel gerust uw mening met ons via het onderstaande feedbackformulier.