Ruajtje në klaster për klastere të vogla web bazuar në drbd+ocfs2

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

Kë është e dobishme:
Ky tutorial do të jetë i dobishëm për administratorët e sistemeve dhe për të gjithë ata që po eksplorojnë mënyra për të realizuar një depot ose duan të provojnë një zgjidhje.

Cilat zgjidhje ne i heqëm dorë dhe pse

Shpesh hasim situata kur duhet të realizojmë një depot të përbashkët në një web-kluster të vogël me performancë të lartë në lexim-shkrim. Kemi provuar opsione të ndryshme për të realizuar depot për projektet tona, por shumë pak ishin të afta të na kënaqnin menjëherë në disa parametra. Tani do t'ju tregojmë arsyen.

  • Glusterfs nuk na kĂ«naqte me performancĂ«n nĂ« lexim dhe shkrim, kishte probleme me leximin e njĂ« numri tĂ« madh skedarĂ«sh bashkĂ«, ndodhte njĂ« ngarkesĂ« e lartĂ« nĂ« CPU. Problemi me leximin e skedarĂ«ve mund tĂ« zgjidhej duke iu drejtuar atyre direkt nĂ« brick, por kjo nuk Ă«shtĂ« gjithmonĂ« e aplikueshme dhe nĂ« tĂ«rĂ«si e gabuar.

  • Ceph nuk na pĂ«lqeu pĂ«r kompleksitetin e tij tĂ« tepruar, qĂ« mund tĂ« jetĂ« ndaluese nĂ« projekte me 2-4 serverĂ«ve, sidomos nĂ«se projekti pastaj administrohet. PĂ«rsĂ«ri, ka kufizime tĂ« rĂ«nda nĂ« performancĂ«, duke e detyruar ndĂ«rtimin e grupeve tĂ« veçanta tĂ« magazinĂ«s, ashtu si me glusterfs.

  • PĂ«rdorimi i njĂ« serveri nfs pĂ«r realizimin e depot tĂ« pĂ«rbashkĂ«t ngre pyetje nĂ« lidhje me qĂ«ndrueshmĂ«rinĂ«.

  • s3 — njĂ« zgjidhje e shkĂ«lqyer dhe e njohur pĂ«r disa lloje detyrash, por kjo nuk Ă«shtĂ« njĂ« sistem skedari, qĂ« e ngushton fushĂ«n e aplikimit.

  • lsyncd. NĂ«se tashmĂ« filluam tĂ« flasim pĂ«r "nĂ«-nĂ« e skedarĂ«ve", Ă«shtĂ« e rĂ«ndĂ«sishme tĂ« kalojmĂ« dhe nĂ« kĂ«tĂ« zgjidhje popullore. Jo vetĂ«m qĂ« nuk Ă«shtĂ« e pĂ«rshtatshme pĂ«r shkĂ«mbim nĂ« tĂ« dy drejtimet (por nĂ«se dĂ«shiron shumĂ«, mund tĂ« bĂ«het), ashtu si nuk punon stabile nĂ« njĂ« numĂ«r tĂ« madh skedarĂ«sh. NjĂ« shtesĂ« e kĂ«ndshme do tĂ« ishte se ajo Ă«shtĂ« njĂ« proces tĂ« vetĂ«m. Arsyeja Ă«shtĂ« nĂ« arkitekturĂ«n e programit: ajo pĂ«rdor inotify pĂ«r tĂ« mbikĂ«qyrur objektet e punĂ«s, tĂ« cilat i ngarkon gjatĂ« fillimit dhe gjatĂ« rishikimit. PĂ«r tĂ« transferuar pĂ«rdorim rsync.

Tutorial: si të shpërndajmë një depot të përbashkët me drbd+ocfs2

Një nga zgjidhjet më të përshtatshme për ne ishte lidhja ocfs2+drbd. Tani do t'ju tregojmë se si mund të shpërndajmë shpejt një depot të përbashkët për dy servera me bazë të zgjidhjeve. Por përpara se të fillojmë, pak fjalë për komponentët:

DRBD — njĂ« sistem depozitimi nga shpĂ«rndarja standarde Linux, i cili lejon replikimin e tĂ« dhĂ«nave midis serverĂ«ve dhe grupeve. PĂ«rdorimi kryesor i tij Ă«shtĂ« pĂ«r ndĂ«rtimin e depozitave tĂ« qĂ«ndrueshme.

OCFS2 — njĂ« sistem skedari qĂ« siguron pĂ«rdorimin e pĂ«rbashkĂ«t tĂ« tĂ« njĂ«jtĂ«s depo nga disa sisteme. Ai Ă«shtĂ« pjesĂ« e shpĂ«rndarjes Linux dhe pĂ«rbĂ«n njĂ« modul bĂ«rthamĂ« dhe instrumente tĂ« 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ë gjithë veprimet bëhen në ubuntu server 18.04 në konfigurim 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Ă«jtave pajisje blloku pĂ«r ruajtjen e tĂ« dhĂ«nave tĂ« metadatat
device /dev/drbd0 — pĂ«rdorimi i /dev/drbd0 si rrugĂ« pĂ«r drbd.
disk /dev/vdb1 — pĂ«rdorimi i /dev/vdb1
syncer { rate 1000M; } — pĂ«rdorimi i kanaleve tĂ« gigabit
allow-two-primaries — njĂ« opsion i rĂ«ndĂ«sishĂ«m qĂ« lejon pranimin e ndryshimeve nĂ« dy serverĂ« primarĂ«
after-sb-0pri, after-sb-1pri, after-sb-2pri — opsione qĂ« pĂ«rcaktojnĂ« veprimet e nodit kur zbulohet njĂ« splitbrain. MĂ« shumĂ« informacion mund tĂ« gjendet nĂ« dokumentacion.
become-primary-on both — vendos tĂ« dy nodet nĂ« primar.

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

Në shembullin tonë, emrat e rrjetit të dy nodave të klasit janë drbd1 dhe drbd2. Për funksionimin e saktë, është e nevojshme të lidhni emrat dhe adresat IP në /etc/hosts.

10.10.10.192 drbd1
10.10.10.193 drbd2

Hapi 2. Konfigurojmë nodet:

Në të dy serverët ekzekutojmë:

drbdadm create-md drbd0

Ruajtje në klaster për klastere të vogla web bazuar në drbd+ocfs2

modprobe drbd
drbdadm up drbd0
cat /proc/drbd

Marrim këtë:

Ruajtje në klaster për klastere të vogla web bazuar në drbd+ocfs2

Tani mund të fillojmë sinkronizimin. Në nodën e parë duhet të ekzekutojmë:

drbdadm primary --force drbd0

Shikojmë statusin:

cat /proc/drbd

Ruajtje në klaster për klastere të vogla web bazuar në drbd+ocfs2

Shumë mirë, filloi sinkronizimi. Po presim përfundimin dhe shohim imazhin:

Ruajtje në klaster për klastere të vogla web bazuar në drbd+ocfs2

Hapi 3. Nisim sinkronizimin në nodën e dytë:

drbdadm primary --force drbd0

Marrim këtë:

Ruajtje në klaster për klastere të vogla web bazuar në drbd+ocfs2

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

Hapi 4. Instalimi dhe konfigurimi i ocfs2.

Do të përdorim një konfigurim mjaft të thjeshtë:

klaster:
     numri_i_nodave = 2
     emri = ocfs2cluster

nod:
     numri = 1
     klaster = ocfs2cluster
     ip_port = 7777
     adresa_ip = 10.10.10.192
     emri = drbd1

nod:
     numri = 2
     klaster = ocfs2cluster
     ip_port = 7777
     adresa_ip = 10.10.10.193
     emri = drbd2

Duhet ta regjistrojmë në /etc/ocfs2/cluster.conf në të dy nodet.

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

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

Këtu krijuam FSH me etiketën testVol në drbd0, duke përdorur parametërat e paracaktuar.

Ruajtje në klaster për klastere të vogla web bazuar në drbd+ocfs2

Në /etc/default/o2cb duhet vendosur (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ë autostart të gjitha njësitë e nevojshme:

systemctl enable drbd o2cb ocfs2
systemctl start drbd o2cb ocfs2

Pjesa e kësaj do të ishte tashmë e aktivizuar gjatë konfigurimit.

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

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

Direktoria /media/shared duhet të jetë krijuar më parë.

Këtu përdorim opsionet noauto, që do të thotë se FSH nuk do të montohet gjatë nisjes (preferoj të montohem sisteme rrjeti përmes systemd) dhe heartbeat=local, që do të thotë përdorimin e shërbimit heartbeat në çdo nod. Ekziston gjithashtu heartbeat global, që është më i përshtatshëm për klastere të mëdha.

Më pas mund të montohet /media/shared dhe të kontrollohet sinkronizimi i përmbajtjes.

Gati! Në rezultat, ne kemi një storazh relativisht të besueshëm me mundësi për shkallëzim dhe performancë të mirë.

Burimi: habr.com

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