LINSTORi salvestus ja selle integreerimine OpenNebulaga

LINSTORi salvestus ja selle integreerimine OpenNebulaga

Hiljuti esitles LINBIT oma uut SDS-lahendust — Linstor. See on tĂ€iesti avatud salvestuslahendus, mis pĂ”hineb usaldusvÀÀrsetel tehnoloogiatel: DRBD, LVM, ZFS. Linstor ĂŒhendab endas lihtsuse ja hĂ€sti lĂ€bi mĂ”eldud arhitektuuri, mis tagab stabiilsuse ja muljetavaldavad tulemused.

TĂ€na tahaksin rÀÀkida sellest natuke lĂ€hemalt ning nĂ€idata, kui lihtne on seda integreerida OpenNebulaga, kasutades linstor_un — uut draiverit, mille olen spetsiaalselt selle eesmĂ€rgi jaoks vĂ€lja töötanud.

Linstor koos OpenNebulaga vÔimaldab luua kiire ja usaldusvÀÀrse pilve, mida saab hÔlpsasti juurutada oma infrastruktuuris.

Linstor arhitektuur

Linstor ei ole iseenesest ei failisĂŒsteem ega plokksalvestus, Linstor on orkestrator, mis pakub abstraktsioonikihi, mis vĂ”imaldab automatiseerida mahute loomist LVM-is vĂ”i ZFS-is ning replitseerimist DRBD9 abil.

Murdame stereotĂŒĂŒpe

Aga oot, DRBD? — Miks seda automatiseerida ja kuidas see ĂŒldse töötab?

Kohustame mĂ”tteid ajas tagasi, mil DRBD8 oli laialdaselt populaarne. Selle tavapĂ€rane kasutamine tĂ€hendas ĂŒhe suure plokiseadmestiku loomist ja selle jagamist paljudeks vĂ€iksemateks tĂŒkkideks, kasutades sama LVM-i. Midagi sarnast mdadm RAID-1, kuid vĂ”rgu replikatsiooniga.

See lĂ€henemine ei ole vaba puudustest, seega DRBD9 saabudes muutusid salvestusprintsiibid. NĂŒĂŒd luuakse iga virtuaalmasina jaoks eraldi DRBD-seade.

Iseseisvate plokiseadmete lĂ€henemine vĂ”imaldab paremini kasutada ruumi klastris ja lisab mitmeid uusi vĂ”imalusi. NĂ€iteks igas sellises seadmes saab mÀÀrata replikate arvu, nende asukoha ja individuaalsed seadistused. Need on kergesti loodavad/keeled sĂ”lmida, snĂ€pshotide tegema, mÔÔtmeid muutma, krĂŒpteerimist aktiveerima ja palju muud. Tuleb mĂ€rkida, et DRBD9 toetab ka kvoorumit, mis aitab vĂ€ltida split-brain olukordi.

Resursid ja tagaplaanid

Uue plokiseadmestiku loomisel paigutab Linstor vajalikud koopiad klastris erinevatele node'idele. Iga sellist koopiat nimetame DRBD-resurssiks.

Resursid on kahte tĂŒĂŒpi:

  • Andme-resurss — on DRBD-seade, mis on paigutatud LVM vĂ”i ZFS basseinile.
    Praegu toetatakse mitmeid taustu ja nende arv kasvab pidevalt. Toetatakse LVM-i, ThinLVM-i ja ZFS-i. Viimased kaks vÔimaldavad luua ja kasutada snapshotsid.
  • Diskless-ressurss — on DRBD-seade, mis on paigutatud sĂ”lme ilma taustata, kuid vĂ”imaldab seda kĂ€sitleda nagu tavalist plokkseadet, kĂ”ik lugemis-/kirjutamistegevused suunatakse andme-ressurssidele. KĂ”ige sarnasem diskless-ressurssidele on iSCSI LUN.

Iga DRBD-ressursil vĂ”ib olla kuni 8 replikati, ja ainult ĂŒks neist vĂ”ib vaikimisi olla aktiivne — Primary, kĂ”ik teised on Secondary ja nende kasutamine on vĂ”imatu, kuni vĂ€hemalt ĂŒks on Primary, st nad lihtsalt replikeerivad andmeid omavahel.

Kui DRBD-seade sĂŒsteemi monteerida, muutub see automaatselt Primary, seega isegi Diskless-ressurss, DRBD terminoloogias, vĂ”ib olla Primary.

Miks on vaja Linstor?

Usaldades kĂ”ik ressursinĂ”udlikud ĂŒlesanded tuumale, esindab Linstor pĂ”himĂ”tteliselt tavalist Java rakendust, mis vĂ”imaldab lihtsalt automatiseerida DRBD-ressursside loomist.
Iga loodud ressurss on iseseisev DRBD-klaster, mis töötab iseseisvalt, sĂ”ltumata control-plane ja ĂŒlejÀÀnud DRBD-resursside seisundist.

Linstor koosneb vaid kahest komponendist:

  • Linstor-controller — Peamine kontroller, mis pakub API-t ressursside loomise ja haldamise jaoks. See suhtub ka satelliitidesse, kontrollides nende vabade kohtade olemasolu, ja saadab ĂŒlesandeid uute ressursside loomiseks ja eemaldamiseks. KĂ€ivitatakse ĂŒhes eksemplaris ja kasutab andmebaasi, mis vĂ”ib olla kas sisemine (H2) vĂ”i vĂ€line (PostgreSQL, MySQL, MariaDB).
  • Linstor-satellite — Paigaldatakse kĂ”ikidele storage-node'idele ja edastab kontrollerile teavet vabade kohtade kohta ning tĂ€idab ĂŒlesandeid, mis on saadud kontrollerilt, uute mahutite ja DRBD-seadmete loomiseks ja eemaldamiseks.

Linstor opereerib jÀrgmiste vÔtmekontseptsioonidega:

  • SĂ”lm — fĂŒĂŒsiline server, millel luuakse ja kasutatakse DRBD-ressursse.
  • Storage Pool — LVM vĂ”i ZFS bassein, mis on loodud sĂ”lmes, kus asuvad DRBD-ressursid. Samuti on vĂ”imalik diskless-bassein — see on bassein, milles asuvad ainult diskless-ressursid.
  • Ressurssi mÀÀratlemine — Ressurssi mÀÀratlemine, see on pĂ”himĂ”tteliselt prototĂŒĂŒp, mis kirjeldab nime ja kĂ”iki selle omadusi.
  • Mahu mÀÀratlemine — Mahu mÀÀratlemine. Iga ressurss vĂ”ib koosneda mitmest mahust, igal mahul peab olema suurus.
  • Ressurss — Loodud plokk-seadmestiku nĂ€htav eksemplar, iga ressurss peab olema mÀÀratud kindlale sĂ”lmele ja mingisse salvestusala.

Linstori seadistamine

SĂŒsteemina soovitan kasutada Ubuntu't, kuna selle jaoks on olemas valmis PPA:

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

VÔi Debian, kus Linstori saab installida Proxmoxi ametlikust 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

Salvestuse sÔlmed

Praegu tarnitakse Linuxi tuumas in-tree moodulit DRBD8, kahjuks ei sobi see meile ja peame installima DRBD9:

apt-get install drbd-dkms

Kogemus nĂ€itab, et enamik raskusi tekib seetĂ”ttu, et sĂŒsteemis on laaditud DRBD8 moodul, mitte DRBD9. Õnneks on seda lihtne kontrollida, tĂ€ites:

modprobe drbd
cat /proc/drbd

Kui nĂ€ete versioon: 9 — tĂ€hendab, et kĂ”ik on korras, kui versioon: 8 — see tĂ€hendab, et midagi lĂ€ks valesti ja peate tegema tĂ€iendavaid samme, et pĂ”hjuseid vĂ€lja selgitada.

NĂŒĂŒd installime linstor-satellite ja drbd-utils:

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

Klastri loomine

Ladustamisreservid ja sÔlmed

Tagaruumina vÔtame ThinLVM, kuna see on kÔige lihtsam ja toetab snapshots.
Installige lvm2, kui te veel pole seda teinud, loome nĂŒĂŒd ThinLVM rezervi kĂ”ikidesse meie ladustamisnĂ”ladesse:

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

KÔiki edasisi samme saab teha otse kontrolleris:

Lisame meie 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 ladustamisreservid:

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 reservide olemasolu:

linstor storage-pool list

Kui kÔik on Ôigesti tehtud, peaksime nÀgema midagi sellist:

+-------------------------------------------------------------------------------------------------------+
| StoragePool | Node  | Driver   | PoolName          | FreeCapacity | TotalCapacity | SupportsSnapshots |
|-------------------------------------------------------------------------------------------------------|
| data        | node1 | LVM_THIN | drbdpool\/thinpool |       64 GiB |        64 GiB | true              |
| data        | node2 | LVM_THIN | drbdpool\/thinpool |       64 GiB |        64 GiB | true              |
| data        | node3 | LVM_THIN | drbdpool\/thinpool |       64 GiB |        64 GiB | true              |
+-------------------------------------------------------------------------------------------------------+

DRBD-ressursid

NĂŒĂŒd proovime luua meie uue DRBD-ressursi:

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

Kontrollime loodud ressursse:

linstor resource list 

+------------------------------------------------------------------------------------------------------+
| Node  | Resource | StoragePool | VolumeNr | MinorNr | DeviceName    | Allocated  | InUse  |    State |
|------------------------------------------------------------------------------------------------------|
| node1 | myres    | data        | 0        | 1084    | \/dev\/drbd1084 | 52 KiB     | Unused | UpToDate |
| node2 | myres    | data        | 0        | 1084    | \/dev\/drbd1084 | 52 KiB     | Unused | UpToDate |
+------------------------------------------------------------------------------------------------------+

SuurepĂ€rane! — nĂ€eme, et ressurss on loodud esimeses kahe nodi, saame proovida luua diskless-ressursi kolmandale:

linstor resource create --diskless node3 myres

Node'idel leiate alati selle seadme nagu /dev/drbd1084 vÔi /dev/drbd/by-res/myres/0

Nii töötab Linstor, lisainformatsiooni leiate ametlikus dokumentatsioonis.

NĂŒĂŒd rÀÀgin, kuidas seda OpenNebulaga integreerida

OpenNebula seadistamine

Ma ei sĂŒvene sĂŒgavale OpenNebula seadistusprotsessi, kuna kĂ”ik sammud on ĂŒksikasjalikult kirjeldatud ametlikus dokumentatsioonis, mille poole soovitan teil pöörduda, rÀÀgin ainult OpenNebula integreerimisest Linstoriga.

linstor_un

Selle ĂŒlesande lahendamiseks olen kirjutanud oma draiveri — linstor_un, mis on praegu saadaval pluginana ja peab olema eraldi installitud.

Kogu installatsioon toimub OpenNebula frontend-node’idel ja ei nĂ”ua tĂ€iendavaid toiminguid compute-node'ide peal.

Esiteks peame veenduma, et me omame jq ja linstor-client:

apt-get install jq linstor-client

Meeskond linstor node list peaks kuvama loendi nodest. KÔik OpenNebula compute-node'id peavad olema Linstor'i klastrisse lisatud.

Laadigem alla ja installime plugina:

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 konfi, selleks tĂ€idame mĂ”ned lihtsad sammud, mis on kirjeldatud siit.

PÀrast seda taaskÀivitame OpenNebula:

systemctl restart opennebula

Ja lisame meie andmehoidlad, sĂŒsteemne:

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 piltide hoidla:

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 nĂ€itab andmekoopia arvu, mis luuakse iga uue pildi jaoks OpenNebulas.
  • Parameeter CLONE_MODE nĂ€itab, kuidas tĂ€pselt kloonitakse pildid, kui luuakse uusi virtuaalmasinaid, snapshot — loob pildist snapshots ja kĂ€ivitab virtuaalmasina snapshotist, copy — loob iga virtuaalmasina jaoks tĂ€ieliku koopia pildist.
  • V BRIDGE_LIST soovitav on nĂ€idata kĂ”iki node'e, mida kasutatakse piltide kopeerimise toimingute jaoks.

TĂ€ielik toetatud parameetrite nimekiri on antud README projekti.

Sellega seadistamine lĂ”peb, nĂŒĂŒd saab ametlikust OpenNebula Marketplace'ist laadida mingit appliance'i ja sellest virtuaalmasinaid luua.

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

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster