Tutazungumza nini:
Jinsi ya kupeleka haraka hifadhi iliyoshirikiwa kwa seva mbili kulingana na suluhu za drbd+ocfs2.
Hii itakuwa muhimu kwa nani:
Mafunzo yatakuwa muhimu kwa wasimamizi wa mfumo na mtu yeyote anayechagua mbinu ya utekelezaji wa uhifadhi au anataka kujaribu suluhisho.
Tumekataa maamuzi gani na kwanini?
Mara nyingi tunakabiliwa na hali ambapo tunahitaji kutekeleza hifadhi iliyoshirikiwa na utendaji mzuri wa kusoma-kuandika kwenye nguzo ndogo ya wavuti. Tulijaribu chaguo mbalimbali za kutekeleza hifadhi ya pamoja ya miradi yetu, lakini wachache waliweza kuturidhisha kwa viashiria kadhaa mara moja. Sasa tutakuambia kwa nini.
- Glusterfs haikuturidhisha na utendaji wa kusoma na kuandika; kulikuwa na shida na usomaji wa wakati huo huo wa idadi kubwa ya faili, na kulikuwa na mzigo mkubwa kwenye CPU. Tatizo la kusoma faili linaweza kutatuliwa kwa kuzifikia moja kwa moja kutoka kwa matofali, lakini hii haitumiki kila wakati na kwa ujumla sio sahihi.
- Ceph hakupenda ugumu mwingi, ambao unaweza kuwa na madhara kwa miradi iliyo na seva 2-4, haswa ikiwa mradi huo utadumishwa baadaye. Tena, kuna mapungufu makubwa ya utendakazi ambayo yanatulazimisha kujenga vikundi tofauti vya uhifadhi, kama vile glusterfs.
- Kutumia seva moja ya NFS kutekeleza uhifadhi wa pamoja huibua maswali kuhusu uvumilivu wa makosa.
- s3 ni suluhisho bora maarufu kwa anuwai ya kazi, lakini sio mfumo wa faili, ambao unapunguza wigo wake.
- lsyncd. Ikiwa tayari tumeanza kuzungumza juu ya "mifumo isiyo ya faili," basi ni thamani ya kwenda juu ya ufumbuzi huu maarufu. Sio tu kwamba haifai kwa kubadilishana kwa njia mbili (lakini ikiwa unataka kweli, basi unaweza), pia haifanyi kazi kwa utulivu kwenye idadi kubwa ya faili. Aidha nzuri kwa jambo zima ni kwamba ni moja-threaded. Sababu iko katika usanifu wa programu: hutumia inotify kufuatilia vitu vya kazi, ambayo inapeana wakati wa kuanza na wakati wa kuchambua tena. rsync hutumiwa kama njia ya uhamishaji.
Mafunzo: jinsi ya kupeleka hifadhi iliyoshirikiwa kulingana na drbd+ocfs2
Mojawapo ya suluhisho rahisi zaidi kwetu ilikuwa kiunga ocfs2+drbd. Sasa tutakuambia jinsi unaweza haraka kupeleka hifadhi ya pamoja kwa seva mbili kulingana na hifadhidata ya suluhisho. Lakini kwanza, kidogo kuhusu vipengele:
DRBD - mfumo wa uhifadhi kutoka kwa usambazaji wa kawaida wa Linux ambao hukuruhusu kuiga data kati ya seva kwenye vizuizi. Maombi kuu ni kujenga uhifadhi unaostahimili makosa.
OCFS2 - mfumo wa faili ambao hutoa matumizi ya pamoja ya hifadhi sawa na mifumo kadhaa. Imejumuishwa katika usambazaji wa Linux na ni moduli ya kernel na zana za nafasi ya mtumiaji za kufanya kazi na FS. OCFS2 inaweza kutumika sio tu juu ya DRBD, lakini pia juu ya iSCSI yenye viunganisho vingi. Katika mfano wetu tunatumia DRBD.
Vitendo vyote vinafanywa kwenye seva ya ubuntu 18.04 kwa usanidi mdogo.
Hatua ya 1. Sanidi DRBD:
Katika faili /etc/drbd.d/drbd0.res tunaelezea kifaa chetu cha kuzuia /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;
}
}
Meta-diski ya ndani — tumia vifaa sawa vya kuzuia kuhifadhi metadata
kifaa /dev/drbd0 - tumia /dev/drbd0 kama njia ya kiasi cha drbd.
diski /dev/vdb1 - tumia /dev/vdb1
syncer { kiwango cha 1000M; } — tumia kipimo data cha chaneli ya gigabit
kuruhusu-mbili-mchujo - chaguo muhimu ambayo inaruhusu mabadiliko kukubalika kwenye seva mbili za msingi
after-sb-0pri, after-sb-1pri, after-sb-2pri - Chaguzi zinazohusika na vitendo vya nodi wakati mgawanyiko wa ubongo umegunduliwa. Maelezo zaidi yanaweza kupatikana katika nyaraka.
kuwa-msingi-kwa zote mbili - huweka nodi zote mbili hadi za msingi.
Kwa upande wetu, tuna VM mbili zinazofanana kabisa, na mtandao maalum uliojitolea na upitishaji wa gigabiti 10.
Katika mfano wetu, majina ya mtandao ya nodi mbili za nguzo ni drbd1 na drbd2. Kwa uendeshaji sahihi, unahitaji kufanana na majina na anwani za IP za majeshi katika /etc/hosts.
10.10.10.192 drbd1
10.10.10.193 drbd2
Hatua ya 2. Sanidi nodi:
Kwenye seva zote mbili tunaendesha:
drbdadm create-md drbd0
modprobe drbd
drbdadm up drbd0
cat /proc/drbd
Tunapata zifuatazo:
Unaweza kuanza maingiliano. Kwenye nodi ya kwanza unahitaji kutekeleza:
drbdadm primary --force drbd0
Wacha tuangalie hali:
cat /proc/drbd
Sawa, usawazishaji umeanza. Tunasubiri hadi mwisho na kuona picha:
Hatua ya 3. Anza ulandanishi kwenye nodi ya pili:
drbdadm primary --force drbd0
Tunapata zifuatazo:
Sasa tunaweza kuandika kwa drbd kutoka kwa seva mbili.
Hatua ya 4. Sakinisha na usanidi ocfs2.
Tutatumia usanidi mdogo sana:
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
Inahitaji kuandikwa ndani /etc/ocfs2/cluster.conf kwenye nodi zote mbili.
Tunaunda FS kwenye drbd0 kwenye nodi yoyote:
mkfs.ocfs2 -L "testVol" /dev/drbd0
Hapa tuliunda mfumo wa faili na lebo testVol kwenye drbd0, kwa kutumia vigezo chaguo-msingi.
Katika /etc/default/o2cb unahitaji kuweka (kama kwenye faili yetu ya usanidi)
O2CB_ENABLED=true
O2CB_BOOTCLUSTER=ocfs2cluster
na utekeleze kwenye kila nodi:
o2cb register-cluster ocfs2cluster
Kisha tunawasha na kuongeza vitengo vyote tunahitaji kujiendesha:
systemctl enable drbd o2cb ocfs2
systemctl start drbd o2cb ocfs2
Baadhi ya haya tayari yatakuwa yakiendeshwa wakati wa mchakato wa kusanidi.
Hatua ya 5. Ongeza sehemu za kupachika ili kufstab kwenye nodi zote mbili:
/dev/drbd0 /media/shared ocfs2 defaults,noauto,heartbeat=local 0 0
Orodha /media/iliyoshirikiwa lazima iundwe mapema.
Hapa tunatumia chaguzi za noauto, ambayo inamaanisha kuwa faili haitawekwa wakati wa kuanza (napendelea kuweka faili za mtandao kupitia systemd) na heartbeat=local, ambayo inamaanisha kutumia huduma ya mapigo ya moyo kwenye kila nodi. Pia kuna mpigo wa moyo wa kimataifa, ambao unafaa zaidi kwa makundi makubwa.
Ifuatayo unaweza kuweka /media/iliyoshirikiwa na uangalie usawazishaji wa maudhui.
Imefanyika! Kwa hivyo, tunapata hifadhi inayostahimili hitilafu zaidi au kidogo na yenye uwezo mkubwa na utendakazi mzuri.
Chanzo: mapenzi.com