LINSTOR saqlash va uning OpenNebula bilan integratsiyasi

LINSTOR saqlash va uning OpenNebula bilan integratsiyasi

Yaqinda LINBIT yigitlari o'zlarining yangi SDS yechimini taqdim etdilar - Linstor. Bu tasdiqlangan texnologiyalarga asoslangan mutlaqo bepul saqlash: DRBD, LVM, ZFS. Linstor soddalik va yaxshi mo'ljallangan arxitekturani o'zida mujassam etgan, bu sizga barqarorlik va juda ta'sirli natijalarga erishish imkonini beradi.

Bugun men bu haqda biroz batafsilroq gapirib bermoqchiman va uni OpenNebula bilan linstor_un - bu maqsad uchun maxsus ishlab chiqqan yangi drayver yordamida qanchalik oson birlashtirish mumkinligini ko'rsatmoqchiman.

Linstor OpenNebula bilan birgalikda o'z infratuzilmangizda osongina o'rnatilishi mumkin bo'lgan tez va ishonchli bulutni yaratishga imkon beradi.

Linstor arxitekturasi

Linstor fayl tizimi ham, blokli saqlash ham emas, Linstor - bu LVM yoki ZFS-da hajmlarni yaratishni avtomatlashtirish va DRBD9 yordamida ularni takrorlash imkonini beruvchi abstraksiya qatlamini ta'minlovchi orkestr.

Stereotiplarni buzish

Ammo kuting, DRBD? — Nima uchun uni avtomatlashtirish va u qanday ishlashi mumkin?

DRBD8 juda mashhur bo'lgan o'tmishni eslaylik. Uning standart ishlatilishi bitta katta blokli qurilmani yaratish va uni bir xil LVM yordamida ko'plab kichik qismlarga bo'lishdan iborat edi. Bir xil mdadm RAID-1, lekin tarmoq orqali replikatsiya bilan.

Ushbu yondashuv o'zining kamchiliklaridan xoli emas va shuning uchun DRBD9 paydo bo'lishi bilan saqlash dizayni tamoyillari o'zgardi, endi har bir virtual mashina uchun alohida DRBD qurilmasi yaratiladi.

Mustaqil blokli qurilmalar bilan yondashuv klasterdagi bo'sh joydan yaxshiroq foydalanish imkonini beradi, shuningdek, bir qator qo'shimcha funktsiyalarni qo'shadi. Misol uchun, har bir bunday qurilma uchun siz nusxalar sonini, ularning joylashuvini va individual sozlamalarini aniqlashingiz mumkin. Ularni yaratish/oʻchirish, suratga olish, oʻlchamini oʻzgartirish, shifrlashni yoqish va boshqalar oson. Shuni ta'kidlash kerakki, DRBD9 shuningdek, kvorumni qo'llab-quvvatlaydi, bu sizga bo'lingan miya holatlaridan qochish imkonini beradi.

Resurslar va backends

Yangi blok qurilmasini yaratishda Linstor kerakli miqdordagi replikalarni klasterdagi turli tugunlarga joylashtiradi. Biz har bir bunday nusxani DRBD resursi deb ataymiz.

Resurslarning ikki turi mavjud:

  • Ma'lumotlar resursi — LVM yoki ZFS hovuzidagi tugunda joylashgan DRBD qurilmasi.
    Ayni paytda bir nechta backendlarni qo'llab-quvvatlash mavjud va ularning soni doimiy ravishda o'sib bormoqda. LVM, ThinLVM va ZFS uchun qo'llab-quvvatlash mavjud. Oxirgi ikkitasi oniy tasvirlarni yaratish va ulardan foydalanish imkonini beradi.
  • Disksiz manba — bu DRBD qurilmasi boʻlgan tugunga backendsiz joylashtirilgan, lekin uni oddiy blok qurilmasi sifatida koʻrish imkonini beradi; barcha oʻqish/yozish operatsiyalari maʼlumotlar resurslariga yoʻnaltiriladi. Disksiz resurslarga eng yaqin analog iSCSI LUN hisoblanadi.

Har bir DRBD resursi 8 tagacha nusxaga ega bo'lishi mumkin va ulardan faqat bittasi sukut bo'yicha faol bo'lishi mumkin - boshlang'ich, qolgan hamma bo'ladi ikkinchi darajali va hech bo'lmaganda bitta Asosiy mavjud ekan, ulardan foydalanish imkonsiz bo'ladi, ya'ni ular o'zaro ma'lumotlarni shunchaki takrorlaydilar.

DRBD qurilmasini tizimga o'rnatish orqali u avtomatik ravishda bo'ladi boshlang'ich, shuning uchun hatto DRBD terminologiyasida Disksiz resurs ham Asosiy bo'lishi mumkin.

Xo'sh, nima uchun sizga Linstor kerak?

Barcha resurs talab qiladigan vazifalarni yadroga ishonib topshirish orqali Linstor mohiyatan oddiy Java ilovasi boʻlib, DRBD resurslarini yaratishni oson avtomatlashtirish imkonini beradi.
Bundan tashqari, u tomonidan yaratilgan har bir resurs boshqaruv tekisligi holatidan va boshqa DRBD resurslaridan qat'i nazar, mustaqil ishlaydigan mustaqil DRBD klasteri bo'ladi.

Linstor faqat ikkita komponentdan iborat:

  • Linstor-kontroller - Resurslarni yaratish va boshqarish uchun API taqdim etuvchi asosiy kontroller. Shuningdek, u sun'iy yo'ldoshlar bilan aloqa o'rnatadi, ulardagi bo'sh joyni tekshiradi va yangi resurslarni yaratish va o'chirish uchun topshiriqlarni yuboradi. U bitta nusxada ishlaydi va ichki (H2) yoki tashqi (PostgreSQL, MySQL, MariaDB) bo'lishi mumkin bo'lgan ma'lumotlar bazasidan foydalanadi.
  • Linstor-sun'iy yo'ldosh — Barcha saqlash tugunlariga oʻrnatiladi va kontrollerga boʻsh joy haqida maʼlumot beradi, shuningdek, yangi jildlar va ularning ustidagi DRBD qurilmalarini yaratish va oʻchirish uchun kontrollerdan olingan vazifalarni bajaradi.

Linstor quyidagi asosiy tushunchalar bilan ishlaydi:

  • Node — DRBD resurslari yaratiladigan va foydalaniladigan jismoniy server.
  • Saqlash havzasi — DRBD resurslari joylashgan tugunda yaratilgan LVM yoki ZFS hovuzi. Disksiz hovuz ham mumkin - bu faqat disksiz resurslar joylashgan hovuz.
  • Resurs ta'rifi — Resurs ta’rifi mohiyatan nom va uning barcha xususiyatlarini tavsiflovchi prototipdir.
  • Ovoz ta'rifi - Hajmni aniqlash. Har bir resurs bir nechta jilddan iborat bo'lishi mumkin, har bir jildning o'lchami bo'lishi kerak.
  • resurs - Blok qurilmasining yaratilgan namunasi, har bir resurs ma'lum bir tugunga va ba'zi saqlash hovuziga joylashtirilishi kerak.

Linstor o'rnatish

Men Ubuntu'dan tizim sifatida foydalanishni tavsiya qilaman, chunki... u uchun mavjud tayyor PPA:

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

Yoki Debian, bu erda Linstor Proxmox uchun rasmiy ombordan o'rnatilishi mumkin:

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

Controller

Bu erda hamma narsa oddiy:

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

Saqlash tugunlari

Linux yadrosi hozirda daraxt ichidagi yadro moduli bilan birga keladi DRBD8, afsuski, bu bizga mos kelmaydi va biz o'rnatishimiz kerak DRBD9:

apt-get install drbd-dkms

Amaliyot shuni ko'rsatadiki, aksariyat qiyinchiliklar DRBD8 emas, balki DRBD9 moduli tizimga yuklanganligi sababli yuzaga keladi. Yaxshiyamki, buni ishga tushirish orqali tekshirish oson:

modprobe drbd
cat /proc/drbd

Agar ko'rsangiz versiya: 9 - bu hamma narsa yaxshi degani versiya: 8 - bu nimadir noto'g'ri ketdi degan ma'noni anglatadi va siz sabablarini aniqlash uchun qo'shimcha choralar ko'rishingiz kerak.

Endi o'rnatamiz linstor-sun'iy yo'ldosh и drbd-utils:

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

Klaster yarating

Saqlash havzalari va tugunlari

Backend sifatida biz olamiz ThinLVM, chunki u eng oddiy va oniy tasvirlarni qo'llab-quvvatlaydi.
O'rnatish lvm2, agar siz hali buni qilmagan bo'lsangiz, keling, barcha saqlash tugunlarimizda ThinLVM hovuzini yarataylik:

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

Barcha keyingi harakatlar to'g'ridan-to'g'ri boshqaruvchida bajarilishi mumkin:

Keling, tugunlarimizni qo'shamiz:

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

Keling, saqlash hovuzlarini yarataylik:

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

Endi yaratilgan hovuzlarni tekshiramiz:

linstor storage-pool list

Agar hamma narsa to'g'ri bajarilgan bo'lsa, biz quyidagilarni ko'rishimiz kerak:

+------------------------------------------------ ------------------------------------------------- ----+
| StoragePool | Tugun | Haydovchi | PoolName | FreeCapacity | Total Capacity | SupportsSnapshots |
|------------------------------------------------ - ------------------------------------------------- - ---|
| ma'lumotlar | tugun1 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | rost |
| ma'lumotlar | tugun2 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | rost |
| ma'lumotlar | tugun3 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | rost |
+------------------------------------------------ ------------------------------------------------- ----+

DRBD resurslari

Keling, yangi DRBD resursimizni yaratishga harakat qilaylik:

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

Yaratilgan resurslarni tekshiramiz:

linstor resource list 

+------------------------------------------------ ------------------------------------------------- ---+
| Tugun | Resurs | StoragePool | VolumeNr | MinorNr | Qurilma nomi | Ajratilgan | InUse | Davlat |
|------------------------------------------------ - ------------------------------------------------- - --|
| tugun1 | myres | ma'lumotlar | 0 | 1084 | /dev/drbd1084 | 52 KiB | Foydalanilmagan | UpToDate |
| tugun2 | myres | ma'lumotlar | 0 | 1084 | /dev/drbd1084 | 52 KiB | Foydalanilmagan | UpToDate |
+------------------------------------------------ ------------------------------------------------- ---+

Ajoyib! — resurs dastlabki ikkita tugunda yaratilganligini ko‘ramiz, uchinchisida ham disksiz resurs yaratishga harakat qilishimiz mumkin:

linstor resource create --diskless node3 myres

Tugunlarda siz ushbu qurilmani har doim shunday deb topasiz /dev/drbd1084 yoki /dev/drbd/by-res/myres/0

Linstor shunday ishlaydi, siz undan ko'proq ma'lumot olishingiz mumkin rasmiy hujjatlar.

Endi men sizga OpenNebula bilan qanday integratsiya qilishni aytaman

OpenNebula o'rnatilmoqda

Men OpenNebula-ni sozlash jarayoniga chuqur kirmayman, chunki... barcha qadamlar batafsil tavsiflangan rasmiy hujjatlar, sizga murojaat qilishingizni tavsiya qilaman, men sizga faqat OpenNebula-ning Linstor bilan integratsiyasi haqida gapirib beraman.

linstor_un

Ushbu muammoni hal qilish uchun men o'z drayverimni yozdim - linstor_un, u hozirda plagin sifatida mavjud va alohida o'rnatilishi kerak.

Butun o'rnatish OpenNebula frontend tugunlarida amalga oshiriladi va hisoblash tugunlarida qo'shimcha harakatlarni talab qilmaydi.

Avvalo, biz borligiga ishonch hosil qilishimiz kerak jq и linstor-mijoz:

apt-get install jq linstor-client

komanda linstor node list tugunlar ro'yxatini ko'rsatishi kerak. Barcha OpenNebula hisoblash tugunlari Linstor klasteriga qo'shilishi kerak.

Plaginni yuklab oling va o'rnating:

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

Endi biz uni OpenNebula konfiguratsiyasiga qo'shishimiz kerak, buning uchun biz tasvirlangan oddiy qadamlarni bajaramiz shu yerda.

Keyin OpenNebula-ni qayta ishga tushiring:

systemctl restart opennebula

Va bizning ma'lumotlar do'konlarimizni, tizimimizni qo'shing:

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

Va tasvirlar do'koni:

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

  • Parametr AUTO_PLACE OpenNebula'da har bir yangi tasvir uchun yaratiladigan ma'lumotlar nusxalari sonini ko'rsatadi.
  • Parametr CLONE_MODE yangi virtual mashinalarni yaratishda tasvirlar qanday klonlanishini aniq ko'rsatadi, snapshot — tasvirning oniy rasmini yaratadi va oniy rasmdan virtual mashinani joylashtiradi, copy — har bir virtual mashina uchun tasvirning toʻliq nusxasini yaratadi.
  • В BRIDGE_LIST Tasvirni klonlash operatsiyalarini bajarish uchun foydalaniladigan barcha tugunlarni belgilash tavsiya etiladi.

Qo'llab-quvvatlanadigan parametrlarning to'liq ro'yxati uchun qarang README loyiha.

Bu sozlashni tugatadi, endi siz ba'zi jihozlarni rasmiydan yuklab olishingiz mumkin OpenNebula bozori va undan virtual mashinalar yarating.

Loyiha havolasi:
https://github.com/OpenNebula/addon-linstor_un

Manba: www.habr.com

a Izoh qo'shish