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 drbd2Korak 2. Postavite Ävorove:
Na oba servera pokrenite:
drbdadm create-md drbd0 
modprobe drbd
drbdadm up drbd0
cat /proc/drbdDobijamo sljedeÄe:

Možete zapoÄeti sinhronizaciju. Na prvom Ävoru treba da uradite:
drbdadm primary --force drbd0Pogledajmo status:
cat /proc/drbd 
OdliÄno, sinhronizacija je poÄela. Äekamo kraj i vidimo sliku:

Korak 3. Pokrenite sinhronizaciju na drugom Ävoru:
drbdadm primary --force drbd0
Dobijamo sljedeÄe:

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.

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 ocfs2clusterZatim ukljuÄujemo i dodajemo u autopogon sve jedinice koje su nam potrebne:
systemctl enable drbd o2cb ocfs2
systemctl start drbd o2cb ocfs2NeÅ”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 0Imenik /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
