Klastri salvestus vÀikeste veebi klastri jaoks drbd+ocfs2 baasil

Mille kohta me rÀÀgime:
Kuidas kiiresti seadistada ĂŒhine salvestus kahe serveri jaoks drbd+ocfs2 lahenduste baasil.

Kellele see on kasulik:
Juhend on kasulik sĂŒsteemiadministraatoritele ja kĂ”igile, kes valivad salvestuslahenduse rakendamist vĂ”i soovivad lahendust proovida.

Millistest lahendustest me loobusime ja miks

Sageli seisame silmitsi olukorraga, kus peame seadistama vĂ€ikese veebi klastri ĂŒhise salvestuse, mis tagab hea lugemise ja kirjutamise jĂ”udluse. Oleme proovinud erinevaid ĂŒhise salvestuse rakendusi, kuid vĂ€he mis suudab meid rahuldada mitmete nĂ€itajate osas. NĂŒĂŒd rÀÀgime, miks.

  • Glusterfs ei rahuldanud meid lugemise ja kirjutamise jĂ”udlusega, tekkisid probleemid suure hulga failide samaaegse lugemisega, samuti oli kĂ”rge koormus CPU-le. Failide lugemise probleemi oleks saanud lahendada, pöördudes otse brick'ide poole, kuid see ei ole alati rakendatav ja on ĂŒldiselt vale.

  • Ceph ei meeldinud meile liialt keerulise ĂŒlesehituse tĂ”ttu, mis vĂ”ib olla kahjulik 2-4 projekti korral, serveritega, eriti kui projekti haldab hiljem keegi teine. Samuti on tĂ”sised jĂ”udluse piirangud, mis sunnivad looma eraldi salvestusklastreid, nagu ka glusterfsi korral.

  • Ühe nfs serveri kasutamine ĂŒhise salvestuse rakendamiseks tekitab kĂŒsimusi Ă€rikatkestustaluvuse osas.

  • s3 - suurepĂ€rane ja populaarne lahendus teatud ĂŒlesannete jaoks, kuid see ei ole ka failisĂŒsteem, mis kitsendab rakenduse valdkonda.

  • lsyncd. Kui oleme juba rÀÀkinud "mitte-failisĂŒsteemidest", siis tasub vaadata ka sellele populaarsele lahendusele. Esiteks, see ei sobi kahepoolseks vahetuseks (kui tĂ”eliselt tahate, siis saab), kuid see ei tööta ka stabiilselt suure hulga failide korral. Lisaboonuseks on, et see on ĂŒhepĂ”hine. PĂ”hjus on programmi arhitektuuris: see kasutab inotify objekti töö jĂ€lgimiseks, mida seotakse kĂ€ivitamisel ja uuesti skaneerimisel. Ülekandevahendina kasutatakse rsync'i.

Juhend: kuidas seadistada ĂŒhine salvestus drbd+ocfs2 baasil

Üheks meie jaoks mugavaks lahenduseks osutus kombinatsioon ocfs2+drbd. NĂŒĂŒd rÀÀgime, kuidas kiiresti seadistada ĂŒhine salvestusruum kahe jaoks serverid andmete lahenduste alusel. Aga kĂ”igepealt natuke komponente:

DRBD — Linuxi standardsed salvestussĂŒsteem, mis vĂ”imaldab replikeerida andmeid serverite vahel plokkidena. Peamine rakendus on kĂ”rge saadavuse salvestuste loomine.

OCFS2 — failisĂŒsteem, mis toetab sama salvestuse jagatud kasutamist mitme sĂŒsteemi vahel. Sisaldub Linuxi tarnes ja koosneb tuumamoodulist ja userspace tööriistadest failisĂŒsteemi haldamiseks. OCFS2-d saab kasutada mitte ainult DRBD peal, vaid ka mitmeĂŒhendusega iSCSI peal. Meie nĂ€ites kasutame DRBD-d.

KÔiki toiminguid teostatakse ubuntu server 18.04 minimaalsetes seadistustes.

Samm 1. Seame DRBD-d:

Failis /etc/drbd.d/drbd0.res kirjeldame meie virtuaalset plokkseadet /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 — sama plokkseade kasutatakse metainformatsiooni salvestamiseks
device /dev/drbd0 — kasutame /dev/drbd0 kui teed DRBD-le.
disk /dev/vdb1 — kasutame /dev/vdb1
syncer { rate 1000M; } — kasutame gigabiti kanali lĂ€bilaskvust
allow-two-primaries — oluline valik, mis lubab muutuste vastuvĂ”tmist kahel peamisel serveril
after-sb-0pri, after-sb-1pri, after-sb-2pri — valikud, mis mÀÀravad sĂ”lme tegevused splitbrain'i tuvastamise korral. Lisainfot leiate dokumentatsioonist.
become-primary-on both — seab mĂ”lemad sĂ”lmed peamiseks.

Meie puhul on meil kaks tĂ€pselt identset virtuaalmasinat, millel on eraldatud virtuaalne 10 gigabiti ĂŒhenduse vĂ”ime.

Meie nĂ€ites on klastris kahe sĂ”lme vĂ”rgunimed drbd1 ja drbd2. Õige töö tagamiseks tuleb /etc/hosts failis siduda nimed ja IP-aadressid.

10.10.10.192 drbd1
10.10.10.193 drbd2

Samm 2. Seame sÔlmed:

MÔlemal serveril rakendame:

drbdadm create-md drbd0

Klastri salvestus vÀikeste veebi klastri jaoks drbd+ocfs2 baasil

modprobe drbd
drbdadm up drbd0
cat /proc/drbd

Saame jÀrgmise:

Klastri salvestus vÀikeste veebi klastri jaoks drbd+ocfs2 baasil

Saame alustada sĂŒnkroniseerimist. Esimesel sĂ”lmel tuleb teha:

drbdadm primary --force drbd0

Kontrollime olekut:

cat /proc/drbd

Klastri salvestus vÀikeste veebi klastri jaoks drbd+ocfs2 baasil

SuurepĂ€rane, sĂŒnkroniseerimine on alanud. Ootame lĂ”petamist ja nĂ€eme pilti:

Klastri salvestus vÀikeste veebi klastri jaoks drbd+ocfs2 baasil

Samm 3. KĂ€ivitame sĂŒnkroonimise teisel node'il:

drbdadm primary --force drbd0

Saame jÀrgmise:

Klastri salvestus vÀikeste veebi klastri jaoks drbd+ocfs2 baasil

NĂŒĂŒd saame kirjutada drbd-sse kahest serverist.

Samm 4. ocfs2 installimine ja seadistamine.

Kasutame piisavalt triviaalset konfiguratsiooni:

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

See tuleb salvestada /etc/ocfs2/cluster.conf mÔlemal node'il.

Loome FSi drbd0-l mis tahes node'il:

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

Siin loome FS-i testVol-i sildiga drbd0-l, kasutades vaikeseadeid.

Klastri salvestus vÀikeste veebi klastri jaoks drbd+ocfs2 baasil

Failis /etc/default/o2cb tuleb seada (nagu meie konfiguratsioonifailis)

O2CB_ENABLED=true 
O2CB_BOOTCLUSTER=ocfs2cluster 

ja teostada igas node'is:

o2cb register-cluster ocfs2cluster

SeejĂ€rel lĂŒlitame sisse ja lisame kĂ€ivitamise automaatsetesse teenustesse kĂ”ik vajalikud unit'id:

systemctl enable drbd o2cb ocfs2
systemctl start drbd o2cb ocfs2

Osa sellest kÀivitatakse juba seadistamise kÀigus.

Samm 5. Lisame mount-punktid fstab'i mÔlemal node'il:

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

Kataloog /media/shared peab olema eelnevalt loodud.

Siin kasutame valikuid noauto, mis tÀhendab, et FS ei monteerita kÀivitamisel (eelistan mountida vÔrgu FS-id systemd kaudu) ja heartbeat=local, mis tÀhendab, et igas node'is on heartbeat teenus. On olemas ka global heartbeat, mis sobib rohkem suurtele klasteritele.

SeejĂ€rel saab monteerida /media/shared ja kontrollida sisu sĂŒnkroniseerimist.

Valmis! Tulemuseks on enam-vÀhem rikkevastupidav salvestuslahendus, millel on vÔimalus skaleerida ja korralik jÔudlus.

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster