Drbd+ocfs2-n oinarritutako web-kluster txikientzako biltegiratzea

Zertaz hitz egingo dugu:
Nola zabaldu bi zerbitzarientzako biltegiratze partekatua drbd+ocfs2 soluzioetan oinarrituta.

Norentzat izango da erabilgarria:
Tutoriala sistema-administratzaileentzat eta biltegiratze-inplementazio-metodo bat aukeratzen duen edo irtenbidea probatu nahi duen edonorentzat erabilgarria izango da.

Zein erabakiri uko egin genion eta zergatik?

Sarritan biltegiratze partekatua inplementatu behar dugun egoera baten aurrean gaude irakurketa-idazketa errendimendu onarekin web kluster txiki batean. Gure proiektuetarako biltegiratze partekatua ezartzeko hainbat aukera probatu ditugu, baina gutxik izan gaituzte aldi berean hainbat adierazlerekin asetzeko. Orain esango dizugu zergatik.

  • Glusterfs-ek ez gintuen konforme irakurtzeko eta idazteko errendimenduarekin; arazoak izan ziren fitxategi kopuru handi baten aldi berean irakurtzeko eta karga handia zegoen CPUan. Fitxategiak irakurtzeko arazoa adreilutik zuzenean sartuz konpondu liteke, baina hori ez da beti aplikagarria eta, oro har, okerra da.

  • Ceph-ek ez zuen gustuko gehiegizko konplexutasuna, eta hori kaltegarria izan daiteke 2-4 zerbitzari dituzten proiektuetan, batez ere proiektua gero mantentzen bada. Berriz ere, errendimendu-muga handiak daude biltegiratze-kluster bereiziak eraikitzera behartzen gaituztenak, glusterfs-ekin bezala.

  • NFS zerbitzari bat erabiltzeak biltegiratze partekatua ezartzeko galderak sortzen ditu akatsen tolerantziari dagokionez.

  • s3 zeregin sorta jakin baterako irtenbide ezagun bikaina da, baina ez da fitxategi sistema bat, eta horrek bere esparrua murrizten du.

  • lsyncd. Dagoeneko "fitxategi-sistemei" buruz hitz egiten hasi bagara, merezi du irtenbide ezagun hau aztertzea. Bi norabideko trukerako egokia ez ezik (baina benetan nahi baduzu, ahal izango duzu), ez du funtzionatzen egonkor fitxategi ugaritan. Osoari osagarri polita hari bakarrekoa dela da. Arrazoia programaren arkitekturan dago: inotify erabiltzen du lan-objektuak monitorizatzeko, abiaraztean eta berriro eskaneatzean esleitzen dituena. rsync transferentzia medio gisa erabiltzen da.

Tutoriala: drbd+ocfs2-n oinarritutako biltegiratze partekatua nola zabaldu

Guretzako irtenbiderik erosoenetako bat esteka izan zen ocfs2+drbd. Orain esango dizugu nola zabaldu dezakezun bi zerbitzarientzako biltegiratze partekatua soluzio datu-base batean oinarrituta. Baina lehenik eta behin, osagaiei buruz apur bat:

DRBD - Linux banaketa estandarreko biltegiratze sistema bat, zerbitzarien artean datuak blokeetan errepikatzeko aukera ematen duena. Aplikazio nagusia akatsen aurkako biltegiratzea eraikitzea da.

OCFS2 - Hainbat sistemak biltegiratze beraren erabilera partekatua eskaintzen duen fitxategi-sistema. Linux banaketan sartuta dago eta FSrekin lan egiteko kernel-modulua eta erabiltzaile-espazioko tresnak da. OCFS2 DRBD bidez ez ezik, konexio anitzekin iSCSI bidez ere erabil daiteke. Gure adibidean DRBD erabiltzen dugu.

Ekintza guztiak ubuntu zerbitzarian 18.04 konfigurazio minimo batean egiten dira.

1. urratsa. Konfiguratu DRBD:

/etc/drbd.d/drbd0.res fitxategian gure bloke birtualeko gailua /dev/drbd0 deskribatzen dugu:

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-disko barne - Erabili bloke-gailu berdinak metadatuak gordetzeko
gailua /dev/drbd0 β€” Erabili /dev/drbd0 drbd bolumenaren bide gisa.
diskoa /dev/vdb1 - Erabili /dev/vdb1
syncer { tasa 1000M; } β€” Erabili gigabit kanaleko banda-zabalera
baimendu-bi-primario - Bi zerbitzari nagusitan aldaketak onartzea ahalbidetzen duen aukera garrantzitsu bat
ondoren-sb-0pri, ondoren-sb-1pri, ondoren-sb-2pri β€” Splitbrain detektatzen denean nodoaren ekintzen ardura duten aukerak. Xehetasun gehiago dokumentazioan aurki daitezke.
bihurtu-lehen-bietan β€” bi nodoak lehen mailako gisa ezartzen ditu.

Gure kasuan, bi VM guztiz berdinak ditugu, sare birtual dedikatu batekin 10 gigabiteko errendimendua duena.

Gure adibidean, bi cluster-nodoen sare-izenak drbd1 eta drbd2 dira. Funtzionamendu egokia izateko, ostalarien izenak eta IP helbideak bat egin behar dituzu /etc/hosts-en.

10.10.10.192 drbd1
10.10.10.193 drbd2

2. urratsa. Konfiguratu nodoak:

Bi zerbitzarietan exekutatzen dugu:

drbdadm create-md drbd0

Drbd+ocfs2-n oinarritutako web-kluster txikientzako biltegiratzea

modprobe drbd
drbdadm up drbd0
cat /proc/drbd

Honako hauek lortzen ditugu:

Drbd+ocfs2-n oinarritutako web-kluster txikientzako biltegiratzea

Sinkronizazioa has dezakezu. Lehenengo nodoan exekutatu behar duzu:

drbdadm primary --force drbd0

Ikus dezagun egoera:

cat /proc/drbd

Drbd+ocfs2-n oinarritutako web-kluster txikientzako biltegiratzea

Bikaina, sinkronizazioa hasi da. Amaierara arte itxaron eta argazkia ikusiko dugu:

Drbd+ocfs2-n oinarritutako web-kluster txikientzako biltegiratzea

3. urratsa. Hasi sinkronizazioa bigarren nodoan:

drbdadm primary --force drbd0

Honako hauek lortzen ditugu:

Drbd+ocfs2-n oinarritutako web-kluster txikientzako biltegiratzea

Orain drbd-ra idatz dezakegu bi zerbitzarietatik.

4. urratsa. Instalatu eta konfiguratu ocfs2.

Nahiko konfigurazio hutsala erabiliko dugu:

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

Bertan idatzi behar da /etc/ocfs2/cluster.conf bi nodoetan.

FS bat sortzen dugu drbd0-n edozein nodotan:

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

Hemen drbd0-n testVol etiketa duen fitxategi sistema bat sortu dugu, parametro lehenetsiak erabiliz.

Drbd+ocfs2-n oinarritutako web-kluster txikientzako biltegiratzea

/etc/default/o2cb-n ezarri behar duzu (gure konfigurazio fitxategian bezala)

O2CB_ENABLED=true 
O2CB_BOOTCLUSTER=ocfs2cluster 

eta exekutatu nodo bakoitzean:

o2cb register-cluster ocfs2cluster

Ondoren, aktibatu eta automatikoki abiarazteko behar ditugun unitate guztiak gehituko ditugu:

systemctl enable drbd o2cb ocfs2
systemctl start drbd o2cb ocfs2

Hauetako batzuk dagoeneko martxan jarriko dira konfigurazio-prozesuan zehar.

5. urratsa. Gehitu muntaketa-puntuak fstab-era bi nodoetan:

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

Direktorioa /media/partekatua aldez aurretik sortu behar da.

Hemen noauto aukerak erabiltzen ditugu, hau da, fitxategia abiaraztean ez da muntatuko (nahiago dut sareko fitxategiak systemd bidez muntatu) eta heartbeat=local, hau da, nodo bakoitzean heartbeat zerbitzua erabiltzea. Bihotz-taupada globala ere badago, kluster handietarako egokiagoa dena.

Ondoren, muntatu dezakezu /media/partekatua eta egiaztatu edukien sinkronizazioa.

Bukatu da! Ondorioz, akatsei aurre egiteko biltegiratzea lortzen dugu eskalagarritasunarekin eta errendimendu duinarekin.

Iturria: www.habr.com

Gehitu iruzkin berria