Apa kita bakal ngomong babagan:
Cara cepet nyebarake panyimpenan bareng kanggo rong server adhedhasar solusi drbd+ocfs2.
Sapa sing bakal migunani kanggo:
Tutorial bakal migunani kanggo administrator sistem lan sapa wae sing milih metode implementasi panyimpenan utawa pengin nyoba solusi kasebut.
Keputusan apa sing kita tolak lan kenapa?
Asring kita ngadhepi kahanan ing ngendi kita kudu ngetrapake panyimpenan bareng kanthi kinerja maca-tulis sing apik ing kluster web cilik. Kita nyoba macem-macem opsi kanggo ngleksanakake panyimpenan bareng kanggo proyek kita, nanging sawetara padha bisa gawe marem kita ing sawetara pratondho bebarengan. Saiki kita bakal ngandhani apa sebabe.
- Glusterfs ora gawe marem kita maca lan nulis kinerja, ana masalah karo simultaneous maca nomer akeh file, lan ana beban dhuwur ing CPU. Masalah karo maca file bisa ditanggulangi kanthi ngakses langsung saka bata, nanging iki ora mesthi ditrapake lan umume ora bener.
- Ceph ora disenengi amarga kerumitan sing berlebihan, sing bisa mbebayani ing proyek kanthi 2-4 server, utamane yen proyek kasebut banjur dijaga. Maneh, ana watesan kinerja sing signifikan, sing meksa nggawe kluster panyimpenan sing kapisah, kaya glusterfs.
- Nggunakake siji server NFS kanggo ngleksanakake panyimpenan sing dienggo bareng ngundakake pitakonan babagan toleransi kesalahan.
- s3 minangka solusi populer banget kanggo sawetara tugas tartamtu, nanging dudu sistem file, sing nyuda ruang lingkup.
- lsyncd. Yen kita wis miwiti ngomong babagan "sistem non-berkas," mula kudu dipikirake solusi populer iki. Ora mung ora cocog kanggo ijol-ijolan rong arah (nanging yen sampeyan pengin, sampeyan bisa), uga ora bisa digunakake kanthi stabil ing file sing akeh. A tambahan becik kanggo kabeh iku siji-Utas. Alesane ana ing arsitektur program: nggunakake inotify kanggo ngawasi obyek kerja, sing ditugasake nalika wiwitan lan nalika pemindaian maneh. rsync digunakake minangka media transfer.
Tutorial: carane masang panyimpenan bareng adhedhasar drbd+ocfs2
Salah sawijining solusi sing paling trep kanggo kita yaiku link ocfs2+drbdSaiki kita bakal ngandhani kepiye carane sampeyan bisa kanthi cepet masang panyimpenan bareng kanggo rong wong server adhedhasar solusi iki. Nanging dhisik, sethithik babagan komponen-komponen kasebut:
DRBD - sistem panyimpenan saka pangiriman standar Linux, sing ngidini replikasi data berbasis blok antarane server. Aplikasi utamane yaiku kanggo mbangun panyimpenan sing toleran kesalahan.
OCFS2 β sistem berkas sing nggampangake panggunaan panyimpenan sing padha dening pirang-pirang sistem. Kalebu ing distribusi Linux Iki kasusun saka modul kernel lan piranti ruang panganggo kanggo nggarap sistem file. OCFS2 ora mung bisa digunakake liwat DRBD, nanging uga liwat iSCSI kanthi pirang-pirang sambungan. Ing conto kita, kita nggunakake DRBD.
Kabeh tumindak ditindakake ing ubuntu server 18.04 ing konfigurasi minimal.
Langkah 1. Konfigurasi DRBD:
Ing file /etc/drbd.d/drbd0.res kita nerangake piranti blok virtual kita /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 internal - gunakake piranti blok sing padha kanggo nyimpen metadata
piranti /dev/drbd0 - gunakake /dev/drbd0 minangka path menyang volume drbd.
disk /dev/vdb1 - gunakake /dev/vdb1
sinkronisasi {rate 1000M; } - nggunakake bandwidth saluran gigabit
ngidini-loro-primaries - pilihan penting sing ngidini owah-owahan bisa ditampa ing loro server utami
sawise-sb-0pri, sawise-sb-1pri, sawise-sb-2pri - pilihan sing tanggung jawab kanggo tumindak simpul nalika splitbrain dideteksi. Rincian liyane bisa ditemokake ing dokumentasi.
dadi-utama-ing loro - nyetel loro simpul menyang utami.
Ing kasus kita, kita duwe rong VM sing padha, kanthi jaringan virtual khusus kanthi throughput 10 gigabit.
Ing conto kita, jeneng jaringan saka rong simpul kluster yaiku drbd1 lan drbd2. Kanggo operasi sing tepat, sampeyan kudu cocog jeneng lan alamat IP host ing /etc/hosts.
10.10.10.192 drbd1
10.10.10.193 drbd2
Langkah 2. Setel simpul:
Ing loro server kita mbukak:
drbdadm create-md drbd0

modprobe drbd
drbdadm up drbd0
cat /proc/drbd
Kita entuk ing ngisor iki:

Sampeyan bisa miwiti sinkronisasi. Ing simpul pisanan sampeyan kudu nglakokake:
drbdadm primary --force drbd0
Ayo ndeleng status:
cat /proc/drbd

Apik, sinkronisasi wis diwiwiti. Kita ngenteni nganti pungkasan lan ndeleng gambar:

Langkah 3. Mulai sinkronisasi ing simpul kapindho:
drbdadm primary --force drbd0
Kita entuk ing ngisor iki:

Saiki kita bisa nulis menyang drbd saka rong server.
Langkah 4. Instal lan konfigurasi ocfs2.
Kita bakal nggunakake konfigurasi sing ora pati penting:
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
Perlu ditulis ing /etc/ocfs2/cluster.conf ing loro simpul.
Kita nggawe FS ing drbd0 ing sembarang simpul:
mkfs.ocfs2 -L "testVol" /dev/drbd0
Ing kene kita nggawe sistem file kanthi label testVol ing drbd0, nggunakake parameter standar.

Ing /etc/default/o2cb sampeyan kudu nyetel (kaya ing file konfigurasi kita)
O2CB_ENABLED=true
O2CB_BOOTCLUSTER=ocfs2cluster
lan eksekusi ing saben simpul:
o2cb register-cluster ocfs2cluster
Banjur kita nguripake lan nambah kabeh unit sing perlu kanggo autorun:
systemctl enable drbd o2cb ocfs2
systemctl start drbd o2cb ocfs2
Sawetara iki bakal mlaku sajrone proses persiyapan.
Langkah 5. Tambah titik gunung kanggo fstab ing loro simpul:
/dev/drbd0 /media/shared ocfs2 defaults,noauto,heartbeat=local 0 0
Direktori /media/dibagi kudu digawe sadurunge.
Ing kene kita nggunakake opsi noauto, tegese file kasebut ora bakal dipasang nalika wiwitan (Aku luwih seneng masang file jaringan liwat systemd) lan detak jantung = lokal, tegese nggunakake layanan detak jantung ing saben simpul. Ana uga detak jantung global, sing luwih cocok kanggo klompok gedhe.
Sabanjure sampeyan bisa mount /media/dibagi lan mriksa sinkronisasi isi.
Rampung! AkibatΓ©, kita entuk luwih utawa kurang panyimpenan fault-tolerant karo skalabilitas lan kinerja prayoga.
Source: www.habr.com
