Amiről beszélni fogunk:
Megosztott tárhely gyors üzembe helyezése két kiszolgálón a drbd+ocfs2 megoldások alapján.
Kinek lesz ez hasznos:
Az oktatóanyag hasznos lesz a rendszergazdáknak és mindenkinek, aki tárolási megvalósítási módot választ, vagy ki akarja próbálni a megoldást.
Milyen döntéseket utasítottunk el és miért?
Gyakran szembesülünk olyan helyzettel, amikor jó olvasási-írási teljesítménnyel megosztott tárolást kell megvalósítanunk egy kis webfürtön. Többféle lehetőséget is kipróbáltunk projektjeink megosztott tárhelyének megvalósítására, de kevesen tudtak egyszerre több mutatóban kielégíteni. Most elmondjuk, miért.
- A Glusterfs nem elégedett meg az olvasási és írási teljesítménnyel, problémák voltak nagyszámú fájl egyidejű olvasásával, és nagy terhelés volt a CPU-n. A fájlok olvasásával kapcsolatos probléma megoldható közvetlenül a téglából való hozzáféréssel, de ez nem mindig alkalmazható, és általában helytelen.
- Ceph nem szerette a túlzott bonyolultságot, ami káros lehet a 2-4 szerveres projekteknél, különösen, ha a projektet utólag karbantartják. Ismét komoly teljesítménykorlátozások vannak, amelyek arra kényszerítenek bennünket, hogy külön tárolófürtöket építsünk, mint a glusterfeknél.
- Egy NFS-kiszolgáló használata a megosztott tárolás megvalósításához kérdéseket vet fel a hibatűrést illetően.
- Az s3 kiváló népszerű megoldás bizonyos feladatokhoz, de nem fájlrendszer, ami szűkíti a hatókörét.
- lsyncd. Ha már elkezdtünk beszélni „nem fájlrendszerekről”, akkor érdemes áttekinteni ezt a népszerű megoldást. Nemcsak kétirányú cserére nem alkalmas (de ha nagyon akarod, akkor igen), de nem is működik stabilan sok fájlon. Szép adalék az egészhez, hogy egyszálas. Az ok a program architektúrájában keresendő: az inotify segítségével figyeli a munkaobjektumokat, amelyeket indításkor és újrakereséskor rendel hozzá. rsync szolgál átviteli közegként.
Oktatóanyag: hogyan telepítsünk megosztott tárhelyet a drbd+ocfs2 alapján
Az egyik legkényelmesebb megoldás számunkra a link volt ocfs2+drbd. Most elmondjuk, hogyan telepíthet gyorsan megosztott tárhelyet két kiszolgálóra egy megoldási adatbázis alapján. De először egy kicsit az összetevőkről:
DRBD - egy tárolórendszer a szabványos Linux disztribúcióból, amely lehetővé teszi az adatok blokkokban történő replikálását a szerverek között. A fő alkalmazás a hibatűrő tárolás építése.
OCFS2 - olyan fájlrendszer, amely ugyanazt a tárhelyet több rendszer által megosztottan használja. A Linux disztribúció része, és egy kernelmodul és felhasználói területi eszközök az FS-sel való munkához. Az OCFS2 nemcsak DRBD-n, hanem iSCSI-n is használható több kapcsolattal. Példánkban DRBD-t használunk.
Minden műveletet az ubuntu 18.04-es szerverén hajtanak végre minimális konfigurációban.
1. lépés: DRBD konfigurálása:
Az /etc/drbd.d/drbd0.res fájlban leírjuk a /dev/drbd0 virtuális blokkeszközünket:
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-lemez belső — ugyanazokat a blokkeszközöket használja a metaadatok tárolására
eszköz /dev/drbd0 — a /dev/drbd0 használata a drbd kötet elérési útjaként.
lemez /dev/vdb1 - használja a /dev/vdb1 fájlt
syncer { sebesség 1000M; } — gigabites csatorna sávszélesség használata
engedélyez-két-elsődleges - egy fontos lehetőség, amely lehetővé teszi a változtatások elfogadását két elsődleges szerveren
after-sb-0pri, after-sb-1pri, after-sb-2pri — opciók, amelyek felelősek a csomópont műveleteiért, ha a rendszer megosztott agyat észlel. További részletek a dokumentációban találhatók.
mindkettőn elsődleges lesz — mindkét csomópontot elsődlegesre állítja.
Esetünkben két teljesen egyforma virtuális gépünk van, dedikált virtuális hálózattal, 10 gigabites átvitellel.
Példánkban két fürtcsomópont hálózati neve drbd1 és drbd2. A megfelelő működés érdekében meg kell egyeznie az /etc/hosts fájlban található gazdagépek nevével és IP-címével.
10.10.10.192 drbd1
10.10.10.193 drbd2
2. lépés Csomópontok beállítása:
Mindkét szerveren futunk:
drbdadm create-md drbd0
modprobe drbd
drbdadm up drbd0
cat /proc/drbd
A következőket kapjuk:
Elkezdheti a szinkronizálást. Az első csomóponton végre kell hajtani:
drbdadm primary --force drbd0
Nézzük az állapotot:
cat /proc/drbd
Remek, elkezdődött a szinkronizálás. Várjuk a végét és nézzük a képet:
3. lépés: Indítsa el a szinkronizálást a második csomóponton:
drbdadm primary --force drbd0
A következőket kapjuk:
Most már két szerverről írhatunk a drbd-be.
4. lépés: Telepítse és konfigurálja az ocfs2-t.
Egy meglehetősen triviális konfigurációt fogunk használni:
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
Be kell írni /etc/ocfs2/cluster.conf mindkét csomóponton.
Létrehozunk egy FS-t a drbd0-n bármely csomóponton:
mkfs.ocfs2 -L "testVol" /dev/drbd0
Itt létrehoztunk egy fájlrendszert a testVol címkével a drbd0-n, az alapértelmezett paraméterek használatával.
Az /etc/default/o2cb fájlban be kell állítani (mint a konfigurációs fájlunkban)
O2CB_ENABLED=true
O2CB_BOOTCLUSTER=ocfs2cluster
és hajtsa végre az egyes csomópontokon:
o2cb register-cluster ocfs2cluster
Ezután bekapcsoljuk és hozzáadjuk az összes egységet, amelyre szükségünk van az automatikus futtatáshoz:
systemctl enable drbd o2cb ocfs2
systemctl start drbd o2cb ocfs2
Ezek egy része már futni fog a beállítási folyamat során.
5. lépés: Adjon hozzá csatolási pontokat az fstab-hoz mindkét csomóponton:
/dev/drbd0 /media/shared ocfs2 defaults,noauto,heartbeat=local 0 0
Könyvtár /media/megosztott előzetesen létre kell hozni.
Itt a noauto opciókat használjuk, ami azt jelenti, hogy a fájl nem lesz felcsatolva induláskor (én inkább a systemd-n keresztül csatlakoztatom a hálózati fájlokat) és a heartbeat=local-t, ami azt jelenti, hogy minden csomóponton a szívverés szolgáltatást kell használni. Létezik globális szívverés is, amely nagyobb klaszterekhez alkalmasabb.
Ezután fel lehet szerelni /media/megosztott és ellenőrizze a tartalom szinkronizálását.
Kész! Ennek eredményeként többé-kevésbé hibatűrő tárhelyet kapunk, skálázhatósággal és megfelelő teljesítménnyel.
Forrás: will.com