Klasterska pohrana za male web klastere zasnovana na drbd+ocfs2

O čemu ćemo pričati:
Kako brzo implementirati zajedničku pohranu za dva servera na osnovu drbd+ocfs2 rjeŔenja.

Kome će biti od koristi:
Vodič će biti koristan za sistemske administratore i sve koji odaberu metodu implementacije pohrane ili žele isprobati rjeÅ”enje.

Koje smo odluke odustali i zaŔto?

Često se susrećemo sa situacijom u kojoj moramo implementirati zajedničku pohranu s dobrim performansama čitanja i pisanja na malom web klasteru. Isprobali smo razne implementacije dijeljene pohrane za naÅ”e projekte, ali malo nas je uspjelo zadovoljiti na nekoliko načina odjednom. Sada ćemo vam reći zaÅ”to.

  • Glusterfs nam nije odgovarao performansama čitanja i pisanja, bilo je problema s istovremenim čitanjem velikog broja datoteka, bilo je veliko opterećenje CPU-a. Problem sa čitanjem datoteka mogao bi se rijeÅ”iti postavljanjem direktno u cigle, ali to nije uvijek primjenjivo i općenito je pogreÅ”no.

  • Ceph nije bio omiljen zbog svoje pretjerane složenosti, Å”to može biti Å”tetno u projektima sa 2-4 serveri, posebno ako se projekat naknadno održava. Opet, postoje značajna ograničenja performansi, Å”to prisiljava kreiranje odvojenih klastera za pohranu podataka, kao kod glusterfs-a.

  • Upotreba jednog nfs servera za implementaciju dijeljene memorije postavlja probleme u smislu tolerancije greÅ”aka.

  • s3 je odlično popularno rjeÅ”enje za određeni raspon zadataka, ali nije sistem datoteka, koji sužava opseg.

  • lsyncd. Ako smo već počeli da pričamo o ā€žsistemima bez datotekaā€œ, onda je vredno proći kroz ovo popularno reÅ”enje. Ne samo da nije pogodan za dvosmjernu razmjenu (ali ako zaista želite, možete), također ne radi stabilno na velikom broju datoteka. Lijep dodatak svemu je to Å”to je jednonit. Razlog je u arhitekturi programa: on koristi inotify za praćenje radnih objekata koje visi pri pokretanju i prilikom ponovnog skeniranja. Medij za prijenos je rsync.

Vodič: Kako implementirati zajedničku pohranu zasnovanu na drbd+ocfs2

Jedno od najpovoljnijih rjeÅ”enja za nas je bio paket ocfs2+drbdSada ćemo vam reći kako možete brzo implementirati dijeljenu pohranu za dvoje serveri na osnovu ovih rjeÅ”enja. Ali prvo, malo o komponentama:

DRBD - sistem za skladiÅ”tenje iz standardne isporuke Linux, Å”to omogućava replikaciju podataka između servera na bazi blokova. Njegova primarna primjena je u izgradnji skladiÅ”ta otpornog na greÅ”ke.

OCFS2 — sistem datoteka koji omogućava zajedničko koriÅ”tenje iste memorije od strane viÅ”e sistema. Uključeno u distribuciju Linux Sastoji se od kernel modula i korisničkih alata za rad sa datotečnim sistemima. OCFS2 se može koristiti ne samo preko DRBD-a, već i preko iSCSI-a sa viÅ”estrukim vezama. U naÅ”em primjeru koristimo DRBD.

Sve akcije se izvode na ubuntu Server 18.04 u minimalnoj konfiguraciji.

Korak 1. Postavite DRBD:

U datoteci /etc/drbd.d/drbd0.res opisujemo naÅ” virtuelni blok uređaj /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;
}
}

interni meta-disk - koristiti iste blok uređaje za pohranjivanje metapodataka
uređaj /dev/drbd0 - koristite /dev/drbd0 kao putanju do drbd volumena.
disk /dev/vdb1 - koristite /dev/vdb1
syncer { rate 1000M; } - koristite gigabitni propusni opseg
dozvoli-dva-primarna - važna opcija koja omogućava prihvatanje promjena na dva primarna servera
poslije-sb-0pri, poslije-sb-1pri, poslije-sb-2pri — opcije odgovorne za radnje čvora kada se otkrije podijeljeni mozak. ViÅ”e detalja možete pronaći u dokumentaciji.
postati-primarni-na oba - postavlja oba čvora na primarni.

U naŔem slučaju imamo dva apsolutno identična VM-a, sa namjenskom virtuelnom mrežom sa propusnim opsegom od 10 gigabita.

U naŔem primjeru, nazivi mreže dvaju čvorova klastera su drbd1 i drbd2. Za pravilan rad potrebno je uskladiti imena i ip adrese hostova u /etc/hosts.

10.10.10.192 drbd1
10.10.10.193 drbd2

Korak 2. Postavite čvorove:

Na oba servera pokrenite:

drbdadm create-md drbd0

Klasterska pohrana za male web klastere zasnovana na drbd+ocfs2

modprobe drbd
drbdadm up drbd0
cat /proc/drbd

Dobijamo sljedeće:

Klasterska pohrana za male web klastere zasnovana na drbd+ocfs2

Možete započeti sinhronizaciju. Na prvom čvoru treba da uradite:

drbdadm primary --force drbd0

Pogledajmo status:

cat /proc/drbd

Klasterska pohrana za male web klastere zasnovana na drbd+ocfs2

Odlično, sinhronizacija je počela. Čekamo kraj i vidimo sliku:

Klasterska pohrana za male web klastere zasnovana na drbd+ocfs2

Korak 3. Pokrenite sinhronizaciju na drugom čvoru:

drbdadm primary --force drbd0

Dobijamo sljedeće:

Klasterska pohrana za male web klastere zasnovana na drbd+ocfs2

Sada možemo pisati u drbd sa dva servera.

Korak 4. Instaliranje i konfiguriranje ocfs2.

Koristićemo prilično trivijalnu konfiguraciju:

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

Mora biti upisano /etc/ocfs2/cluster.conf na oba čvora.

Kreirajte FS na drbd0 na bilo kojem čvoru:

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

Ovdje smo kreirali sistem datoteka s oznakom testVol na drbd0 koristeći zadane parametre.

Klasterska pohrana za male web klastere zasnovana na drbd+ocfs2

U /etc/default/o2cb se mora postaviti (kao u naŔoj konfiguracijskoj datoteci)

O2CB_ENABLED=true 
O2CB_BOOTCLUSTER=ocfs2cluster 

i izvrŔiti na svakom čvoru:

o2cb register-cluster ocfs2cluster

Zatim uključujemo i dodajemo u autopogon sve jedinice koje su nam potrebne:

systemctl enable drbd o2cb ocfs2
systemctl start drbd o2cb ocfs2

NeÅ”to od ovoga će se već pokrenuti u procesu postavljanja.

Korak 5. Dodajte tačke montiranja u fstab na oba čvora:

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

Imenik /media/shared i mora se kreirati unaprijed.

Ovdje koristimo opcije noauto, Å”to znači da se sistem datoteka neće montirati pri pokretanju (ja radije montiram mrežne datoteke preko systemd) i heartbeat=local, Å”to znači da se usluga heartbeat koristi na svakom čvoru. Postoji i globalni otkucaj srca, koji je pogodniji za velike klastere.

Zatim možete montirati /media/shared i provjerite sinhronizaciju sadržaja.

Gotovo! Kao rezultat, dobijamo manje-viÅ”e skladiÅ”te otporno na greÅ”ke sa skalabilnoŔću i pristojnim performansama.

izvor: www.habr.com

Kupite pouzdan hosting za sajtove sa DDoS zaÅ”titom, VPS VDS servere šŸ”„ Kupite pouzdan web hosting sa DDoS zaÅ”titom, VPS VDS servere | ProHoster