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 seneng karo kerumitan sing gedhe banget, sing bisa mbebayani ing proyek kanthi 2-4 server, utamane yen proyek kasebut terus dijaga. Maneh, ana watesan kinerja serius sing meksa kita mbangun kluster panyimpenan 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+drbd. Saiki kita bakal pitutur marang kowe carane sampeyan bisa kanthi cepet nyebarke panyimpenan bebarengan kanggo loro server adhedhasar database solusi. Nanging pisanan, sethithik babagan komponen:

DRBD - sistem panyimpenan saka distribusi Linux standar sing ngijini sampeyan kanggo niru data antarane server ing pamblokiran. Aplikasi utama kanggo mbangun panyimpenan fault-tolerant.

OCFS2 - sistem file sing nyedhiyakake panggunaan panyimpenan sing padha karo sawetara sistem. Kalebu ing distribusi Linux lan minangka modul kernel lan piranti ruang panganggo kanggo nggarap FS. OCFS2 bisa digunakake ora mung liwat DRBD, nanging uga liwat iSCSI karo sawetara sambungan. Ing conto kita nggunakake DRBD.

Kabeh tumindak ditindakake ing server ubuntu 18.04 kanthi 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

Add a comment