Oversættelsen af artiklen er udarbejdet forud for begyndelsen af kurset .
DRBD (Distributed Replicated Block Device — distribueret repliceret blokapparat) er en distribueret, fleksibel og universelt replicerbar datalagringsløsning til Linux. Det spejler indholdet af blokapparater såsom harddiske, partitioner, logiske volumener osv. mellem servere. Det skaber kopier af data på to lagringsenheder, så hvis en af dem svigter, kan dataene bruges på den anden.
Man kan sige, at det er noget som 1 med diske, der spejles på forskellige servere. Men det fungerer slet ikke som RAID (selv ikke netværks-RAID).
Oprindeligt blev DRBD primært brugt i computerklynger med høj tilgængelighed (HA — high availability), men fra version ni kan det bruges til at implementere cloud-lagringsløsninger.
I denne artikel vil vi vise, hvordan man installerer DRBD i CentOS, og kort demonstrere, hvordan man bruger det til at replikere lager (partition) på to servere. Dette er den ideelle artikel til at komme i gang med DRBD i Linux.
Testmiljø
Vi vil bruge en klynge med to noder til denne opsætning.
- Node 1: 192.168.56.101 – tecmint.tecmint.lan
- Node 2: 192.168.56.102 – server1.tecmint.lan
Trin 1: Installation af DRBD-pakker
DRBD er implementeret som et Linux-kernelmodul. Det fungerer som en driver for et virtuelt blokapparat, så det ligger i bunden af systemets input-output-stak.
DRBD kan installeres fra ELRepo eller EPEL. Lad os starte med at importere signaturnøglen fra ELRepo og tilslutte depotet på begge noder, som vist nedenfor.
# 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.rpmDernæst skal du installere DRBD-kernelmodulet og værktøjerne på begge noder med:
# yum install -y kmod-drbd84 drbd84-utilsHvis du har SELinux aktiveret, skal du konfigurere politikkerne for at frigøre DRBD-processerne fra SELinux-kontrol.
# semanage permissive -a drbd_t
Desuden, hvis din system har en firewall (firewalld), skal du tilføje DRBD-port 7789 for at tillade databaserne at synkronisere mellem de to noder.
Kør disse kommandoer for den første node:
# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.56.102" port port="7789" protocol="tcp" accept'
# firewall-cmd --reloadKør derefter disse kommandoer for den anden node:
# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.56.101" port port="7789" protocol="tcp" accept'
# firewall-cmd --reloadTrin 2. Forberedelse af lavniveau-lagring
Nu, når vi har installeret DRBD på begge klyngenoder, skal vi forberede lagerområder af omtrent samme størrelse. Dette kan være en partition af en harddisk (eller en hel fysisk harddisk), et software RAID-enhed, eller en hvilken som helst anden type blokenhed, der findes i dit system.
Til denne artikel vil vi oprette en testblok-enhed på 2 GB ved hjælp af dd-kommandoen.
# dd if=/dev/zero of=/dev/sdb1 bs=2024k count=1024Lad os antage, at dette er en ubenyttet partition (/dev/sdb1) på den anden blok-enhed (/dev/sdb), der er tilsluttet begge noder.
Trin 3. Konfiguration af DRBD
Den primære konfigurationsfil for DRBD er /etc/drbd.conf, og yderligere konfigurationsfiler kan findes i kataloget /etc/drbd.d.
For at replikere lageret skal vi tilføje de nødvendige konfigurationer til filen /etc/drbd.d/global_common.conf, som indeholder globale og fælles konfigurationer for DRBD, mens vi skal definere ressourcerne i .res -filerne.
Lad os tage en sikkerhedskopi af den oprindelige fil på begge noder, og derefter åbne en ny fil til redigering (brug en teksteditor efter eget valg).
# mv /etc/drbd.d/global_common.conf /etc/drbd.d/global_common.conf.orig
# vim /etc/drbd.d/global_common.conf Tilføj følgende linjer til begge filer:
global {
usage-count yes;
}
common {
net {
protocol C;
}
}Gem filen, og luk derefter editoren.
Lad os kort stoppe ved linjen protocol C. DRBD understøtter tre forskellige replikationsmetoder (dvs. tre grader af replikationssynkronisering), nemlig:
- protocol A: protokol til asynkron replikation; bruges oftest i replikationsscenarier over lange afstande.
- protocol B: protokol til halvsynkron replikation eller protokol for synkron hukommelse.
- protocol C: anvendes normalt for noder i netværk med korte afstande; dette er uden tvivl den mest brugte replikationsprotokol i DRBD-indstillinger.
Det er vigtigt: Valget af replikationsprotokol påvirker to implementeringsfaktorer: sikkerhed og latenstid. Bandbredden påvirkes derimod ikke væsentligt af den valgte replikationsprotokol.
Trin 4. Tilføjelse af en ressource
En ressource (Resource) er et samlebetegnelse, der henviser til alle aspekter af et specifikt replikabelt datasæt. Vi vil definere vores ressource i filen /etc/drbd.d/test.res.
Tilføj følgende til filen på begge noder (husk at erstatte variablerne med faktiske værdier for dit miljø).
Vær opmærksom på værtsnavnene, vi skal angive det netværksværtsnavn, som kan opnås ved hjælp af kommandoen 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;
}
}hvor:
- på værtsnavn: sektionen on, som den indlejrede konfigurationsoperation henviser til.
- test: dette er navnet på den nye ressource.
- device /dev/drbd0: angiver et nyt virtuelt blokdevice, der styres af DRBD.
- disk /dev/sdb1: dette er sektionen af blokdevice, der fungerer som backup enhed for DRBD enheden.
- meta-disk: definerer, hvor DRBD opbevarer sine metadata. Internal betyder, at DRBD opbevarer sine metadata på det samme fysiske lavniveau device som de faktiske data i produktionen.
- address: angiver IP-adressen og portnummeret for den relevante node.
Vær også opmærksom på, at hvis parametrene er ens på begge værter, kan du angive dem direkte i ressourceafsnittet.
For eksempel kan den konfiguration, der er givet ovenfor, omstruktureres til:
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;
}
}Trin 5. Initialisering og opstart af ressourcen
For at interagere med DRBD vil vi bruge følgende administrationsværktøjer (som interagerer med kernen for at konfigurere og administrere DRBD-ressourcer):
- drbdadm: DRBD høj-niveau administrationsværktøj.
- drbdsetup: lav-niveau administrationsværktøj til tilslutning af DRBD-enheder til deres backup-enheder, opsætning af par af DRBD-enheder til at spejle deres backup-enheder og til at kontrollere konfigurationen for kørende DRBD-enheder.
- Drbdmeta: værktøj til administration af metadata.
Efter at have tilføjet alle de indledende konfigurationer for ressourcen, skal vi anrode ressourcen på begge noder.
# drbdadm create-md test 
Initialisering af metadata-lager
Dernæst skal vi starte den, hvilket vil tilslutte ressourcen til dens backup-enhed, så opsætte replikationsindstillinger og tilslutte ressourcen til sin peer:
# drbdadm up test Nu, hvis du kører kommandoen , vil du bemærke, at enheden/volumen DRBD drbd0 er tilsluttet backup-enheden /dev/sdb1:
# lsblk 
Liste over blokenheder
For at deaktivere ressourcet, kør:
# drbdadm down testFor at tjekke status på ressourcen, kør følgende kommando (vær opmærksom på, at der på dette stadium forventes diskstatus) Inkonsekvent/Inkonsekvent):
# drbdadm status test
OR
# drbdsetup status test --verbose --statistics #for a more detailed status 
Tjek status på ressourcen på u
zoner
Trin 6: Opsætning af primært ressource/kilde til initial synkronisering af enheder
På dette stadium er DRBD allerede klar til brug. Nu skal vi angive, hvilken node der skal bruges som kilde til initial synkronisering af enheder.
Kør følgende kommando kun på én node for at starte den første fulde synkronisering:
# drbdadm primary --force test
# drbdadm status test 
Opsætte den primære node som den initiale enhed
Når synkroniseringen er afsluttet, skal status for begge diske være Opdateret.
Trin 7: Test af DRBD-opsætningen
Endelig skal vi kontrollere, om DRBD-enheden fungerer som den skal til lagring af replikerede data. Husk, at vi brugte en tom disk, så vi skal oprette et filsystem på enheden og montere det for at tjekke, om vi kan bruge det til lagring af replikerede data.
Vi skal oprette et filsystem på enheden med følgende kommando på den node, hvorfra vi startede den første fulde synkronisering (hvor ressource med primær rolle findes):
# mkfs -t ext4 /dev/drbd0 
Opretter et filsystem på Drbd-volumen
Monter det derefter som vist (du kan give monteringspunktet et passende navn):
# mkdir -p /mnt/DRDB_PRI/
# mount /dev/drbd0 /mnt/DRDB_PRI/
Nu skal du kopiere eller oprette nogle filer i det ovenfor angivne monteringspunkt og lave en lang liste med :
# cd /mnt/DRDB_PRI/
# ls -l 
Viser indholdet af den primære Drbd-volumen
Derefter afmonteres enheden (sørg for, at der ikke er åbne monteringer, skift katalog efter afmontering for at undgå fejl) og ændre nodens rolle fra primær til sekundær:
# umount /mnt/DRDB_PRI/
# cd
# drbdadm secondary testDen anden node (hvor ressource med sekundær rolle findes) gøres til primær, tilslut derefter enheden til den og udfør en lang liste over monteringspunkter. Hvis opsætningen fungerer korrekt, skal alle filer, der er gemt på volumen, være der:
# drbdadm primary test
# mkdir -p /mnt/DRDB_SEC/
# mount /dev/drbd0 /mnt/DRDB_SEC/
# cd /mnt/DRDB_SEC/
# ls -l 
Kontrol af opsætning af DRBD, der kører på den sekundære node.
For yderligere information, se reference-siderne for administrationsværktøjerne:
# man drbdadm
# man drbdsetup
# man drbdmetaHjælp: .
CV
DRBD er ekstremt fleksibel og alsidig, hvilket gør det til en løsning til lagerréplication, der er velegnet til at tilføje HA til næsten enhver applikation. I denne artikel har vi vist, hvordan man installer DRBD på CentOS 7, og kort demonstreret, hvordan man bruger det til lagerréplication. Tøv ikke med at dele dine tanker med os via feedbackformularen nedenfor.
Kilde: habr.com
