Panyimpenan kluster kanggo kluster web cilik adhedhasar drbd+ocfs2

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

Panyimpenan kluster kanggo kluster web cilik adhedhasar drbd+ocfs2

modprobe drbd
drbdadm up drbd0
cat /proc/drbd

Kita entuk ing ngisor iki:

Panyimpenan kluster kanggo kluster web cilik adhedhasar drbd+ocfs2

Sampeyan bisa miwiti sinkronisasi. Ing simpul pisanan sampeyan kudu nglakokake:

drbdadm primary --force drbd0

Ayo ndeleng status:

cat /proc/drbd

Panyimpenan kluster kanggo kluster web cilik adhedhasar drbd+ocfs2

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

Panyimpenan kluster kanggo kluster web cilik adhedhasar drbd+ocfs2

Langkah 3. Mulai sinkronisasi ing simpul kapindho:

drbdadm primary --force drbd0

Kita entuk ing ngisor iki:

Panyimpenan kluster kanggo kluster web cilik adhedhasar drbd+ocfs2

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.

Panyimpenan kluster kanggo kluster web cilik adhedhasar drbd+ocfs2

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

Tuku hosting sing dipercaya kanggo situs kanthi proteksi DDoS, server VPS VDS πŸ”₯ Tuku hosting situs web sing bisa dipercaya nganggo proteksi DDoS, server VPS VDS | ProHoster