Storage i klasterit për web-klastere të vogla të bazuar në drbd+ocfs2

ÇfarĂ« do tĂ« flasim:
Si të shpërndajmë shpejt një magazinë të përbashkët për dy serverë mbi zgjidhjet drbd+ocfs2.

Kujt do t'i shërbejë kjo:
Ky tutorial do të jetë i dobishëm për administratorët e sistemeve dhe për të gjithë ata që kërkojnë një mënyrë për të implementuar një magazinë ose dëshirojnë të provojnë zgjidhjen.

Cilat zgjidhje ne i hodhëm poshtë dhe përse

Shpesh ne pĂ«rballĂ« me situatĂ«n kur duhet tĂ« implementojmĂ« njĂ« magazinĂ« tĂ« pĂ«rbashkĂ«t nĂ« njĂ« web-klustĂ«r tĂ« vogĂ«l me performancĂ« tĂ« mirĂ« nĂ« leximin - shkruajtjen. Ne kemi provuar konfigurime tĂ« ndryshme pĂ«r tĂ« implementuar magazinĂ«n pĂ«r projektet tona, por pak gjĂ«ra ishin nĂ« gjendje tĂ« plotĂ«sonin menjĂ«herĂ« disa tregues. Tani do t’jua tregojmĂ« pse.

  • Glusterfs nuk na pĂ«rmbushi nĂ« performancĂ« nĂ« lexim dhe shkruarje, pati probleme me leximin e njĂ« numri tĂ« madh skedareve si dhe kishte ngarkesĂ« tĂ« lartĂ« nĂ« CPU. Problemi me leximin e skedarĂ«ve mund tĂ« zgjidhet duke i kĂ«rkuar ato direkt nĂ« brick-e, por kjo nuk Ă«shtĂ« gjithmonĂ« e aplikueshme dhe pĂ«rgjithĂ«sisht Ă«shtĂ« e gabuar.

  • Ceph nuk na pĂ«lqeu pĂ«r kompleksitetin e tepruar, i cili mund tĂ« jetĂ« i dĂ«mshĂ«m nĂ« projektet me 2-4 serverĂ«, sidomos nĂ«se projekti mĂ« pas administronhet. PĂ«rsĂ«ri, ka kufizime serioze nĂ« performancĂ«, qĂ« detyrojnĂ« ndĂ«rtimin e klastereve tĂ« veçanta tĂ« magazinĂ«s, ashtu si me glusterfs.

  • PĂ«rdorimi i njĂ« serveri nfs pĂ«r tĂ« implementuar njĂ« magazinĂ« tĂ« pĂ«rbashkĂ«t i jep pyetje nĂ« lidhje me qĂ«ndrueshmĂ«rinĂ«.

  • s3 Ă«shtĂ« njĂ« zgjidhje e shkĂ«lqyer dhe e njohur pĂ«r njĂ« rang tĂ« caktuar detyrash, por gjithashtu nuk Ă«shtĂ« njĂ« sistem skedarĂ«sh, qĂ« e ngushton fushĂ«n e aplikimit.

  • lsyncd. NĂ«se kemi filluar tĂ« flasim pĂ«r "jo-sistemet e skedarĂ«ve", Ă«shtĂ« e arsyeshme tĂ« kalojmĂ« edicion nĂ« kĂ«tĂ« zgjidhje tĂ« njohur. Jo vetĂ«m qĂ« nuk Ă«shtĂ« e pĂ«rshtatshme pĂ«r shkĂ«mbim dypĂ«rshellesh (por nĂ«se dĂ«shirohet shumĂ«, mund tĂ« bĂ«het), por gjithashtu nuk punon stabilisht me njĂ« numĂ«r tĂ« madh skedarĂ«sh. NjĂ« shtesĂ« e kĂ«ndshme Ă«shtĂ« se ajo Ă«shtĂ« njĂ«pĂ«rçendrore. Arsyeja Ă«shtĂ« nĂ« arkitekturĂ«n e programit: ajo pĂ«rdor inotify pĂ«r tĂ« monitoruar objektet e punĂ«s, qĂ« vendosen gjatĂ« nisjes dhe gjatĂ« ripĂ«rgatitjes. Si mjet transferimi pĂ«rdoret rsync.

Tutorial: si të implementojmë një magazinë të përbashkët mbi drbd+ocfs2

Një nga zgjidhjet më të përshtatshme për ne ishte lidhja ocfs2+drbd. Tani do t'ju tregojmë si mund të shpërndajmë shpejt një magazinë të përbashkët për dy serverësh në bazën e zgjidhjeve. Por fillimisht disa fjalë për komponentët:

DRBD — njĂ« sistem ruajtjeje i cili vjen standard me Linux, i cili lejon replikimin e tĂ« dhĂ«nave midis serverĂ«ve me blloqe. PĂ«rdorimi kryesor Ă«shtĂ« ndĂ«rtimi i ruajtjeve tĂ« qĂ«ndrueshme.

OCFS2 — njĂ« sistem skedarĂ«sh qĂ« siguron pĂ«rdorimin e pĂ«rbashkĂ«t tĂ« tĂ« njĂ«jtit ruajtje nga disa sisteme. Ai Ă«shtĂ« pjesĂ« e paketĂ«s Linux dhe pĂ«rbĂ«het nga njĂ« modul bĂ«rthamĂ« dhe mjete pĂ«r pĂ«rdoruesit pĂ«r tĂ« punuar me FS. OCFS2 mund tĂ« pĂ«rdoret jo vetĂ«m mbi DRBD, por edhe mbi iSCSI me lidhje tĂ« shumta. NĂ« shembullin tonĂ« ne pĂ«rdorim DRBD.

Të gjitha veprimet kryhen në serverin ubuntu 18.04 në konfigurimin minimal.

Hapi 1. Konfigurojmë DRBD:

Në skedarin /etc/drbd.d/drbd0.res përshkruajmë pajisjen tonë virtuale të bllokut /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;
}
}

meta-disk internal — pĂ«rdorimi i tĂ« njĂ«jtit bllok pĂ«r ruajtjen e tĂ« dhĂ«nave tĂ« metadata
device /dev/drbd0 — pĂ«rdorimi i /dev/drbd0 si rrugĂ« nĂ« drbd.
disk /dev/vdb1 — pĂ«rdorimi i /dev/vdb1
syncer { rate 1000M; } — pĂ«rdorimi i gjigabit tĂ« kapacitetit tĂ« kanaleve
allow-two-primaries — njĂ« opsion i rĂ«ndĂ«sishĂ«m qĂ« lejon pranimin e ndryshimeve nĂ« dy servera kryesorĂ«
after-sb-0pri, after-sb-1pri, after-sb-2pri — opsione qĂ« pĂ«rcaktojnĂ« veprimet e nyjĂ«s kur zbulohet splitbrain. Mund tĂ« shihni mĂ« shumĂ« nĂ« dokumentacion.
become-primary-on both — vendos tĂ« dy nyjat nĂ« kryesor.

Në rastin tonë kemi dy VM të njëjta, me një rrjet virtual me kapacitet prej 10 gigabit.

Në shembullin tonë emrat rrjetësorë të dy nyjave të grupit janë drbd1 dhe drbd2. Për të funksionuar siç duhet, duhet të maponi emrat dhe adresat IP të nyjave në /etc/hosts.

10.10.10.192 drbd1
10.10.10.193 drbd2

Hapi 2. Konfigurojmë nyjat:

Në të dy serverët kryejmë:

drbdadm create-md drbd0

Storage i klasterit për web-klastere të vogla të bazuar në drbd+ocfs2

modprobe drbd
drbdadm up drbd0
cat /proc/drbd

Kemi rezultatet si më poshtë:

Storage i klasterit për web-klastere të vogla të bazuar në drbd+ocfs2

Mund të filloni sinkronizimin. Në nyjën e parë, duhet të ekzekutoni:

drbdadm primary --force drbd0

Shikoni statusin:

cat /proc/drbd

Storage i klasterit për web-klastere të vogla të bazuar në drbd+ocfs2

Shkëlqyeshëm, filloi sinkronizimi. Presim që të përfundojë dhe shohim pamjen:

Storage i klasterit për web-klastere të vogla të bazuar në drbd+ocfs2

Hapi 3. Fillojmë sinkronizimin në nyjën e dytë:

drbdadm primary --force drbd0

Kemi rezultatet si më poshtë:

Storage i klasterit për web-klastere të vogla të bazuar në drbd+ocfs2

Tani mund të shkruajmë në drbd nga të dy serverët.

Hapi 4. Instalimi dhe konfigurimi i ocfs2.

Ne do të përdorim një konfigurim mjaft triviale:

kluster:
     numri_i_nodit = 2
     emri = ocfs2cluster

nodi:
     numri = 1
     kluster = ocfs2cluster
     ip_port = 7777
     ip_address = 10.10.10.192
     emri = drbd1

nodi:
     numri = 2
     kluster = ocfs2cluster
     ip_port = 7777
     ip_address = 10.10.10.193
     emri = drbd2

Kjo duhet të shkruhet në /etc/ocfs2/cluster.conf në të dy nodet.

Krijojmë FS në drbd0 në çdo nod:

mkfs.ocfs2 -L "testVol" /dev/drbd0

Këtu krijuam FS me etiketën testVol në drbd0, duke përdorur parametrat e parazgjedhur.

Storage i klasterit për web-klastere të vogla të bazuar në drbd+ocfs2

Në /etc/default/o2cb duhet të vendoset (si në skedarin tonë të konfigurimit)

O2CB_ENABLED=true 
O2CB_BOOTCLUSTER=ocfs2cluster 

dhe të ekzekutohet në çdo nod:

o2cb register-cluster ocfs2cluster

Pas kësaj aktivizojmë dhe shtojmë në nisjen automatike të gjithë unit-et që na duhen:

systemctl enable drbd o2cb ocfs2
systemctl start drbd o2cb ocfs2

Pjesa më e madhe e kësaj do të jetë e aktivizuar gjatë procesit të konfigurimit.

Hapi 5. Shtojmë pikat e montimit në fstab në të dy nodet:

/dev/drbd0 /media/shared ocfs2 defaults,noauto,heartbeat=local 0 0

Direktorinë /media/shared duhet të krijohet më parë.

Këtu përdorim opsionet noauto, që do të thotë se FS nuk do të montojë në nisje (preferoj të montojë FS të rrjetit përmes systemd) dhe heartbeat=local, që do të thotë përdorimi i shërbimit heartbeat në çdo nod. Ekziston gjithashtu global heartbeat, i cili është më i përshtatshëm për klastere të mëdha.

Më pas mund të montohet /media/shared dhe të verifikohet sinkronizimi i përmbajtjeve.

Gati! Si rezultat, ne marrim një ruajtje më të qëndrueshme me mundësi për shkallëzim dhe një performancë të konsiderueshme.

Burimi: habr.com

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster