Panyimpen klaster pikeun klaster wéb leutik dumasar kana drbd+ocfs2

Naon urang bakal ngobrol ngeunaan:
Kumaha gancang nyebarkeun panyimpenan dibagikeun pikeun dua server dumasar kana solusi drbd + ocfs2.

Saha ieu bakal mangpaat pikeun:
Tutorial bakal mangpaat pikeun pangurus sistem sareng saha waé anu milih metode palaksanaan neundeun atanapi hoyong nyobian solusina.

Kaputusan naon anu urang nolak sareng kunaon?

Sering urang disanghareupan ku kaayaan dimana urang kedah ngalaksanakeun panyimpenan anu dibagikeun sareng kinerja baca-tulis anu saé dina kluster wéb leutik. Kami nyobian sababaraha pilihan pikeun ngalaksanakeun panyimpen anu dibagi pikeun proyék-proyék kami, tapi sababaraha anu tiasa nyugemakeun kami dina sababaraha indikator sakaligus. Ayeuna kami bakal ngabejaan ka maneh naha.

  • Glusterfs henteu nyugemakeun kami dina maca sareng nyerat kinerja; aya masalah sareng bacaan sakaligus tina sajumlah ageung file, sareng aya beban anu luhur dina CPU. Masalah sareng maca file tiasa direngsekeun ku ngaksés éta langsung tina bata, tapi ieu henteu salawasna lumaku sareng umumna henteu leres.

  • Ceph teu resep pajeulitna kaleuleuwihan, nu bisa ngabahayakeun dina proyék kalawan 2-4 server, utamana lamun proyék ieu salajengna dijaga. Deui, aya watesan kinerja serius nu maksa urang ngawangun klaster gudang misah, sakumaha kalayan glusterfs.

  • Ngagunakeun hiji server NFS pikeun nerapkeun gudang dibagikeun raises patarosan dina watesan toleransi sesar.

  • s3 mangrupikeun solusi populér anu saé pikeun sababaraha pancén, tapi sanés sistem file, anu ngahususkeun ruang lingkupna.

  • lsyncd. Upami urang parantos ngamimitian nyarioskeun ngeunaan "sistem non-file," maka éta pantes pikeun ngémutan solusi anu populér ieu. Henteu ngan éta teu cocog pikeun bursa dua arah (tapi lamun rék, teras anjeun tiasa), eta oge teu dianggo stably dina sajumlah badag file. A tambahan nice kana sakabeh hal téh nya éta single-threaded. Alesanna aya dina arsitéktur program: éta ngagunakeun inotify pikeun ngawas objék padamelan, anu ditugaskeun nalika ngamimitian sareng nalika rescanning. rsync dipaké salaku medium mindahkeun.

Tutorial: kumaha cara nyebarkeun panyimpenan anu dibagi dumasar kana drbd + ocfs2

Salah sahiji solusi anu paling merenah pikeun kami nyaéta tautan ocfs2+drbd. Ayeuna kami bakal nyarioskeun ka anjeun kumaha anjeun tiasa gancang nyebarkeun panyimpenan anu dibagi pikeun dua server dumasar kana database solusi. Tapi ke heula, saeutik ngeunaan komponén:

DRBD - sistem panyimpen tina distribusi Linux standar anu ngamungkinkeun anjeun pikeun ngayakeun réplikasi data antara server dina blok. Aplikasi utama nyaéta pikeun ngawangun panyimpen anu teu toleran.

OCFS2 - sistem file nu nyadiakeun pamakéan dibagikeun gudang sarua ku sababaraha sistem. Kaasup dina distribusi Linux sareng mangrupikeun modul kernel sareng alat ruang pangguna pikeun damel sareng FS. OCFS2 bisa dipaké teu ngan leuwih DRBD, tapi ogé leuwih iSCSI kalawan sababaraha sambungan. Dina conto urang ngagunakeun DRBD.

Sadaya tindakan dilaksanakeun dina ubuntu server 18.04 dina konfigurasi minimal.

Lengkah 1. Konpigurasikeun DRBD:

Dina file /etc/drbd.d/drbd0.res kami ngajelaskeun alat blok virtual kami /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 - nganggo alat blok anu sami pikeun nyimpen metadata
alat /dev/drbd0 - nganggo /dev/drbd0 salaku jalur ka volume drbd.
disk / dev / vdb1 - pamakéan / dev / vdb1
sinkronisasi {rate 1000M; } - ngagunakeun bandwidth channel gigabit
ngidinan-dua-primaries - pilihan penting anu ngamungkinkeun parobahan ditarima dina dua server primér
sanggeus-sb-0pri, sanggeus-sb-1pri, sanggeus-sb-2pri - pilihan jawab lampah titik nalika splitbrain dideteksi. Langkung rinci tiasa dipendakan dina dokuméntasi.
jadi-primér-on duanana - nyetél kadua titik ka primér.

Dina kasus urang, urang gaduh dua VM anu idéntik, sareng jaringan virtual khusus kalayan throughput 10 gigabit.

Dina conto urang, nami jaringan tina dua titik klaster nyaéta drbd1 sareng drbd2. Pikeun operasi anu leres, anjeun kedah cocog sareng nami sareng alamat IP host dina /etc/hosts.

10.10.10.192 drbd1
10.10.10.193 drbd2

Lengkah 2. Nyetél titik:

Dina duanana server kami ngajalankeun:

drbdadm create-md drbd0

Panyimpen klaster pikeun klaster wéb leutik dumasar kana drbd+ocfs2

modprobe drbd
drbdadm up drbd0
cat /proc/drbd

Urang meunang di handap:

Panyimpen klaster pikeun klaster wéb leutik dumasar kana drbd+ocfs2

Anjeun tiasa ngamimitian singkronisasi. Dina titik kahiji anjeun kedah ngaéksekusi:

drbdadm primary --force drbd0

Hayu urang tingali statusna:

cat /proc/drbd

Panyimpen klaster pikeun klaster wéb leutik dumasar kana drbd+ocfs2

Hebat, sinkronisasi parantos dimimitian. Urang antosan nepi ka ahir tur tingal gambar:

Panyimpen klaster pikeun klaster wéb leutik dumasar kana drbd+ocfs2

Lengkah 3. Mimitian sinkronisasi dina titik kadua:

drbdadm primary --force drbd0

Urang meunang di handap:

Panyimpen klaster pikeun klaster wéb leutik dumasar kana drbd+ocfs2

Ayeuna urang tiasa nyerat ka drbd tina dua server.

Lengkah 4. Pasang jeung ngonpigurasikeun ocfs2.

Urang bakal ngagunakeun konfigurasi anu cukup trivial:

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

Éta kudu ditulis dina /etc/ocfs2/cluster.conf dina duanana titik.

Urang nyieun FS on drbd0 on sagala titik:

mkfs.ocfs2 -L "testVol" /dev/drbd0

Di dieu urang dijieun sistem file kalawan labél testVol on drbd0, ngagunakeun parameter standar.

Panyimpen klaster pikeun klaster wéb leutik dumasar kana drbd+ocfs2

Dina /etc/default/o2cb anjeun kedah nyetél (sapertos dina file konfigurasi kami)

O2CB_ENABLED=true 
O2CB_BOOTCLUSTER=ocfs2cluster 

sareng laksanakeun dina unggal titik:

o2cb register-cluster ocfs2cluster

Teras we hurungkeun sareng tambahkeun sadaya unit anu urang peryogikeun pikeun autorun:

systemctl enable drbd o2cb ocfs2
systemctl start drbd o2cb ocfs2

Sababaraha ieu bakal geus ngajalankeun salila prosés setelan.

Lengkah 5. Tambahkeun titik gunung ka fstab dina duanana titik:

/dev/drbd0 /media/shared ocfs2 defaults,noauto,heartbeat=local 0 0

diréktori /media/dibagikeun eta kudu dijieun sateuacanna.

Di dieu kami nganggo pilihan noauto, anu hartosna filena moal dipasang nalika ngamimitian (Kuring langkung resep masang file jaringan via systemd) sareng denyut jantung = lokal, anu hartosna nganggo jasa denyut jantung dina unggal titik. Aya ogé keteg jajantung global, nu leuwih cocog pikeun klaster badag.

Salajengna anjeun tiasa pasang /media/dibagikeun jeung pariksa sinkronisasi eusi.

Réngsé! Hasilna, urang meunang leuwih atawa kirang gudang lepat-toleran kalawan scalability jeung kinerja santun.

sumber: www.habr.com

Tambahkeun komentar