LINSTORi salvestusruum ja selle integreerimine OpenNebulaga

LINSTORi salvestusruum ja selle integreerimine OpenNebulaga

Mitte nii kaua aega tagasi esitlesid LINBITi poisid oma uut SDS-lahendust - Linstorit. See on täiesti tasuta salvestusruum, mis põhineb tõestatud tehnoloogiatel: DRBD, LVM, ZFS. Linstor ühendab endas lihtsuse ja hästi läbimõeldud arhitektuuri, mis võimaldab saavutada stabiilsust ja üsna muljetavaldavaid tulemusi.

Täna tahaksin sellest veidi rohkem rääkida ja näidata, kui lihtsalt saab seda OpenNebulaga integreerida, kasutades linstor_un - uut draiverit, mille ma spetsiaalselt selleks otstarbeks välja töötasin.

Linstor koos OpenNebulaga võimaldab teil luua kiire ja töökindla pilve, mida saab hõlpsasti oma infrastruktuuris kasutusele võtta.

Linstori arhitektuur

Linstor ei ole iseenesest failisüsteem ega plokkmälu, Linstor on orkestraator, mis pakub abstraktsioonikihti, et automatiseerida köidete loomist LVM-is või ZFS-is ja kopeerida neid DRBD9 abil.

Stereotüüpide murdmine

Aga oota, DRBD? - Miks seda automatiseerida ja kuidas see üldse toimida saab?

Meenutagem minevikku, kui DRBD8 oli väga populaarne. Selle standardkasutus tähendas ühe suure plokkseadme loomist ja selle lõikamist paljudeks väikesteks tükkideks, kasutades sama LVM-i. Omamoodi mdadm RAID-1, kuid võrgu replikatsiooniga.

See lähenemine ei ole ilma puudusteta ja seetõttu on DRBD9 tulekuga muutunud salvestuse ülesehituse põhimõtted, nüüd luuakse iga virtuaalmasina jaoks eraldi DRBD-seade.

Sõltumatu plokkseadme lähenemine võimaldab klastris ruumi paremini ära kasutada ja lisab ka mitmeid lisafunktsioone. Näiteks saate iga sellise seadme jaoks määrata koopiate arvu, nende asukoha ja individuaalsed seaded. Neid on lihtne luua/kustutada, teha hetktõmmiseid, muuta suurust, lubada krüptimist ja palju muud. Väärib märkimist, et DRBD9 säilitab ka kvoorumi, mis väldib lõhenenud aju olukordi.

Ressursid ja taustaprogrammid

Uue plokkseadme loomisel paigutab Linstor klastri erinevatele sõlmedele vajaliku arvu replikaid. Me nimetame iga sellist koopiat DRBD-ressursiks.

Ressursid on kahte tüüpi:

  • Andmeressurss - esindavad DRBD-seadet, mis asub LVM-i või ZFS-i kogumi sõlmes.
    Hetkel on tugi mitmele taustaprogrammile ja nende arv kasvab pidevalt. Toetatakse LVM-i, ThinLVM-i ja ZFS-i. Viimased kaks võimaldavad teil luua ja kasutada hetktõmmiseid.
  • Kettata ressurss - on DRBD-seade, mida hostitakse ilma taustaprogrammita sõlmes, kuid võimaldades seda käsitleda tavalise plokkseadmena, suunatakse kõik lugemis-/kirjutustoimingud ümber andmeressurssidesse. Kettata ressursside lähim analoog on iSCSI LUN.

Igal DRBD ressursil võib olla kuni 8 koopiat ja ainult üks neist saab vaikimisi aktiivne olla esmane, kõik ülejäänud on Kesk- ja nende kasutamine on võimatu seni, kuni on olemas vähemalt üks esmane, st nad lihtsalt kopeerivad andmeid omavahel.

Paigaldades DRBD-seadme süsteemi, muutub see automaatselt esmane, seega võib isegi kettata ressurss DRBD terminoloogias olla esmane.

Miks me siis Linstorit vajame?

Usaldades kõik ressursimahukad ülesanded kernelile, on Linstor sisuliselt tavaline Java rakendus, mis võimaldab DRBD ressursside loomist lihtsalt automatiseerida.
Samal ajal on iga tema loodud ressurss iseseisev DRBD klaster, mis töötab sõltumatult, sõltumata juhttasandi ja muude DRBD ressursside olekust.

Linstor koosneb ainult kahest komponendist:

  • linstor-kontroller - Peamine kontroller, mis pakub API-d ressursside loomiseks ja haldamiseks. Samuti suhtleb see satelliitidega, kontrollib nende vaba ruumi ning saadab töid uute ressursside loomiseks ja kustutamiseks. Töötab ühes eksemplaris ja kasutab andmebaasi, mis võib olla sisemine (H2) või väline (PostgreSQL, MySQL, MariaDB)
  • linstor-satelliit - Installitud kõikidesse salvestussõlmedesse ja annab kontrollerile teavet vaba ruumi kohta ning täidab ka kontrollerilt saadud ülesandeid, et luua ja kustutada nende peale uusi köiteid ja DRBD-seadmeid.

Linstor töötab järgmiste põhikontseptsioonidega:

  • sõlme — füüsiline server, kus luuakse ja kasutatakse DRBD-ressursse.
  • Hoiubassein - LVM- või ZFS-bassein, mis on loodud sõlmes, kuhu DRBD-ressursid paigutatakse. Võimalik on ka kettata kogum – see on bassein, kuhu paigutatakse ainult kettata ressursid.
  • ressursi määratlus - Ressursi määratlus, tegelikult on see prototüüp, mis kirjeldab nime ja kõiki selle omadusi.
  • mahu määratlus — mahu määratlus. Iga ressurss võib koosneda mitmest köitest, igal köitel peab olema suurus.
  • Ressurss - Loodud plokkseadme eksemplar, iga ressurss tuleb paigutada konkreetsesse sõlme ja mõnda salvestusbasseini.

Linstori paigaldus

Soovitan süsteemina kasutada Ubuntut, sest. on tema jaoks olemas valmis PPA:

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

Või Debian, kuhu Linstori saab installida ametlikust Proxmoxi hoidlast:

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

kontroller

Siin on kõik lihtne:

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

Salvestussõlmed

Linuxi kernel tarnitakse praegu koos puusisese kerneli mooduliga DRBD8, kahjuks see meile ei sobi ja peame installima DRBD9:

apt-get install drbd-dkms

Nagu praktika näitab, tekib enamik raskusi just sellest, et süsteemi laaditakse moodul DRBD8, mitte DRBD9. Õnneks on seda lihtne kontrollida, käivitades:

modprobe drbd
cat /proc/drbd

Kui näed versioon: 9 - kõik on hästi, kui versioon: 8 - see tähendab, et midagi läks valesti ja põhjuste väljaselgitamiseks peate astuma täiendavaid samme.

Nüüd installime linstor-satelliit и drbd-utils:

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

Looge klaster

Salvestusbasseinid ja sõlmed

Taustaprogrammina võtame ThinLVM, sest see on kõige lihtsam ja toetab hetktõmmiseid.
Komplekt lvm2, kui te pole seda veel teinud, ja loome ThinLVM-i kogumi kõigis meie salvestussõlmedes:

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

Kõiki edasisi toiminguid saab teha otse kontrolleriga:

Lisame oma sõlmed:

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

Loome salvestusbasseinid:

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

Nüüd kontrollime loodud basseine:

linstor storage-pool list

Kui kõik on õigesti tehtud, peaksime nägema midagi sellist:

+-------------------------------------------------- -------------------------------------------------- ----+ | StoragePool | sõlm | juht | basseini nimi | vaba võimsus | koguvõimsus | Toetab Snapshots | |-------------------------------------------------- -------------------------------------------------- ----| | andmed | sõlm1 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | tõsi | | andmed | sõlm2 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | tõsi | | andmed | sõlm3 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | tõsi | +-------------------------------------------------- -------------------------------------------------- ----+

DRBD ressursid

Proovime nüüd luua oma uut DRBD ressurssi:

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

Kontrollime loodud ressursse:

linstor resource list 

+-------------------------------------------------- -------------------------------------------------- ---+ | sõlm | ressurss | StoragePool | KöideNr | MinorNr | Seadme nimi | Eraldatud | kasutusel | olek | |-------------------------------------------------- -------------------------------------------------- ---| | sõlm1 | müre | andmed | 0 | 1084 | /dev/drbd1084 | 52 KiB | Kasutamata | UpToDate | | sõlm2 | müre | andmed | 0 | 1084 | /dev/drbd1084 | 52 KiB | Kasutamata | UpToDate | +-------------------------------------------------- -------------------------------------------------- ---+

Suurepärane! - näeme, et ressurss loodi kahes esimeses sõlmes, samuti võime proovida luua kettata ressurssi kolmandas:

linstor resource create --diskless node3 myres

Sõlmedel leiate selle seadme alati kui /dev/drbd1084 või /dev/drbd/by-res/myres/0

Linstor töötab nii, täpsemat infot saad aadressilt ametlik dokumentatsioon.

Nüüd räägin sellest, kuidas seda OpenNebulaga integreerida

OpenNebula seadistamine

Ma ei lähe OpenNebula häälestusprotsessi liiga sügavale, sest Kõik sammud on üksikasjalikult kirjeldatud ametlik dokumentatsioon, millele soovitan viidata, räägin ainult OpenNebula integreerimisest Linstoriga.

linstor_un

Selle probleemi lahendamiseks kirjutasin oma draiveri - linstor_un, on see praegu saadaval pistikprogrammina ja tuleb eraldi installida.

Kogu installimine viiakse läbi esiotsa OpenNebula sõlmedes ja see ei nõua arvutussõlmedes täiendavaid toiminguid.

Kõigepealt peame veenduma, et meil on jq и linstor-klient:

apt-get install jq linstor-client

Meeskond linstor node list peaks kuvama sõlmede loendi. Kõik OpenNebula arvutussõlmed tuleb lisada Linstori klastrisse.

Laadige alla ja installige pistikprogramm:

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

Nüüd peame selle lisama OpenNebula konfiguratsiooni, selleks järgime kirjeldatud lihtsaid samme siin.

Seejärel taaskäivitage OpenNebula:

systemctl restart opennebula

Ja lisage meie andmesalved, süsteem:

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

Ja pildipood:

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

  • Parameeter AUTO_PLACE kuvab andmekoopiate arvu, mis luuakse iga uue pildi jaoks OpenNebulas.
  • Parameeter CLONE_MODE näitab täpselt, kuidas pilte uute virtuaalmasinate loomisel kloonitakse, snapshot - loob pildist hetktõmmise ja juurutab hetktõmmise põhjal virtuaalse masina, copy - teeb iga virtuaalmasina pildist täieliku koopia.
  • В BRIDGE_LIST soovitatav on määrata kõik sõlmed, mida kasutatakse kujutiste kloonimise toimingute tegemiseks.

Toetatud valikute täieliku loendi vaatamiseks vt README projekt.

See lõpetab seadistamise ja nüüd saate mõne seadme ametlikult alla laadida OpenNebula turg ja luua sellest virtuaalseid masinaid.

Projekti link:
https://github.com/OpenNebula/addon-linstor_un

Allikas: www.habr.com

Lisa kommentaar