Fürttárolás kis webfürtökhöz drbd+ocfs2 alapján

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

Fürttárolás kis webfürtökhöz drbd+ocfs2 alapján

modprobe drbd
drbdadm up drbd0
cat /proc/drbd

A következőket kapjuk:

Fürttárolás kis webfürtökhöz drbd+ocfs2 alapján

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

Fürttárolás kis webfürtökhöz drbd+ocfs2 alapján

Remek, elkezdődött a szinkronizálás. Várjuk a végét és nézzük a képet:

Fürttárolás kis webfürtökhöz drbd+ocfs2 alapján

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:

Fürttárolás kis webfürtökhöz drbd+ocfs2 alapján

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.

Fürttárolás kis webfürtökhöz drbd+ocfs2 alapján

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

Hozzászólás