Dak li se nitkellmu:
Kif tuża malajr ħażna kondiviża għal żewġ servers ibbażati fuq soluzzjonijiet drbd+ocfs2.
Għal min se jkun utli dan:
It-tutorja se tkun utli għall-amministraturi tas-sistema u għal kull min jagħżel metodu ta 'implimentazzjoni tal-ħażna jew irid jipprova s-soluzzjoni.
Liema deċiżjonijiet irrifjutajna u għaliex?
Ħafna drabi niffaċċjaw sitwazzjoni fejn għandna bżonn nimplimentaw ħażna kondiviża b'prestazzjoni tajba ta' qari-kitba fuq raggruppament żgħir tal-web. Ippruvajna diversi għażliet għall-implimentazzjoni tal-ħażna kondiviża għall-proġetti tagħna, iżda ftit kienu kapaċi jissodisfawna fuq diversi indikaturi f'daqqa. Issa ngħidulek għaliex.
- Glusterfs ma ssodisfajnax bil-prestazzjoni tal-qari u l-kitba; kien hemm problemi bil-qari simultanju ta 'numru kbir ta' fajls, u kien hemm tagħbija kbira fuq is-CPU. Il-problema bil-qari ta 'fajls tista' tiġi solvuta billi wieħed jaċċessahom direttament mill-briks, iżda dan mhux dejjem ikun applikabbli u ġeneralment mhux korrett.
- Ceph ma għoġbitx il-kumplessità eċċessiva, li tista 'tkun ta' ħsara fuq proġetti b'servers 2-4, speċjalment jekk il-proġett sussegwentement jinżamm. Għal darb'oħra, hemm limitazzjonijiet serji ta 'prestazzjoni li jġegħluna nibnu raggruppamenti ta' ħażna separati, bħal ma 'glusterfs.
- L-użu ta' server NFS wieħed biex jimplimenta ħażna kondiviża tqajjem mistoqsijiet f'termini ta' tolleranza għall-ħsarat.
- s3 hija soluzzjoni popolari eċċellenti għal ċertu firxa ta 'kompiti, iżda mhix sistema ta' fajls, li tnaqqas l-ambitu tagħha.
- lsyncd. Jekk diġà bdejna nitkellmu dwar "sistemi mhux tal-fajls," allura ta 'min imur fuq din is-soluzzjoni popolari. Mhux biss mhuwiex adattat għal skambju f'żewġ direzzjonijiet (imma jekk verament trid, allura tista '), ukoll ma taħdimx b'mod stabbli fuq numru kbir ta' fajls. Żieda sabiħa għall-ħaġa sħiħa hija li hija b'ħajt wieħed. Ir-raġuni tinsab fl-arkitettura tal-programm: juża inotify biex jimmonitorja l-oġġetti tax-xogħol, li jassenja fl-istartjar u waqt l-iskannjar mill-ġdid. rsync jintuża bħala l-mezz tat-trasferiment.
Tutorja: kif tuża ħażna kondiviża bbażata fuq drbd+ocfs2
Waħda mill-aktar soluzzjonijiet konvenjenti għalina kienet il-link ocfs2+drbd. Issa aħna ngħidulek kif tista 'malajr tuża ħażna kondiviża għal żewġ servers ibbażati fuq database ta' soluzzjoni. Imma l-ewwel, ftit dwar il-komponenti:
DRBD - sistema ta' ħażna mid-distribuzzjoni standard tal-Linux li tippermettilek tirreplika dejta bejn servers fi blokki. L-applikazzjoni ewlenija hija li tinbena ħażna li tollera l-ħsarat.
OCFS2 - sistema ta' fajls li tipprovdi użu kondiviż tal-istess ħażna minn diversi sistemi. Inkluż fid-distribuzzjoni tal-Linux u huwa modulu tal-kernel u għodod tal-ispazju tal-utent biex jaħdmu mal-FS. OCFS2 jista 'jintuża mhux biss fuq DRBD, iżda wkoll fuq iSCSI b'konnessjonijiet multipli. Fl-eżempju tagħna nużaw DRBD.
L-azzjonijiet kollha jitwettqu fuq is-server ubuntu 18.04 f'konfigurazzjoni minima.
Pass 1. Ikkonfigura DRBD:
Fil-fajl /etc/drbd.d/drbd0.res niddeskrivu l-apparat tal-blokk virtwali tagħna /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-disk intern — uża l-istess tagħmir tal-blokk biex taħżen il-metadejta
apparat /dev/drbd0 — uża /dev/drbd0 bħala l-mogħdija għall-volum drbd.
disk /dev/vdb1 - uża /dev/vdb1
syncer { rata 1000M; } — uża bandwidth tal-kanali tal-gigabit
jippermettu-żewġ-primarji - għażla importanti li tippermetti li jiġu aċċettati bidliet fuq żewġ servers primarji
wara-sb-0pri, wara-sb-1pri, wara-sb-2pri — għażliet responsabbli għall-azzjonijiet tan-nodu meta jinstab splitbrain. Aktar dettalji jistgħu jinstabu fid-dokumentazzjoni.
issir-primarja-fuq it-tnejn — tistabbilixxi ż-żewġ nodi bħala primarji.
Fil-każ tagħna, għandna żewġ VMs assolutament identiċi, b'netwerk virtwali ddedikat bi throughput ta '10 gigabits.
Fl-eżempju tagħna, l-ismijiet tan-netwerk ta 'żewġ nodi ta' cluster huma drbd1 u drbd2. Għal tħaddim tajjeb, għandek bżonn tqabbel l-ismijiet u l-indirizzi IP tal-hosts f'/etc/hosts.
10.10.10.192 drbd1
10.10.10.193 drbd2
Pass 2. Stabbilixxi nodi:
Fuq iż-żewġ servers aħna nħaddmu:
drbdadm create-md drbd0
modprobe drbd
drbdadm up drbd0
cat /proc/drbd
Nirċievu dan li ġej:
Tista 'tibda s-sinkronizzazzjoni. Fuq l-ewwel node trid tesegwixxi:
drbdadm primary --force drbd0
Ejja nħarsu lejn l-istatus:
cat /proc/drbd
Kbira, is-sinkronizzazzjoni bdiet. Nistennew sal-aħħar u naraw l-istampa:
Pass 3. Ibda s-sinkronizzazzjoni fuq it-tieni node:
drbdadm primary --force drbd0
Nirċievu dan li ġej:
Issa nistgħu niktbu lil drbd minn żewġ servers.
Pass 4. Installa u kkonfigurat ocfs2.
Se nużaw konfigurazzjoni pjuttost trivjali:
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
Jeħtieġ li tiġi miktuba fi /etc/ocfs2/cluster.conf fuq iż-żewġ nodi.
Aħna noħolqu FS fuq drbd0 fuq kwalunkwe node:
mkfs.ocfs2 -L "testVol" /dev/drbd0
Hawnhekk ħloqna sistema ta 'fajls bit-tikketta testVol fuq drbd0, billi tuża l-parametri default.
F'/etc/default/o2cb trid issettja (bħal fil-fajl tal-konfigurazzjoni tagħna)
O2CB_ENABLED=true
O2CB_BOOTCLUSTER=ocfs2cluster
u eżegwixxi fuq kull nodu:
o2cb register-cluster ocfs2cluster
Imbagħad nixgħel u nżidu l-unitajiet kollha li neħtieġu biex nidħlu awtomatikament:
systemctl enable drbd o2cb ocfs2
systemctl start drbd o2cb ocfs2
Xi wħud minn dan diġà se jkunu qed jaħdmu matul il-proċess ta 'setup.
Pass 5. Żid punti ta 'muntaġġ għal fstab fuq iż-żewġ nodi:
/dev/drbd0 /media/shared ocfs2 defaults,noauto,heartbeat=local 0 0
Direttorju /media/kondiviża trid tinħoloq minn qabel.
Hawnhekk nużaw l-għażliet noauto, li jfisser li l-fajl mhux se jiġi mmuntat fl-istartjar (nippreferi li mmunta fajls tan-netwerk permezz ta 'systemd) u heartbeat=local, li jfisser li tuża s-servizz tal-qalb fuq kull node. Hemm ukoll taħbit tal-qalb globali, li huwa aktar adattat għal clusters kbar.
Sussegwentement tista 'timmonta /media/kondiviża u ċċekkja s-sinkronizzazzjoni tal-kontenut.
Magħmul! Bħala riżultat, niksbu ħażna bejn wieħed u ieħor tolleranti għall-ħsarat bi skalabbiltà u prestazzjoni deċenti.
Sors: www.habr.com