Par ko mÄs runÄsim:
KÄ Ätri izvietot koplietojamo krÄtuvi diviem serveriem, pamatojoties uz drbd+ocfs2 risinÄjumiem.
Kam tas noderÄs:
ApmÄcÄ«ba bÅ«s noderÄ«ga sistÄmu administratoriem un ikvienam, kurÅ” izvÄlas krÄtuves ievieÅ”anas metodi vai vÄlas izmÄÄ£inÄt risinÄjumu.
No kÄdiem lÄmumiem mÄs atteicÄmies un kÄpÄc?
Bieži vien mÄs saskaramies ar situÄciju, kad nelielÄ tÄ«mekļa klasterÄ« ir jÄievieÅ” koplietoÅ”anas krÄtuve ar labu lasÄ«Å”anas un rakstÄ«Å”anas veiktspÄju. MÄs izmÄÄ£inÄjÄm dažÄdas iespÄjas, kÄ mÅ«su projektiem ieviest dalÄ«tu krÄtuvi, taÄu tikai daži spÄja mÅ«s apmierinÄt pÄc vairÄkiem rÄdÄ«tÄjiem vienlaikus. Tagad mÄs jums pateiksim, kÄpÄc.
- Glusterfs mÅ«s neapmierinÄja ar lasÄ«Å”anas un rakstÄ«Å”anas veiktspÄju, bija problÄmas ar lielu failu skaita vienlaicÄ«gu lasÄ«Å”anu, un CPU bija liela slodze. Failu lasÄ«Å”anas problÄmu var atrisinÄt, piekļūstot tiem tieÅ”i no Ä·ieÄ£eļa, taÄu tas ne vienmÄr ir piemÄrojams un parasti ir nepareizi.
- Ceph nepatika pÄrmÄrÄ«gÄ sarežģītÄ«ba, kas var kaitÄt projektiem ar 2-4 serveriem, it Ä«paÅ”i, ja projekts pÄc tam tiek uzturÄts. Atkal ir nopietni veiktspÄjas ierobežojumi, kas liek mums veidot atseviŔķas krÄtuves kopas, piemÄram, glusterfiem.
- Viena NFS servera izmantoÅ”ana koplietoÅ”anas krÄtuves ievieÅ”anai rada jautÄjumus par kļūdu toleranci.
- s3 ir lielisks populÄrs risinÄjums noteiktam uzdevumu lokam, taÄu tÄ nav failu sistÄma, kas saÅ”aurina tÄs darbÄ«bas jomu.
- lSync. Ja mÄs jau esam sÄkuÅ”i runÄt par "ne-failu sistÄmÄm", tad ir vÄrts apskatÄ«t Å”o populÄro risinÄjumu. Tas ne tikai nav piemÄrots divvirzienu apmaiÅai (bet, ja jÅ«s patieÅ”Äm vÄlaties, tad varat), tas arÄ« nedarbojas stabili uz lielu failu skaitu. Jauks papildinÄjums visam ir tas, ka tas ir ar vienu vÄ«tni. Iemesls ir programmas arhitektÅ«rÄ: tÄ izmanto inotify, lai uzraudzÄ«tu darba objektus, kurus tÄ pieŔķir startÄÅ”anas un atkÄrtotas skenÄÅ”anas laikÄ. rsync tiek izmantots kÄ pÄrsÅ«tÄ«Å”anas datu nesÄjs.
ApmÄcÄ«ba: kÄ izvietot koplietojamo krÄtuvi, pamatojoties uz drbd+ocfs2
Viens no mums ÄrtÄkajiem risinÄjumiem bija saite ocfs2+drbd. Tagad mÄs jums pateiksim, kÄ varat Ätri izvietot koplietojamo krÄtuvi diviem serveriem, pamatojoties uz risinÄjumu datu bÄzi. Bet vispirms nedaudz par sastÄvdaļÄm:
DRBD - uzglabÄÅ”anas sistÄma no standarta Linux izplatÄ«Å”anas, kas ļauj replicÄt datus starp serveriem blokos. Galvenais pielietojums ir izveidot kļūdu izturÄ«gu krÄtuvi.
OCFS2 - failu sistÄma, kas nodroÅ”ina vienas krÄtuves kopÄ«gu izmantoÅ”anu vairÄkÄm sistÄmÄm. Iekļauts Linux izplatÄ«Å”anÄ un ir kodola modulis un lietotÄja telpas rÄ«ki darbam ar FS. OCFS2 var izmantot ne tikai DRBD, bet arÄ« iSCSI ar vairÄkiem savienojumiem. MÅ«su piemÄrÄ mÄs izmantojam DRBD.
Visas darbÄ«bas tiek veiktas ubuntu serverÄ« 18.04 minimÄlÄ konfigurÄcijÄ.
1. darbÄ«ba. KonfigurÄjiet DRBD:
FailÄ /etc/drbd.d/drbd0.res mÄs aprakstÄm mÅ«su virtuÄlo bloku ierÄ«ci /dev/drbd0:
resource drbd0 {
syncer { rate 1000M; }
net {
allow-two-primaries;
after-sb-0pri discard-zero-changes;
after-sb-1pri discard-secondary;
after-sb-2pri disconnect;
}
startup { become-primary-on both; }
on drbd1 {
meta-disk internal;
device /dev/drbd0;
disk /dev/vdb1;
address 10.10.10.192:7789;
}
on drbd2 {
meta-disk internal;
device /dev/drbd0;
disk /dev/vdb1;
address 10.10.10.193:7789;
}
}
iekÅ”Äjais metadisks ā izmantot tÄs paÅ”as blokierÄ«ces, lai saglabÄtu metadatus
ierÄ«ce /dev/drbd0 ā izmantojiet /dev/drbd0 kÄ ceļu uz drbd sÄjumu.
disks /dev/vdb1 - izmantojiet /dev/vdb1
syncer { Ätrums 1000M; } ā izmantojiet gigabitu kanÄla joslas platumu
atļaut-divas primÄrÄs - svarÄ«ga opcija, kas ļauj pieÅemt izmaiÅas divos primÄrajos serveros
after-sb-0pri, after-sb-1pri, after-sb-2pri ā opcijas, kas ir atbildÄ«gas par mezgla darbÄ«bÄm, kad tiek atklÄts sadalÄ«tÄs smadzenes. SÄ«kÄka informÄcija atrodama dokumentÄcijÄ.
kļūt par primÄro abos ā iestata abus mezglus kÄ primÄros.
MÅ«su gadÄ«jumÄ mums ir divas absolÅ«ti identiskas virtuÄlÄs maŔīnas ar speciÄlu virtuÄlo tÄ«klu ar 10 gigabitu caurlaidspÄju.
MÅ«su piemÄrÄ divu klasteru mezglu tÄ«kla nosaukumi ir drbd1 un drbd2. Lai darbotos pareizi, mapÄ /etc/hosts ir jÄsakrÄ«t resursdatoru nosaukumi un IP adreses.
10.10.10.192 drbd1
10.10.10.193 drbd2
2. darbība. Iestatiet mezglus:
Abos serveros mÄs darbinÄm:
drbdadm create-md drbd0
modprobe drbd
drbdadm up drbd0
cat /proc/drbd
MÄs iegÅ«stam sekojoÅ”o:
Varat sÄkt sinhronizÄciju. PirmajÄ mezglÄ jums jÄizpilda:
drbdadm primary --force drbd0
Apskatīsim statusu:
cat /proc/drbd
Lieliski, sinhronizÄcija ir sÄkusies. PagaidÄm lÄ«dz beigÄm un redzam attÄlu:
3. darbÄ«ba. SÄciet sinhronizÄciju otrajÄ mezglÄ:
drbdadm primary --force drbd0
MÄs iegÅ«stam sekojoÅ”o:
Tagad mÄs varam rakstÄ«t uz drbd no diviem serveriem.
4. darbÄ«ba. InstalÄjiet un konfigurÄjiet ocfs2.
MÄs izmantosim diezgan triviÄlu konfigurÄciju:
cluster:
node_count = 2
name = ocfs2cluster
node:
number = 1
cluster = ocfs2cluster
ip_port = 7777
ip_address = 10.10.10.192
name = drbd1
node:
number = 2
cluster = ocfs2cluster
ip_port = 7777
ip_address = 10.10.10.193
name = drbd2
Tas ir jÄieraksta /etc/ocfs2/cluster.conf abos mezglos.
MÄs izveidojam FS drbd0 jebkurÄ mezglÄ:
mkfs.ocfs2 -L "testVol" /dev/drbd0
Å eit mÄs izveidojÄm failu sistÄmu ar etiÄ·eti testVol uz drbd0, izmantojot noklusÄjuma parametrus.
MapÄ /etc/default/o2cb jums jÄiestata (kÄ mÅ«su konfigurÄcijas failÄ)
O2CB_ENABLED=true
O2CB_BOOTCLUSTER=ocfs2cluster
un izpildiet katrÄ mezglÄ:
o2cb register-cluster ocfs2cluster
PÄc tam mÄs ieslÄdzam un pievienojam visas automÄtiskai palaiÅ”anai nepiecieÅ”amÄs vienÄ«bas:
systemctl enable drbd o2cb ocfs2
systemctl start drbd o2cb ocfs2
Daži no tiem jau darbosies iestatÄ«Å”anas procesa laikÄ.
5. darbÄ«ba. Pievienojiet stiprinÄjuma punktus fstab abos mezglos:
/dev/drbd0 /media/shared ocfs2 defaults,noauto,heartbeat=local 0 0
Katalogs /media/kopÄ«gots tas ir jÄizveido iepriekÅ”.
Å eit mÄs izmantojam opcijas noauto, kas nozÄ«mÄ, ka fails netiks montÄts startÄÅ”anas laikÄ (es dodu priekÅ”roku tÄ«kla failu pievienoÅ”anai, izmantojot systemd) un heartbeat=local, kas nozÄ«mÄ sirdsdarbÄ«bas pakalpojuma izmantoÅ”anu katrÄ mezglÄ. Ir arÄ« globÄla sirdsdarbÄ«ba, kas ir vairÄk piemÄrota lielÄm kopÄm.
TÄlÄk jÅ«s varat uzstÄdÄ«t /media/kopÄ«gots un pÄrbaudiet satura sinhronizÄciju.
Gatavs! TÄ rezultÄtÄ mÄs iegÅ«stam vairÄk vai mazÄk kļūdu izturÄ«gu krÄtuvi ar mÄrogojamÄ«bu un pienÄcÄ«gu veiktspÄju.
Avots: www.habr.com