Klasteru krātuve maziem tīmekļa klasteriem, kuru pamatā ir drbd+ocfs2

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

Klasteru krātuve maziem tīmekļa klasteriem, kuru pamatā ir drbd+ocfs2

modprobe drbd
drbdadm up drbd0
cat /proc/drbd

Mēs iegÅ«stam sekojoÅ”o:

Klasteru krātuve maziem tīmekļa klasteriem, kuru pamatā ir drbd+ocfs2

Varat sākt sinhronizāciju. Pirmajā mezglā jums jāizpilda:

drbdadm primary --force drbd0

Apskatīsim statusu:

cat /proc/drbd

Klasteru krātuve maziem tīmekļa klasteriem, kuru pamatā ir drbd+ocfs2

Lieliski, sinhronizācija ir sākusies. Pagaidām līdz beigām un redzam attēlu:

Klasteru krātuve maziem tīmekļa klasteriem, kuru pamatā ir drbd+ocfs2

3. darbÄ«ba. Sāciet sinhronizāciju otrajā mezglā:

drbdadm primary --force drbd0

Mēs iegÅ«stam sekojoÅ”o:

Klasteru krātuve maziem tīmekļa klasteriem, kuru pamatā ir drbd+ocfs2

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.

Klasteru krātuve maziem tīmekļa klasteriem, kuru pamatā ir drbd+ocfs2

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

Pievieno komentāru