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 nebija iecienīts tā pārmērīgās sarežģītības dēļ, kas var būt kaitīgs projektos ar 2–4 serveri, it īpaši, ja projekts pēc tam tiek uzturēts. Atkal pastāv ievērojami veiktspējas ierobežojumi, kas liek izveidot atsevišķus krātuves klasterus, tāpat kā ar glusterfs.
- 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+drbdTagad mēs jums pastāstīsim, kā jūs varat ātri izvietot koplietojamu krātuvi diviem lietotājiem serveriem pamatojoties uz šiem risinājumiem. Bet vispirms nedaudz par komponentiem:
DRBD - uzglabāšanas sistēma no standarta piegādes Linux, kas ļauj veikt uz blokiem balstītu datu replikāciju starp serveriem. Tās galvenais pielietojums ir kļūdu tolerantu krātuvju izveide.
OCFS2 — failu sistēma, kas ļauj vairākām sistēmām koplietot vienu un to pašu krātuvi. Iekļauts izplatījumā. Linux Tas sastāv no kodola moduļa un lietotāja telpas rīkiem darbam ar failu sistēmām. 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 serveris 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 drbd22. darbība. Iestatiet mezglus:
Abos serveros mēs darbinām:
drbdadm create-md drbd0 
modprobe drbd
drbdadm up drbd0
cat /proc/drbdMēs iegūstam sekojošo:

Varat sākt sinhronizāciju. Pirmajā mezglā jums jāizpilda:
drbdadm primary --force drbd0Apskatī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 ocfs2clusterPē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 ocfs2Daž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 0Katalogs /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
