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 haikupendwa kwa ugumu wake mwingi, ambao unaweza kuwa na madhara katika miradi yenye 2-4 seva, hasa ikiwa mradi utaendelezwa baadaye. Tena, kuna mapungufu makubwa ya utendaji, na kulazimisha kuundwa kwa makundi tofauti ya hifadhi, kama ilivyo kwa 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+drbdSasa tutakuambia jinsi unavyoweza kusambaza hifadhi ya pamoja kwa watu wawili haraka seva kulingana na suluhisho hizi. Lakini kwanza, kidogo kuhusu vipengele:
DRBD - mfumo wa kuhifadhi kutoka kwa uwasilishaji wa kawaida Linux, ambayo inaruhusu uigaji wa data kulingana na vizuizi kati ya seva. Matumizi yake kuu ni katika kujenga hifadhi inayostahimili hitilafu.
OCFS2 — mfumo wa faili unaowezesha matumizi ya pamoja ya hifadhi sawa na mifumo mingi. Imejumuishwa katika usambazaji Linux Inajumuisha moduli ya kernel na zana za nafasi ya mtumiaji za kufanya kazi na mifumo ya faili. OCFS2 inaweza kutumika si tu juu ya DRBD, bali pia juu ya iSCSI yenye miunganisho mingi. Katika mfano wetu, tunatumia DRBD.
Vitendo vyote vinafanywa tarehe ubuntu seva 18.04 katika usanidi mdogo zaidi.
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 drbd2Hatua ya 2. Sanidi nodi:
Kwenye seva zote mbili tunaendesha:
drbdadm create-md drbd0 
modprobe drbd
drbdadm up drbd0
cat /proc/drbdTunapata zifuatazo:

Unaweza kuanza maingiliano. Kwenye nodi ya kwanza unahitaji kutekeleza:
drbdadm primary --force drbd0Wacha 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 ocfs2clusterKisha tunawasha na kuongeza vitengo vyote tunahitaji kujiendesha:
systemctl enable drbd o2cb ocfs2
systemctl start drbd o2cb ocfs2Baadhi 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 0Orodha /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
