Wéi konfiguréieren DRBD fir Späichere op zwee CentOS 7 Serveren ze replizéieren


Den DRBD (steet fir Distributed Replicated Block Device) ass eng verdeelt, flexibel a versatile replizéiert Späicherléisung fir Linux. Et spigelt den Inhalt vu Blockgeräter wéi Harddisken, Partitionen, logesch Bänn etc. tëscht Serveren. Et handelt sech ëm eng Kopie vun Daten op zwee Späicherapparater, sou datt wann een ausfällt, d'Donnéeën op deem aneren benotzt kënne ginn.

Dir kënnt et e bësse wéi eng Netzwierk RAID 1 Konfiguratioun denken mat den Disken, déi iwwer Server gespigelt sinn. Wéi och ëmmer, et funktionnéiert op eng ganz aner Manéier wéi RAID a souguer Netzwierk RAID.

Ursprénglech gouf DRBD haaptsächlech an High Disponibilitéit (HA) Computercluster benotzt, awer, ugefaange mat der Versioun 9, kann et benotzt ginn fir Cloud Storage Léisungen z'installéieren.

An dësem Artikel wäerte mir weisen wéi Dir DRBD an CentOS installéiere wëllt a kuerz weisen wéi Dir se benotzt fir d'Späichere (Partition) op zwee Serveren ze replizéieren. Dëst ass de perfekte Artikel fir unzefänken mat DRBD a Linux ze benotzen.

Fir den Zweck vun dësem Artikel benotze mir zwee Node Cluster fir dëse Setup.

  • Node1: 192.168.56.101 – tecmint.tecmint.lan
  • Node2: 192.168.56.102 – server1.tecmint.lan

Schrëtt 1: DRBD Packagen installéieren

DRBD gëtt als Linux Kernel Modul implementéiert. Et stellt präzis e Chauffer fir e virtuelle Blockapparat aus, sou datt et direkt no ënnen vun engem System I/O Stack etabléiert ass.

DRBD kann aus den ELRepo oder EPEL Repositories installéiert ginn. Loosst eis ufänken mam ELRepo Package Ënnerschrëft Schlëssel z'importéieren, an de Repository aktivéieren wéi op béide Wirbelen gewisen.

# 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

Da kënne mir den DRBD Kernel Modul an Utilities op béide Wirbelen installéieren andeems se lafen:

# yum install -y kmod-drbd84 drbd84-utils

Wann Dir SELinux aktivéiert hutt, musst Dir d'Politik änneren fir DRBD Prozesser vun der SELinux Kontroll ze befreien.

# semanage permissive -a drbd_t

Zousätzlech, wann Äre System eng Firewall aktivéiert huet (Firewalld), musst Dir den DRBD Hafen 7789 an der Firewall addéieren fir d'Synchroniséierung vun Daten tëscht den zwee Wirbelen z'erméiglechen.

Fëllt dës Kommandoen um éischte Node aus:

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

Fuert dann dës Kommandoen um zweeten Node:

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

Schrëtt 2: Virbereeden nidderegen Niveau Stockage

Elo, datt mir DRBD op den zwee Cluster Wirbelen installéiert hunn, musse mir eng ongeféier identesch Gréisst Stockage Beräich op béide Wirbelen virbereeden. Dëst kann eng Festplack Partition (oder eng voll kierperlech Festplack), e Software RAID Apparat, e LVM Logical Volume oder all aner Block Apparat Typ op Ärem System fonnt ginn.

Fir den Zweck vun dësem Artikel erstellen mir en Dummy Block-Apparat vun der Gréisst 2GB mam dd Kommando.

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

Mir huelen un datt dëst eng onbenotzt Partition (/dev/sdb1) op engem zweete Blockapparat (/dev/sdb) op béide Wirbelen ass.

Schrëtt 3: DRBD konfiguréieren

D'Haaptkonfiguratiounsdatei vun DRBD ass op /etc/drbd.conf an zousätzlech Configuratiounsdateien kënnen am /etc/drbd.d Verzeichnis fonnt ginn.

Fir d'Späichere ze replizéieren, musse mir déi néideg Konfiguratiounen an der /etc/drbd.d/global_common.conf Datei addéieren déi déi global a gemeinsam Sektioune vun der DRBD Konfiguratioun enthält a mir kënnen Ressourcen an .res Dateien definéieren.

Loosst eis e Backup vun der ursprénglecher Datei op béide Wirbelen maachen, dann öffnen eng nei Datei fir z'änneren (benotzt en Texteditor vun Ärem Wënsch).

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

Füügt déi folgend Zeilen a béid Dateien un:

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

Späichert d'Datei, an dann den Editor zou.

Loosst eis kuerz méi Liicht op de Linn Protokoll Schied C. DRBD ënnerstëtzt dräi verschidde Replikatiounsmodi (also dräi Grad vu Replikatiounssynchronizitéit) déi sinn:

  • Protokoll A: Asynchrone Replikatiounsprotokoll; et gëtt meeschtens a laang Distanz Replikatiounsszenarien benotzt.
  • Protokoll B: Semi-synchrone Replikatiounsprotokoll aka Memory Synchronous Protokoll.
  • Protokoll C: allgemeng benotzt fir Noden a kuerzen distanzéierende Netzwierker; et ass bei wäitem dee meescht benotzte Replikatiounsprotokoll an DRBD-Setups.

Wichteg: D'Wiel vum Replikatiounsprotokoll beaflosst zwee Faktore vun Ärem Détachement: Schutz a Latenz. An Duerchgang, am Géigesaz, ass gréisstendeels onofhängeg vum gewielte Replikatiounsprotokoll.

Schrëtt 4: Eng Ressource derbäisetzen

Eng Ressource ass de kollektive Begrëff deen op all Aspekter vun engem bestëmmte replizéierten Dateset bezitt. Mir definéieren eis Ressource an enger Datei mam Numm /etc/drbd.d/test.res.

Füügt de folgenden Inhalt an d'Datei, op béide Wirbelen (erënnert drun d'Variabelen am Inhalt mat den aktuellen Wäerter fir Äert Ëmfeld ze ersetzen).

Notéiert d'Hostnamen, mir mussen den Netzwierkhostnumm spezifizéieren, dee kritt ka ginn andeems Dir de Kommando uname -n leeft.

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

wou:

  • op Hostnumm: d'On-Sektioun-Staaten op déi déi zougeschloss Konfiguratiounsaussoen gëllen.
  • Test: ass den Numm vun der neier Ressource.
  • Device /dev/drbd0: spezifizéiert den neie virtuelle Blockapparat deen vun DRBD geréiert gëtt.
  • Disk /dev/sdb1: ass d'Blockapparatpartition déi de Backing-Apparat fir den DRBD-Gerät ass.
  • Meta-Disk: Definéiert wou DRBD seng Metadaten späichert. Intern benotzt heescht datt DRBD seng Metadaten op deemselwechte physikaleschen ënneschten Apparat späichert wéi déi tatsächlech Produktiounsdaten.
  • Adress: spezifizéiert d'IP Adress an d'Portnummer vum jeweilegen Node.

Notéiert och datt wann d'Optiounen gläichwäerteg Wäerter op béide Hosten hunn, kënnt Dir se direkt an der Ressource Sektioun uginn.

Zum Beispill kann déi uewe genannte Konfiguratioun nei strukturéiert ginn:

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

Schrëtt 5: Ressource initialiséieren an aktivéieren

Fir mat DRBD ze interagéieren, benotze mir déi folgend Administratiounstools, déi mam Kernelmodul kommunizéieren fir DRBD Ressourcen ze konfiguréieren an ze administréieren:

  • drbdadm: en héije Administratiounsinstrument vun der DRBD.
  • drbdsetup: e méi nidderegen Niveau Administratiounsinstrument fir DRBD-Geräter mat hiren Backing-Block-Geräter ze befestigen, DRBD-Apparatpaaren opzestellen fir hir Backing-Block-Geräter ze spigelen, an d'Konfiguratioun vun lafenden DRBD-Geräter z'inspektéieren.
  • Drbdmeta:ass d'Metadatenverwaltungsinstrument.

Nodeems mir all déi initial Ressourcekonfiguratiounen bäigefüügt hunn, musse mir d'Ressource op béide Wirbelen bréngen.

# drbdadm create-md test

Als nächst solle mir d'Ressource aktivéieren, déi d'Ressource mat sengem Backing-Apparat befestegt, da setzt se Replikatiounsparameter, a verbënnt d'Ressource mat sengem Peer:

# drbdadm up test

Elo wann Dir de lsblk Kommando leeft, mierkt Dir datt den DRBD Apparat/Volumen drbd0 mat dem Backing-Apparat /dev/sdb1 assoziéiert ass:

# lsblk

Fir d'Ressource auszeschalten, lafen:

# drbdadm down test

Fir de Ressourcestatus z'iwwerpréiwen, fuert de folgende Kommando (Notiz datt den Inkonsistent/Inkonsistent Disk Staat zu dësem Zäitpunkt erwaart gëtt):

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

Schrëtt 6: Set Primär Ressource/Quell vun Ufank Apparat Synchroniséierung

Op dëser Etapp ass DRBD elo prett fir Operatioun. Mir mussen elo soen, wéi en Node als Quell vun der initialer Apparatsynchroniséierung benotzt soll ginn.

Fëllt de folgende Kommando op nëmmen engem Node fir déi initial voll Synchroniséierung unzefänken:

# drbdadm primary --force test
# drbdadm status test

Wann d'Synchroniséierung fäerdeg ass, soll de Status vu béide Disken UpToDate sinn.

Schrëtt 7: Testen DRBD Setup

Endlech musse mir testen ob den DRBD Apparat gutt funktionnéiert fir replizéiert Datelagerung. Denkt drun, mir hunn en eidel Diskvolumen benotzt, dofir musse mir e Dateiesystem um Apparat erstellen an et montéieren, fir ze testen ob mir et fir replizéiert Datelagerung benotze kënnen.

Mir kënnen e Dateiesystem um Apparat mat dem folgenden Kommando erstellen, um Node wou mir déi initial voll Synchroniséierung ugefaang hunn (déi d'Ressource mat der primärer Roll huet):

# mkfs -t ext4 /dev/drbd0 

Da montéiert et wéi gewisen (Dir kënnt dem Montéierungspunkt en passenden Numm ginn):

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

Elo kopéiert oder erstellt e puer Dateien am uewe genannte Mountpunkt a maacht eng laang Oplëschtung mam ls Kommando:

# cd /mnt/DRDB_PRI/
# ls -l 

Als nächst, demontéiert den Apparat (assuréieren datt de Mount net op ass, ännert de Verzeechnes nodeems se ofgeschaaft ginn fir Feeler ze vermeiden) an ännert d'Roll vum Node vu primär op sekundär:

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

Op deem aneren Node (deen d'Ressource mat enger sekundärer Roll huet), maacht et primär, montéiert dann den Apparat drop a maacht eng laang Oplëschtung vum Mountpunkt. Wann de Setup gutt funktionnéiert, sollten all d'Dateien déi am Volume gespäichert sinn do sinn:

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

Fir méi Informatioun, kuckt d'Man Säiten vun de Benotzerraumverwaltungsinstrumenter:

# man drbdadm
# man drbdsetup
# man drbdmeta

Referenz: Den DRBD User's Guide.

DRBD ass extrem flexibel a versatile, wat et zu enger Späicherreplikatiounsléisung gëeegent mécht fir HA op bal all Applikatioun ze addéieren. An dësem Artikel hu mir gewisen wéi Dir DRBD an CentOS 7 installéiere wëllt a kuerz demonstréiert wéi Dir et benotzt fir d'Späichere ze replizéieren. Fillt Iech gratis Är Gedanken mat eis iwwer de Feedbackformular hei ënnen ze deelen.