Нигоҳдории LINSTOR ва ҳамгироии он бо OpenNebula

Нигоҳдории LINSTOR ва ҳамгироии он бо OpenNebula

Чанде пеш, бачаҳо аз LINBIT ҳалли нави SDS - Linstor -ро пешниҳод карданд. Ин як нигаҳдории комилан ройгон аст, ки дар асоси технологияҳои исботшуда: DRBD, LVM, ZFS. Linstor соддаӣ ва меъмории хуб тарҳрезиро муттаҳид мекунад, ки ба шумо имкон медиҳад субот ва натиҷаҳои хеле таъсирбахш ба даст оред.

Имрӯз ман мехоҳам дар бораи он каме муфассалтар сӯҳбат кунам ва нишон диҳам, ки чӣ тавр онро бо OpenNebula бо истифода аз linstor_un - як драйвери нав, ки ман махсус барои ин мақсад таҳия кардаам, ҳамгиро кардан мумкин аст.

Linstor дар якҷоягӣ бо OpenNebula ба шумо имкон медиҳад, ки абри зуд ва боэътимод созед, ки онро дар инфрасохтори худ ба осонӣ ҷойгир кардан мумкин аст.

Архитектураи Linstor

Linstor на системаи файлӣ аст ва на нигаҳдории блок, Linstor як оркестрест, ки қабати абстраксияро таъмин мекунад, ки ба шумо имкон медиҳад, ки эҷоди ҳаҷмҳоро дар LVM ё ZFS автоматӣ кунед ва онҳоро бо DRBD9 такрор кунед.

Шикастани стереотипҳо

Аммо интизор шавед, DRBD? — Чаро онро автоматй кунонда, хатто чй тавр кор карда метавонад?

Биёед гузаштаро ба ёд орем, вақте ки DRBD8 хеле маъмул буд. Истифодаи стандартии он эҷод кардани як дастгоҳи блоки калон ва буридани он ба қисмҳои зиёди хурд бо истифода аз ҳамон LVM иборат буд. Як навъ mdadm RAID-1, вале бо такрорӣ тавассути шабака.

Ин равиш аз нуқсонҳои худ холӣ нест ва аз ин рӯ, бо пайдоиши DRBD9, принсипҳои тарҳрезии нигаҳдорӣ тағир ёфтанд; ҳоло барои ҳар як мошини виртуалӣ дастгоҳи алоҳидаи DRBD сохта шудааст.

Муносибат бо дастгоҳҳои блоки мустақил имкон медиҳад, ки фазо дар кластер беҳтар истифода шавад ва инчунин як қатор хусусиятҳои иловагиро илова мекунад. Масалан, барои ҳар як чунин дастгоҳ шумо метавонед шумораи репликаҳо, ҷойгиршавии онҳо ва танзимоти инфиродиро муайян кунед. Онҳоро эҷод кардан/нест кардан, аксбардорӣ кардан, андозаи тағир додани андоза, фаъол кардани рамзгузорӣ ва ғайра осон аст. Қобили зикр аст, ки DRBD9 инчунин кворумро дастгирӣ мекунад, ки ба шумо имкон медиҳад, ки аз ҳолатҳои ҷудошавии майна канорагирӣ кунед.

Захираҳо ва пуштибонҳо

Ҳангоми сохтани дастгоҳи нави блок, Linstor миқдори зарурии репликаҳоро дар гиреҳҳои гуногуни кластер ҷойгир мекунад. Мо ҳар як чунин нусхаро манбаи DRBD меномем.

Ду намуди захираҳо вуҷуд доранд:

  • Манбаи маълумот — дастгоҳи DRBD мебошанд, ки дар гиреҳ дар ҳавзи LVM ё ZFS ҷойгиранд.
    Дар айни замон якчанд пуштибонҳо дастгирӣ карда мешаванд ва шумораи онҳо мунтазам меафзояд. Дастгирии LVM, ThinLVM ва ZFS мавҷуд аст. Ду охирин ба шумо имкон медиҳанд, ки аксҳоро эҷод ва истифода баред.
  • Манбаи бе диск — дастгоҳи DRBD аст, ки дар гиреҳ бе пуштибон ҷойгир шудааст, аммо имкон медиҳад, ки он ҳамчун як дастгоҳи блоки муқаррарӣ баррасӣ шавад; ҳама амалиёти хондан/навиштан ба захираҳои додаҳо равона карда мешаванд. Наздиктарин аналоги захираҳои бе диск iSCSI LUN мебошад.

Ҳар як манбаи DRBD метавонад то 8 нусха дошта бошад ва танҳо яке аз онҳо метавонад бо нобаёнӣ фаъол бошад - ибтидоии, ҳама дигарон хоҳанд буд миёна ва истифодаи онҳо имконнопазир хоҳад буд, то он даме, ки ҳадди аққал як ибтидоӣ вуҷуд дорад, яъне онҳо танҳо маълумотро байни худ такрор мекунанд.

Бо насб кардани дастгоҳи DRBD ба система, он ба таври худкор мешавад ибтидоии, Ҳамин тариқ, ҳатто як манбаи Бедиск, бо истилоҳоти DRBD, метавонад ибтидоӣ бошад.

Пас чаро ба шумо Linstor лозим аст?

Бо супоридани ҳама вазифаҳои захираҳои серталаб ба ядро, Linstor аслан як барномаи муқаррарии Java мебошад, ки ба шумо имкон медиҳад эҷоди захираҳои DRBD ба осонӣ автоматӣ кунед.
Гузашта аз ин, ҳар як манбаи эҷодкардаи ӯ як кластери мустақили DRBD хоҳад буд, ки новобаста аз ҳолати ҳавопаймои идоракунӣ ва дигар захираҳои DRBD мустақилона амал мекунад.

Linstor танҳо аз ду ҷузъ иборат аст:

  • Линстор-назораткунанда - Назоратчии асосӣ, ки API барои эҷод ва идоракунии захираҳоро таъмин мекунад. Он инчунин бо моҳвораҳо муошират мекунад, фазои холии онҳоро тафтиш мекунад ва вазифаҳоро барои эҷод ва нест кардани захираҳои нав мефиристад. Он дар як мисол кор мекунад ва пойгоҳи додаҳоро истифода мебарад, ки метавонад дохилӣ (H2) ё беруна бошад (PostgreSQL, MySQL, MariaDB)
  • Linstor - моҳвора — Дар ҳама гиреҳҳои нигаҳдорӣ насб карда шудааст ва ба контроллер маълумот дар бораи фазои холӣ медиҳад ва инчунин вазифаҳои аз контроллер гирифташударо барои эҷод ва нест кардани ҷилди нав ва дастгоҳҳои DRBD дар болои онҳо иҷро мекунад.

Linstor бо мафҳумҳои асосии зерин амал мекунад:

  • Нод — сервери физикӣ, ки дар он захираҳои DRBD сохта ва истифода мешаванд.
  • Ҳавзи нигоҳдорӣ - Ҳавзи LVM ё ZFS, ки дар гиреҳе, ки дар он захираҳои DRBD ҷойгир мешаванд, сохта шудааст. Ҳавзи бидуни диск низ имконпазир аст - ин ҳавзест, ки дар он танҳо захираҳои бедиск ҷойгир карда мешаванд.
  • Таърифи захираҳо — Таърифи ресурс аслан прототипест, ки ном ва тамоми хосиятҳои онро тавсиф мекунад.
  • Таърифи ҳаҷм - Таърифи ҳаҷм. Ҳар як манбаъ метавонад аз якчанд ҷилд иборат бошад, ҳар як ҷилди бояд андоза дошта бошад.
  • захираҳо - Намунаи сохташудаи дастгоҳи блок, ҳар як манбаъ бояд дар гиреҳи мушаххас ва дар баъзе ҳавзи нигоҳдорӣ ҷойгир карда шавад.

Насби Linstor

Ман тавсия медиҳам, ки Ubuntu ҳамчун система истифода барад, зеро ... барои вай вуҷуд дорад PPA тайёр:

add-apt-repository ppa:linbit/linbit-drbd9-stack
apt-get update

Ё Debian, ки дар он Linstor-ро аз анбори расмии Proxmox насб кардан мумкин аст:

wget -O- https://packages.linbit.com/package-signing-pubkey.asc | apt-key add -
PVERS=5 && echo "deb http://packages.linbit.com/proxmox/ proxmox-$PVERS drbd-9.0" > 
    /etc/apt/sources.list.d/linbit.list
apt-get update

нозир

Дар ин ҷо ҳама чиз оддӣ аст:

apt-get install linstor-controller linstor-client
systemctl enable linstor-controller
systemctl start linstor-controller

Гиреҳҳои нигаҳдорӣ

Ядрои Linux айни замон бо модули ядрои дохили дарахт фиристода мешавад DRBD8, мутаассифона, он ба мо мувофиқат намекунад ва мо бояд насб кунем DRBD9:

apt-get install drbd-dkms

Тавре ки таҷриба нишон медиҳад, аксари мушкилот маҳз аз он сабаб ба миён меоянд, ки модули DRBD8 ба система бор карда шудааст, на DRBD9. Хушбахтона, инро тавассути иҷро кардан осон аст:

modprobe drbd
cat /proc/drbd

Агар бинед нусхаи: 9 - ин маънои онро дорад, ки ҳама чиз хуб аст, агар нусхаи: 8 - ин маънои онро дорад, ки чизе хато кардааст ва шумо бояд барои муайян кардани сабабҳо чораҳои иловагӣ андешед.

Акнун биёед насб кунем линстор-спутник и drbd-utils:

apt-get install linstor-satellite drbd-utils
systemctl enable linstor-satellite
systemctl start linstor-satellite

Кластер эҷод кунед

Ҳавзҳо ва гиреҳҳои нигоҳдорӣ

Ҳамчун пуштибон мо мегирем ThinLVM, зеро он соддатарин аст ва аксҳоро дастгирӣ мекунад.
Set lvm2, агар шумо ин корро накарда бошед, биёед дар ҳама гиреҳҳои нигаҳдории мо ҳавзи ThinLVM эҷод кунем:

sudo vgcreate drbdpool /dev/sdb
sudo lvcreate -L 800G -T drbdpool/thinpool

Ҳама амалҳои минбаъдаро бевосита дар контроллер иҷро кардан мумкин аст:

Биёед гиреҳҳои худро илова кунем:

linstor node create node1 127.0.0.11
linstor node create node2 127.0.0.12
linstor node create node3 127.0.0.13

Биёед ҳавзҳои нигоҳдорӣ эҷод кунем:

linstor storage-pool create lvmthin node1 data drbdpool/thinpool
linstor storage-pool create lvmthin node2 data drbdpool/thinpool
linstor storage-pool create lvmthin node3 data drbdpool/thinpool

Акнун биёед ҳавзҳои сохташударо тафтиш кунем:

linstor storage-pool list

Агар ҳама чиз дуруст анҷом дода шуда бошад, пас мо бояд чизеро бинем:

+------------------------------------------------ ---------------------------------- ----+
| StoragePool | гиреҳ | Ронанда | Номи ҳавз | FreeCapacity | TotalCapacity | SupportsSnapshots |
|------------------------------------------------ -------------------------------------------------- ---|
| маълумот | гиреҳ1 | LVM_THIN | drbdpool/thinpool | 64 ГБ | 64 ГБ | ҳақиқӣ |
| маълумот | гиреҳ2 | LVM_THIN | drbdpool/thinpool | 64 ГБ | 64 ГБ | ҳақиқӣ |
| маълумот | node3 | LVM_THIN | drbdpool/thinpool | 64 ГБ | 64 ГБ | ҳақиқӣ |
+------------------------------------------------ ---------------------------------- ----+

Захираҳои DRBD

Акнун биёед кӯшиш кунем, ки манбаи нави DRBD-и худро эҷод кунем:

linstor resource-definition create myres
linstor volume-definition create myres 1G
linstor resource create myres --auto-place 2

Биёед захираҳои эҷодшударо тафтиш кунем:

linstor resource list 

+------------------------------------------------ ---------------------------------- ---+
| гиреҳ | Сарчашма | StoragePool | VolumeNr | MinorNr | Номи дастгоҳ | Чудо карда шудааст | InUse | Давлат |
|------------------------------------------------ -------------------------------------------------- --|
| гиреҳ1 | майрес | маълумот | 0 | 1084 | /dev/drbd1084 | 52 КБ | истифоданашуда | UpToDate |
| гиреҳ2 | майрес | маълумот | 0 | 1084 | /dev/drbd1084 | 52 КБ | истифоданашуда | UpToDate |
+------------------------------------------------ ---------------------------------- ---+

Аҷоиб! — мо мебинем, ки захира дар ду гиреҳи аввал сохта шудааст, мо инчунин метавонем кӯшиш кунем, ки дар сеюм манбаи бе диск эҷод кунем:

linstor resource create --diskless node3 myres

Дар гиреҳҳо шумо ҳамеша ин дастгоҳро ҳамчун /dev/drbd1084 ё /dev/drbd/by-res/myres/0

Linstor ҳамин тавр кор мекунад, шумо метавонед маълумоти бештарро аз он гиред ҳуҷҷатҳои расмӣ.

Ҳоло ман ба шумо мегӯям, ки чӣ гуна онро бо OpenNebula ҳамҷоя кардан мумкин аст

Танзими OpenNebula

Ман ба раванди танзимкунии OpenNebula чандон амиқ намеравам, зеро... ҳама қадамҳо дар муфассал тавсиф шудаанд ҳуҷҷатҳои расмӣ, ки ман ба шумо тавсия медиҳам, ки тамос гиред, ман танҳо ба шумо дар бораи ҳамгироии OpenNebula бо Linstor мегӯям.

linstor_un

Барои ҳалли ин мушкилот ман ронандаи худро навиштам - linstor_un, он дар айни замон ҳамчун плагин дастрас аст ва бояд алоҳида насб карда шавад.

Тамоми насб дар гиреҳҳои пешинаи OpenNebula анҷом дода мешавад ва дар гиреҳҳои ҳисобкунӣ амалҳои иловагиро талаб намекунад.

Пеш аз ҳама, мо бояд боварӣ ҳосил кунем, ки мо дорем jq и linstor-муштарӣ:

apt-get install jq linstor-client

гурӯҳ linstor node list бояд рӯйхати гиреҳҳоро нишон диҳад. Ҳама гиреҳҳои ҳисоббарории OpenNebula бояд ба кластери Linstor илова карда шаванд.

Плагинро зеркашӣ ва насб кунед:

curl -L https://github.com/OpenNebula/addon-linstor_un/archive/master.tar.gz | tar -xzvf - -C /tmp

mv /tmp/addon-linstor_un-master/vmm/kvm/* /var/lib/one/remotes/vmm/kvm/

mkdir -p /var/lib/one/remotes/etc/datastore/linstor_un
mv /tmp/addon-linstor_un-master/datastore/linstor_un/linstor_un.conf /var/lib/one/remotes/etc/datastore/linstor_un/linstor_un.conf

mv /tmp/addon-linstor_un-master/datastore/linstor_un /var/lib/one/remotes/datastore/linstor_un
mv /tmp/addon-linstor_un-master/tm/linstor_un /var/lib/one/remotes/tm/linstor_un

rm -rf /tmp/addon-linstor_un-master

Ҳоло мо бояд онро ба конфигуратсияи OpenNebula илова кунем, барои ин мо қадамҳои оддии тавсифшударо иҷро мекунем дар ин ҷо.

Сипас OpenNebula-ро аз нав оғоз кунед:

systemctl restart opennebula

Ва захираҳои додаҳои мо, системаро илова кунед:

cat > system-ds.conf <<EOT
NAME="linstor-system"
TYPE="SYSTEM_DS"
STORAGE_POOL="data"
AUTO_PLACE="2"
CLONE_MODE="snapshot"
CHECKPOINT_AUTO_PLACE="1"
BRIDGE_LIST="node1 node2 node3"
TM_MAD="linstor_un"
EOT

onedatastore create system-ds.conf

Ва мағозаи тасвирҳо:

cat > images-ds.conf <<EOT
NAME="linstor-images"
TYPE="IMAGE_DS"
STORAGE_POOL="data"
AUTO_PLACE="2"
BRIDGE_LIST="node1 node2 node3"
DISK_TYPE="BLOCK"
DS_MAD="linstor_un"
TM_MAD="linstor_un"
EOT

onedatastore create images-ds.conf

  • Параметр AUTO_PLACE шумораи нусхаҳои маълумотро, ки барои ҳар як тасвири нав дар OpenNebula сохта мешаванд, нишон медиҳад.
  • Параметр CLONE_MODE аниқ нишон медиҳад, ки тасвирҳо ҳангоми сохтани мошинҳои нави виртуалӣ чӣ гуна клон карда мешаванд, snapshot — акси тасвирро эҷод мекунад ва мошини виртуалиро аз аксбардорӣ ҷойгир мекунад, copy — нусхаи пурраи тасвирро барои ҳар як мошини виртуалӣ месозад.
  • В BRIDGE_LIST Тавсия дода мешавад, ки ҳамаи гиреҳҳоеро, ки барои иҷрои амалиёти клонкунии тасвир истифода мешаванд, муайян кунед.

Барои рӯйхати пурраи параметрҳои дастгирӣ, нигаред README лоиҳа.

Ин танзимотро ба анҷом мерасонад, акнун шумо метавонед ягон дастгоҳро аз расмӣ зеркашӣ кунед Бозори OpenNebula ва аз он мошинҳои виртуалӣ эҷод кунед.

Истиноди лоиҳа:
https://github.com/OpenNebula/addon-linstor_un

Манбаъ: will.com

Илова Эзоҳ