drbd+ocfs2 дээр суурилсан жижиг вэб кластерт зориулсан кластер хадгалах сан

Бид юу ярих вэ:
drbd+ocfs2 шийдэл дээр тулгуурлан хоёр серверт зориулсан хуваалцсан хадгалах санг хэрхэн хурдан байршуулах вэ.

Энэ нь хэнд ашигтай вэ:
Энэхүү заавар нь системийн администраторууд болон хадгалалтын хэрэгжүүлэх аргыг сонгосон эсвэл шийдлийг туршиж үзэхийг хүссэн хэн бүхэнд хэрэгтэй болно.

Бид ямар шийдвэрээс татгалзсан бэ, яагаад?

Жижиг вэб кластер дээр унших, бичих чадвар сайтай хуваалцсан санах ойг хэрэгжүүлэх шаардлагатай нөхцөл байдал ихэвчлэн тулгардаг. Бид төслүүдийнхээ дундын хадгалах санг хэрэгжүүлэх янз бүрийн хувилбаруудыг туршиж үзсэн боловч цөөхөн нь хэд хэдэн үзүүлэлтээр нэгэн зэрэг сэтгэл хангалуун байж чадсан. Одоо бид яагаад гэдгийг танд хэлэх болно.

  • Glusterfs нь унших, бичих чадвараараа биднийг хангаагүй, олон тооны файлуудыг нэгэн зэрэг уншихад асуудал гарч, CPU дээр ачаалал ихтэй байсан. Файлуудыг уншихтай холбоотой асуудлыг тоосгоноос шууд хандах замаар шийдэж болох боловч энэ нь үргэлж хэрэглэгдэхгүй бөгөөд ерөнхийдөө буруу юм.

  • Цеф хэт нарийн төвөгтэй байдалд дургүй байсан бөгөөд энэ нь 2-4 сервертэй төслүүдэд, ялангуяа төслийг дараа нь засварлаж байгаа тохиолдолд хор хөнөөл учруулж болзошгүй юм. Дахин хэлэхэд, glusterfs-тэй адил тусдаа хадгалах кластеруудыг бий болгоход хүргэдэг гүйцэтгэлийн ноцтой хязгаарлалтууд байдаг.

  • Хуваалцсан санах ойг хэрэгжүүлэхийн тулд нэг NFS серверийг ашиглах нь алдааны хүлцлийн талаар асуулт үүсгэдэг.

  • s3 нь тодорхой хэмжээний даалгавруудыг гүйцэтгэх маш сайн түгээмэл шийдэл боловч энэ нь файлын систем биш бөгөөд түүний хамрах хүрээг нарийсгадаг.

  • lsyncd. Хэрэв бид "файлын бус системүүд"-ийн талаар аль хэдийн ярьж эхэлсэн бол энэ түгээмэл шийдлийг авч үзэх нь зүйтэй юм. Энэ нь зөвхөн хоёр талын солилцоонд тохиромжгүй төдийгүй (хэрэв та үнэхээр хүсч байвал болно), энэ нь олон тооны файл дээр тогтвортой ажиллахгүй. Бүх зүйлд сайхан нэмэлт нь нэг урсгалтай байдаг. Үүний шалтгаан нь програмын архитектурт байгаа юм: энэ нь эхлүүлэх болон дахин хайлт хийх үед ажлын объектуудыг хянахын тулд inotify ашигладаг. rsync-ийг дамжуулагч болгон ашигладаг.

Заавар: drbd+ocfs2 дээр суурилсан хуваалцсан хадгалах санг хэрхэн ашиглах талаар

Бидний хувьд хамгийн тохиромжтой шийдлүүдийн нэг бол холбоос байв ocfs2+drbd. Одоо бид шийдлийн мэдээллийн санд тулгуурлан хоёр серверт зориулж хуваалцсан хадгалах санг хэрхэн хурдан байршуулахыг танд хэлэх болно. Гэхдээ эхлээд бүрэлдэхүүн хэсгүүдийн талаар бага зэрэг:

DRBD - серверүүдийн хооронд өгөгдлийг блок болгон хуулбарлах боломжийг олгодог стандарт Linux түгээлтийн хадгалах систем. Гол хэрэглээ нь алдаатай санах ойг бий болгох явдал юм.

OCFS2 - нэг санах ойг хэд хэдэн систем хамтран ашиглах боломжийг олгодог файлын систем. Линукс түгээлтэд багтсан бөгөөд FS-тэй ажиллахад зориулсан цөмийн модуль болон хэрэглэгчийн орон зайн хэрэгсэл юм. OCFS2 нь зөвхөн DRBD дээр төдийгүй олон холболттой iSCSI дээр ашиглагдах боломжтой. Бидний жишээн дээр бид DRBD ашигладаг.

Бүх үйлдлийг ubuntu сервер 18.04 дээр хамгийн бага тохиргоогоор гүйцэтгэдэг.

Алхам 1. DRBD-г тохируулах:

/etc/drbd.d/drbd0.res файлд бид виртуал блок төхөөрөмж /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;
}
}

дотоод мета диск — мета өгөгдлийг хадгалахын тулд ижил блок төхөөрөмжийг ашиглах
төхөөрөмж /dev/drbd0 — /dev/drbd0-г drbd эзлэхүүний зам болгон ашигла.
диск /dev/vdb1 - /dev/vdb1 ашиглах
синхрончлол { хувь 1000M; } — гигабит сувгийн зурвасын өргөнийг ашиглах
зөвшөөрөх-хоёр үндсэн - хоёр үндсэн сервер дээр өөрчлөлтийг хүлээн авах боломжийг олгодог чухал сонголт
дараа-sb-0pri, дараа-sb-1pri, дараа-sb-2pri - хуваагдмал тархи илэрсэн үед зангилааны үйлдлийг хариуцах сонголтууд. Дэлгэрэнгүй мэдээллийг баримтаас олж болно.
аль алинд нь үндсэн-болно — хоёр зангилааг анхдагч болгож тохируулна.

Манай тохиолдолд бид 10 гигабит дамжуулах хүчин чадалтай тусгай виртуал сүлжээтэй, яг адилхан хоёр VM-тэй.

Бидний жишээн дээр кластерийн хоёр зангилааны сүлжээний нэр нь drbd1 ба drbd2 юм. Зөв ажиллахын тулд та /etc/hosts доторх хостуудын нэр, IP хаягтай таарах хэрэгтэй.

10.10.10.192 drbd1
10.10.10.193 drbd2

Алхам 2. Зангилаа тохируулах:

Бид хоёр сервер дээр ажилладаг:

drbdadm create-md drbd0

drbd+ocfs2 дээр суурилсан жижиг вэб кластерт зориулсан кластер хадгалах сан

modprobe drbd
drbdadm up drbd0
cat /proc/drbd

Бид дараахь зүйлийг авна.

drbd+ocfs2 дээр суурилсан жижиг вэб кластерт зориулсан кластер хадгалах сан

Та синхрончлолыг эхлүүлж болно. Эхний зангилаа дээр та дараахийг гүйцэтгэх хэрэгтэй:

drbdadm primary --force drbd0

Статусыг харцгаая:

cat /proc/drbd

drbd+ocfs2 дээр суурилсан жижиг вэб кластерт зориулсан кластер хадгалах сан

Гайхалтай, синхрончлол эхэллээ. Бид эцэс хүртэл хүлээж, зургийг харна уу:

drbd+ocfs2 дээр суурилсан жижиг вэб кластерт зориулсан кластер хадгалах сан

Алхам 3. Хоёр дахь зангилаа дээр синхрончлолыг эхлүүлнэ үү:

drbdadm primary --force drbd0

Бид дараахь зүйлийг авна.

drbd+ocfs2 дээр суурилсан жижиг вэб кластерт зориулсан кластер хадгалах сан

Одоо бид хоёр серверээс drbd руу бичиж болно.

Алхам 4. ocfs2-г суулгаж тохируулна уу.

Бид маш энгийн тохиргоог ашиглах болно:

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

Үүнийг бичих хэрэгтэй /etc/ocfs2/cluster.conf хоёр зангилаа дээр.

Бид дурын зангилаа дээр drbd0 дээр FS үүсгэдэг:

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

Энд бид анхдагч параметрүүдийг ашиглан drbd0 дээр testVol гэсэн шошготой файлын системийг үүсгэсэн.

drbd+ocfs2 дээр суурилсан жижиг вэб кластерт зориулсан кластер хадгалах сан

/etc/default/o2cb дотор та тохируулах хэрэгтэй (манай тохиргооны файлын адил)

O2CB_ENABLED=true 
O2CB_BOOTCLUSTER=ocfs2cluster 

болон зангилаа бүр дээр гүйцэтгэнэ:

o2cb register-cluster ocfs2cluster

Дараа нь бид асааж, автоматаар ажиллуулахад шаардлагатай бүх нэгжийг нэмнэ:

systemctl enable drbd o2cb ocfs2
systemctl start drbd o2cb ocfs2

Эдгээрийн зарим нь тохиргоо хийх явцад аль хэдийн ажиллаж байх болно.

Алхам 5. Хоёр зангилаа дээрх fstab-д холбох цэгүүдийг нэмнэ үү:

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

Лавлах /хэвлэл мэдээлэл/хуваалцсан үүнийг урьдчилан бий болгох ёстой.

Энд бид noauto тохируулгуудыг ашигладаг бөгөөд энэ нь файлыг эхлүүлэх үед холбохгүй (би systemd-ээр сүлжээний файлуудыг холбохыг илүүд үздэг) болон heartbeat=local гэсэн үг бөгөөд энэ нь зангилаа бүр дээр зүрхний цохилтын үйлчилгээг ашиглах гэсэн үг юм. Мөн дэлхийн зүрхний цохилт байдаг бөгөөд энэ нь том кластерт илүү тохиромжтой байдаг.

Дараа нь та суулгаж болно /хэвлэл мэдээлэл/хуваалцсан мөн агуулгын синхрончлолыг шалгана уу.

Дууссан! Үүний үр дүнд бид илүү их эсвэл бага хэмжээний алдааг тэсвэрлэх чадвартай, өргөтгөх боломжтой, зохистой гүйцэтгэлтэй хадгалалтыг авдаг.

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх