Нигоҳдории кластер барои кластерҳои хурд дар асоси drbd+ocfs2

Мо дар бораи он чӣ сӯҳбат хоҳем кард:
Чӣ тавр зуд ҷойгир кардани нигаҳдории муштарак барои ду сервер дар асоси ҳалли drbd+ocfs2.

Ин барои кӣ муфид хоҳад буд:
Дарс барои маъмурони система ва ҳар касе, ки усули татбиқи нигаҳдории худро интихоб мекунад ё мехоҳад, ки ҳалли онро санҷад, муфид хоҳад буд.

Мо кадом карорхоро рад кардем ва чаро?

Аксар вақт мо бо вазъияте дучор мешавем, ки мо бояд нигоҳдории муштаракро бо иҷрои хуби хондан ва навиштан дар кластери хурди веб татбиқ кунем. Мо вариантҳои гуногуни татбиқи нигаҳдории муштарак барои лоиҳаҳои худро санҷидем, аммо шумораи ками онҳо тавонистанд дар як вақт моро аз рӯи якчанд нишондиҳандаҳо қонеъ гардонанд. Ҳоло мо ба шумо мегӯям, ки чаро.

  • Glusterfs моро бо иҷрои хониш ва навиштан қаноатманд накард; дар баробари хондани шумораи зиёди файлҳо мушкилот вуҷуд дошт ва ба CPU сарбории зиёд вуҷуд дошт. Мушкилоти хондани файлҳоро тавассути дастрасӣ ба онҳо мустақиман аз хишт ҳал кардан мумкин аст, аммо ин на ҳама вақт мувофиқ аст ва умуман нодуруст аст.

  • Ба Ceph мураккабии аз ҳад зиёд маъқул набуд, ки метавонад дар лоиҳаҳои дорои 2-4 сервер зараровар бошад, хусусан агар лоиҳа баъдан нигоҳ дошта шавад. Боз ҳам, маҳдудиятҳои ҷиддии иҷроиш вуҷуд доранд, ки моро маҷбур мекунанд, ки кластерҳои нигаҳдории ҷудогона созем, ба мисли glusterfs.

  • Истифодаи як сервери NFS барои татбиқи нигаҳдории муштарак саволҳоро дар робита ба таҳаммулпазирии хатогиҳо ба миён меорад.

  • s3 як ҳалли аълои маъмул барои доираи муайяни вазифаҳост, аммо он системаи файлӣ нест, ки доираи онро танг мекунад.

  • lsyncd. Агар мо аллакай дар бораи "системаҳои файлии ғайрифайлӣ" сӯҳбат карда бошем, пас аз ин ҳалли маъмул гузаштан бамаврид аст. Он на танҳо барои мубодилаи дуҷониба мувофиқ нест (аммо агар шумо дар ҳақиқат мехоҳед, пас шумо метавонед), он инчунин дар шумораи зиёди файлҳо устувор кор намекунад. Иловаи хуб ба тамоми чиз ин аст, ки он як ришта аст. Сабаб дар меъмории барнома аст: он inotify-ро барои назорати объектҳои корӣ истифода мебарад, ки ҳангоми оғозёбӣ ва ҳангоми бознигарии дубора таъин мекунад. rsync ҳамчун воситаи интиқол истифода мешавад.

Дарсӣ: чӣ гуна ҷойгир кардани нигаҳдории муштарак дар асоси drbd+ocfs2

Яке аз роҳҳои мувофиқтарин барои мо пайванд буд ocfs2+drbd. Акнун мо ба шумо мегӯям, ки чӣ тавр шумо метавонед зуд захираи муштаракро барои ду сервер дар асоси пойгоҳи додаҳои ҳалли масъала ҷойгир кунед. Аммо аввал, каме дар бораи ҷузъҳо:

DRBD - системаи нигоҳдорӣ аз тақсимоти стандартии Linux, ки ба шумо имкон медиҳад маълумотро байни серверҳо дар блокҳо такрор кунед. Барномаи асосӣ сохтани анбори ба хатогиҳо тобовар аст.

OCFS2 - системаи файлие, ки истифодаи муштараки як анборро аз ҷониби якчанд система таъмин мекунад. Ба тақсимоти Linux дохил карда шудааст ва як модули ядро ​​ва абзорҳои фазои корбарон барои кор бо 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
syncer {суръат 1000M; } — маҷрои канали гигабитиро истифода баред
иљозат-ду-принтерї - як варианти муҳиме, ки имкон медиҳад тағирот дар ду сервери асосӣ қабул карда шавад
баъд аз-sb-0pri, пас аз-sb-1pri, пас аз-sb-2pri - вариантҳое, ки барои амалҳои гиреҳ ҳангоми ошкор шудани сплитбрейн масъуланд. Тафсилоти бештарро дар ҳуҷҷатҳо пайдо кардан мумкин аст.
дар ҳардуи онҳо асосист — ҳарду гиреҳро ба ибтидоӣ муқаррар мекунад.

Дар ҳолати мо, мо ду VM-и комилан якхела дорем, ки шабакаи махсуси виртуалӣ бо фарохмаҷрои 10 гигабит доранд.

Дар мисоли мо, номҳои шабакаи ду гиреҳи кластер drbd1 ва drbd2 мебошанд. Барои кори дуруст, шумо бояд ба номҳо ва суроғаҳои IP-и ҳостҳо дар /etc/hosts мувофиқат кунед.

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 дар ҳарду гиреҳ.

Мо FS-ро дар drbd0 дар ҳама гиреҳ эҷод мекунем:

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

Дар ин ҷо мо бо истифода аз параметрҳои пешфарз системаи файлиро бо тамғаи testVol дар drbd0 сохтем.

Нигоҳдории кластер барои кластерҳои хурд дар асоси 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, яъне истифодаи хидмати тапиши дил дар ҳар як гиреҳ. Набзи глобалии дил низ вуҷуд дорад, ки барои кластерҳои калон мувофиқтар аст.

Минбаъд шумо метавонед насб кунед /медиа/ муштарак ва ҳамоҳангсозии мундариҷаро тафтиш кунед.

Муҳокима! Дар натиҷа, мо нигоҳдории бештар ё камтар ба хатогиҳо тобовар бо миқёспазирӣ ва иҷрои муносиб мегирем.

Манбаъ: will.com

Илова Эзоҳ