Storan kluster untuk kluster web kecil berdasarkan drbd+ocfs2

Apa yang akan kita bincangkan:
Cara cepat menggunakan storan kongsi untuk dua pelayan berdasarkan penyelesaian drbd+ocfs2.

Siapa ini akan berguna untuk:
Tutorial akan berguna kepada pentadbir sistem dan sesiapa sahaja yang memilih kaedah pelaksanaan storan atau ingin mencuba penyelesaiannya.

Apakah keputusan yang kami tolak dan mengapa?

Selalunya kita berhadapan dengan situasi di mana kita perlu melaksanakan storan kongsi dengan prestasi baca-tulis yang baik pada kelompok web yang kecil. Kami mencuba pelbagai pilihan untuk melaksanakan storan kongsi untuk projek kami, tetapi hanya sedikit yang dapat memuaskan hati kami pada beberapa penunjuk sekaligus. Sekarang kami akan memberitahu anda mengapa.

  • Glusterfs tidak memuaskan hati kami dengan prestasi membaca dan menulis; terdapat masalah dengan pembacaan serentak sejumlah besar fail, dan terdapat beban yang tinggi pada CPU. Masalah dengan membaca fail boleh diselesaikan dengan mengaksesnya terus dari bata, tetapi ini tidak selalunya terpakai dan secara amnya tidak betul.

  • Ceph tidak menyukai kerumitan yang berlebihan, yang boleh membahayakan projek dengan 2-4 pelayan, terutamanya jika projek itu dikekalkan kemudiannya. Sekali lagi, terdapat had prestasi yang serius yang memaksa kami membina kelompok storan berasingan, seperti glusterfs.

  • Menggunakan satu pelayan NFS untuk melaksanakan storan dikongsi menimbulkan persoalan dari segi toleransi kesalahan.

  • s3 ialah penyelesaian popular yang sangat baik untuk pelbagai tugasan tertentu, tetapi ia bukan sistem fail, yang menyempitkan skopnya.

  • lsyncd. Jika kita sudah mula bercakap tentang "sistem bukan fail," maka ia patut membincangkan penyelesaian popular ini. Bukan sahaja ia tidak sesuai untuk pertukaran dua hala (tetapi jika anda benar-benar mahu, maka anda boleh), ia juga tidak berfungsi secara stabil pada sejumlah besar fail. Tambahan yang bagus untuk keseluruhannya ialah ia adalah satu benang. Sebabnya adalah dalam seni bina program: ia menggunakan inotify untuk memantau objek kerja yang diberikannya pada permulaan dan semasa pengimbasan semula. rsync digunakan sebagai medium pemindahan.

Tutorial: cara menggunakan storan kongsi berdasarkan drbd+ocfs2

Salah satu penyelesaian yang paling mudah untuk kami ialah pautan ocfs2+drbd. Sekarang kami akan memberitahu anda cara anda boleh menggunakan storan dikongsi dengan cepat untuk dua pelayan berdasarkan pangkalan data penyelesaian. Tetapi pertama, sedikit tentang komponen:

DRBD - sistem storan daripada pengedaran Linux standard yang membolehkan anda meniru data antara pelayan dalam blok. Aplikasi utama adalah untuk membina storan tahan kesalahan.

OCFS2 - sistem fail yang menyediakan penggunaan bersama storan yang sama oleh beberapa sistem. Termasuk dalam pengedaran Linux dan merupakan modul kernel dan alatan ruang pengguna untuk bekerja dengan FS. OCFS2 boleh digunakan bukan sahaja melalui DRBD, tetapi juga melalui iSCSI dengan berbilang sambungan. Dalam contoh kami, kami menggunakan DRBD.

Semua tindakan dilakukan pada pelayan ubuntu 18.04 dalam konfigurasi minimum.

Langkah 1. Konfigurasikan DRBD:

Dalam fail /etc/drbd.d/drbd0.res kami menerangkan peranti blok maya 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;
}
}

dalaman meta-cakera β€” gunakan peranti blok yang sama untuk menyimpan metadata
peranti /dev/drbd0 β€” gunakan /dev/drbd0 sebagai laluan ke volum drbd.
cakera /dev/vdb1 - gunakan /dev/vdb1
penyegerak { kadar 1000M; } β€” gunakan jalur lebar saluran gigabit
benarkan-dua-utama - pilihan penting yang membolehkan perubahan diterima pada dua pelayan utama
selepas-sb-0pri, selepas-sb-1pri, selepas-sb-2pri β€” pilihan yang bertanggungjawab untuk tindakan nod apabila splitbrain dikesan. Butiran lanjut boleh didapati dalam dokumentasi.
menjadi-utama-pada kedua-duanya β€” menetapkan kedua-dua nod kepada primer.

Dalam kes kami, kami mempunyai dua VM yang sama sekali, dengan rangkaian maya khusus dengan daya pemprosesan 10 gigabit.

Dalam contoh kami, nama rangkaian dua nod kluster ialah drbd1 dan drbd2. Untuk operasi yang betul, anda perlu memadankan nama dan alamat IP hos dalam /etc/hosts.

10.10.10.192 drbd1
10.10.10.193 drbd2

Langkah 2. Sediakan nod:

Pada kedua-dua pelayan kami menjalankan:

drbdadm create-md drbd0

Storan kluster untuk kluster web kecil berdasarkan drbd+ocfs2

modprobe drbd
drbdadm up drbd0
cat /proc/drbd

Kami mendapat perkara berikut:

Storan kluster untuk kluster web kecil berdasarkan drbd+ocfs2

Anda boleh memulakan penyegerakan. Pada nod pertama anda perlu melaksanakan:

drbdadm primary --force drbd0

Jom tengok status:

cat /proc/drbd

Storan kluster untuk kluster web kecil berdasarkan drbd+ocfs2

Bagus, penyegerakan telah bermula. Kita tunggu sehingga tamat dan lihat gambar:

Storan kluster untuk kluster web kecil berdasarkan drbd+ocfs2

Langkah 3. Mulakan penyegerakan pada nod kedua:

drbdadm primary --force drbd0

Kami mendapat perkara berikut:

Storan kluster untuk kluster web kecil berdasarkan drbd+ocfs2

Sekarang kita boleh menulis kepada drbd dari dua pelayan.

Langkah 4. Pasang dan konfigurasi ocfs2.

Kami akan menggunakan konfigurasi yang agak remeh:

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

Ia perlu ditulis dalam /etc/ocfs2/cluster.conf pada kedua-dua nod.

Kami mencipta FS pada drbd0 pada mana-mana nod:

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

Di sini kami mencipta sistem fail dengan label testVol pada drbd0, menggunakan parameter lalai.

Storan kluster untuk kluster web kecil berdasarkan drbd+ocfs2

Dalam /etc/default/o2cb anda perlu tetapkan (seperti dalam fail konfigurasi kami)

O2CB_ENABLED=true 
O2CB_BOOTCLUSTER=ocfs2cluster 

dan laksanakan pada setiap nod:

o2cb register-cluster ocfs2cluster

Kemudian kita hidupkan dan tambah semua unit yang kita perlukan untuk autorun:

systemctl enable drbd o2cb ocfs2
systemctl start drbd o2cb ocfs2

Sebahagian daripada ini akan berjalan semasa proses persediaan.

Langkah 5. Tambahkan titik lekap pada fstab pada kedua-dua nod:

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

Direktori /media/shared ia mesti dibuat lebih awal.

Di sini kami menggunakan pilihan noauto, yang bermaksud bahawa fail tidak akan dipasang pada permulaan (saya lebih suka memasang fail rangkaian melalui systemd) dan degupan jantung=tempatan, yang bermaksud menggunakan perkhidmatan degupan jantung pada setiap nod. Terdapat juga degupan jantung global, yang lebih sesuai untuk kelompok besar.

Seterusnya anda boleh melekapkan /media/shared dan semak penyegerakan kandungan.

Selesai! Akibatnya, kami mendapat lebih kurang storan tahan kerosakan dengan kebolehskalaan dan prestasi yang baik.

Sumber: www.habr.com

Tambah komen