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

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

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

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

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

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

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

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

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

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

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

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

DRBD - стандарт хүргэлтээс эхлэн хадгалах систем Linux, энэ нь серверүүдийн хооронд блок дээр суурилсан өгөгдлийг хуулбарлах боломжийг олгодог. Үүний үндсэн хэрэглээ нь алдаа тэсвэртэй хадгалалтыг бий болгоход оршино.

OCFS2 — нэг хадгалалтын санг олон систем хамтран ашиглах боломжийг олгодог файлын систем. Түгээлтэд багтсан болно Linux Энэ нь файлын системүүдтэй ажиллах цөмийн модуль болон хэрэглэгчийн орон зайн хэрэгслүүдээс бүрдэнэ. 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

DDoS хамгаалалт, VPS VDS сервер бүхий сайтуудад найдвартай хостинг худалдаж аваарай 🔥 DDoS хамгаалалттай, VPS VDS сервертэй найдвартай вэбсайт хостинг худалдаж аваарай | ProHoster