
Hiljuti esitles LINBIT oma uut SDS-lahendust â Linstor. See on tĂ€ielikult avatud salvestus, mille aluseks on usaldusvÀÀrsed tehnoloogiad: DRBD, LVM, ZFS. Linstor ĂŒhendab endas lihtsuse ja hĂ€sti lĂ€bimĂ”eldud arhitektuuri, mis vĂ”imaldab saavutada stabiilsust ja piisavalt muljetavaldavaid tulemusi.
TĂ€na sooviksin rÀÀkida sellest tĂ€psemalt ja nĂ€idata, kui lihtne on seda integreerida OpenNebulaga, kasutades linstor_un â uut draiverit, mille olen spetsiaalselt selleks vĂ€lja töötanud.
Linstor koos OpenNebulaga vÔimaldab luua kiire ja usaldusvÀÀrse pilve, mille saab probleemselt seadistada oma infrastruktuurile.
Linstori arhitektuur
Linstor ei ole iseenesest ei failisĂŒsteem ega plokisalvestus, Linstor on orkestrator, mis pakub abstraktsioonikihti, mis vĂ”imaldab automatiseerida LVM vĂ”i ZFS mahtude loomist ja nende replikatsiooni DRBD9 abil.
Murdame stereotĂŒĂŒpe
Aga oot, DRBD? â Miks seda automatiseerida ja kuidas see ĂŒldse toimib?
MĂ€letagem minevikku, kui DRBD8 oli vĂ€ga populaarne. Selle standardne kasutamine tĂ€hendas ĂŒhe suure plokiseadme loomist ja selle jagamist paljude vĂ€ikeste tĂŒkkideks LVM abil. Justkui mdadm RAID-1, aga replikatsiooniga ĂŒle vĂ”rgu.
Selline lĂ€henemine ei ole ilma puudusteta ning seetĂ”ttu on DRBD9 saabumisega salvestuse ehitamise printsiibid muutunud; nĂŒĂŒd luuakse iga virtuaali jaoks eraldi DRBD-seade.
Iseseisvate plokiseadmete lĂ€henemine vĂ”imaldab paremini Ă€ra kasutada ruumi klastris ja lisab mitmeid tĂ€iendavaid vĂ”imalusi. NĂ€iteks saab iga sellise seadme jaoks mÀÀrata replikate arvu, nende asukoha ja individuaalsed seaded. Neid on lihtne luua/kustutada, teha hetkefotosid, muuta suurust, sisse lĂŒlitada krĂŒpteerimine ja palju muud. TĂ”siselt tuleb mĂ€rkida, et DRBD9 toetab ka kvoorumit, mis aitab vĂ€ltida split-brain olukordi.
Ressursid ja tagaplaanid
Uue plokiseadme loomisel paigutab Linstor vajaliku arvu repliikaid klastris asuvatele erinevatele sÔlmedele. Iga sellist replikat nimetame DRBD-ressursiks.
Resursse on kahte tĂŒĂŒpi:
- Andme-ressurss â esindavad DRBD-seadet, mis asub sĂ”lmes LVM-i vĂ”i ZFS-i puus.
Praegu on toetatud mitmeid taustu ja nende arv kasvab pidevalt. Toetatakse LVM-i, ThinLVM-i ja ZFS-i. Viimased kaks vĂ”imaldavad luua ja kasutada snapshot'e. - Diskless-ressurss â on DRBD-seade, mis on paigutatud sĂ”lmele ilma taustata, kuid vĂ”imaldab sellega ennekuulmatult tegeleda, nagu tavalise plokkseadmestikuga, kĂ”ik lugemise/kirjutamise toimingud suunatakse data-ressurssidele. KĂ”ige lĂ€hem analoog diskless-ressurssidele on iSCSI LUN.
Igal DRBD-ressursil vĂ”ib olla kuni 8 koopiat, ja ainult ĂŒks neist vĂ”ib olla vaikimisi aktiivne â Primary, kĂ”ik teised on Secondary ja nende kasutamine on vĂ”imatu, kuni on vĂ€hemalt ĂŒks Primary, st nad lihtsalt replitseerivad andmeid omavahel.
Kui mountida DRBD-seade sĂŒsteemi, siis see automaatselt muutub Primary, seega vĂ”ib isegi Diskless-ressurss, DRBD-i terminoloogias, olla Primary.
Miks on Linstor vajalik?
Usaldades kĂ”ik ressursienergiatootmise ĂŒlesanded kĂ€rku, esindab Linstor pĂ”himĂ”tteliselt tavalist Java-rakendust, mis vĂ”imaldab hĂ”lpsasti automatiseerida DRBD-ressursside loomist.
Kuid iga loodud ressurss on sÔltumatu DRBD-klaster, mis töötab iseseisvalt, hoolimata control-plane'i ja teiste DRBD-ressursside olekust.
Linstor koosneb kahest komponendist:
- Linstor-controller â Peamine kontroller, mis pakub API-d ressursside loomiseks ja haldamiseks. Ta suhtleb ka satelliitidega, kontrollides vaba ruumi neis ja edastab ĂŒlesandeid uute ressursside loomise ja kustutamise jaoks. 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-sĂ”lmedele ja annab kontrollerile teavet vaba ruumi kohta ning tĂ€idab kontrollerilt saadud ĂŒlesandeid uute mahtude ja DRBD-seadmete loomise ja kustutamise jaoks nende peal.
Linstor tegutseb jÀrgmiste pÔhikontseptsioonide jÀrgi:
- Node â fĂŒĂŒsiline server, kus luuakse ja kasutatakse DRBD-ressursse.
- SĂ€ilitustorn â LVM vĂ”i ZFS bassein, mis on loodud sĂ”lmes, kus asuvad DRBD-ressursid. Samuti on vĂ”imalik diskless-bassein â see on bassein, kus asuvad ainult diskless-ressursid.
- Resource Definition â Ressursi mÀÀratlemine, see on pĂ”himĂ”tteliselt prototĂŒĂŒp, mis kirjeldab nime ja kĂ”iki selle omadusi.
- Mahtude mÀÀratlemine â Mahu mÀÀratlemine. Iga ressursi koostises vĂ”ib olla mitu mahtu, igal mahul peab olema oma suurus.
- Ressurss â Loodud blokkseadmestiku eksemplar, igal ressursil peab olema kindel sĂ”lmed ja ta peab olema mĂ”nes storage pool'is.
Linstori seadistamine
SĂŒsteemi soovitan kasutada Ubuntu, kuna sellele on olemas :
add-apt-repository ppa:linbit/linbit-drbd9-stack
apt-get updateVÔi Debian, kus Linstori saab installida Proxmoxi ametlikust varahoidlast:
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 updateKontroller
Siin on kÔik lihtne:
apt-get install linstor-controller linstor-client
systemctl enable linstor-controller
systemctl start linstor-controllerStorage nodid
Praegu tarnitakse Linuxi tuumas in-tree tuuma moodul DRBD8, kahjuks ei sobi see meile ja peame installima DRBD9:
apt-get install drbd-dkmsPraktika nĂ€itab, et enamik raskusi tekib just seetĂ”ttu, et sĂŒsteemis on laaditud DRBD8 moodul, mitte DRBD9. Ănneks on seda lihtne kontrollida, kĂ€ivitades:
modprobe drbd
cat /proc/drbdKui nĂ€ete version: 9 â siis on kĂ”ik korras, kui version: 8 â siis on midagi valesti lĂ€inud ja peate tegema tĂ€iendavaid samme pĂ”hjuse vĂ€ljaselgitamiseks.
NĂŒĂŒd installime linstor-satellite ja drbd-utils:
apt-get install linstor-satellite drbd-utils
systemctl enable linstor-satellite
systemctl start linstor-satelliteKlasteri loomine
Storage pools ja nodid
Tagasi vÔetava alusena valime ThinLVM, kuna see on kÔige lihtsam ja toetab snapshots.
Installige lvm2, kui te veel seda ei tee, ja loome ThinLVM pool'i kÔigil meie storage nodidel:
sudo vgcreate drbdpool /dev/sdb
sudo lvcreate -L 800G -T drbdpool/thinpoolKÔiki edasisi toiminguid saab teha kontrollimise korral:
Lisa meie nodid:
linstor node create node1 127.0.0.11
linstor node create node2 127.0.0.12
linstor node create node3 127.0.0.13Loome storage pools:
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/thinpoolNĂŒĂŒd kontrollime loodud puule:
linstor storage-pool listKui 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-resurse
NĂŒĂŒd proovime luua meie uut DRBD-resurssi:
linstor resource-definition create myres
linstor volume-definition create myres 1G
linstor resource create myres --auto-place 2Kontrollime 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 esimestel kahel sĂ”lmel, vĂ”ime proovida luua diskless-resurssi kolmandal:
linstor resource create --diskless node3 myresSÔlmedes leiate alati selle seadme nimega /dev/drbd1084 vÔi /dev/drbd/by-res/myres/0
Nii toimib Linstor, rohkem teavet leiate .
NĂŒĂŒd rÀÀgin, kuidas seda integreerida OpenNebulaga
OpenNebula seadistamine
Ma ei sĂŒvene sĂŒgavale OpenNebula seadistamise protsessi, kuna kĂ”ik sammud on detailselt kirjeldatud , millele soovitan teil viidata; rÀÀgin ainult OpenNebula integreerimisest Linstoriga.
linstor_un
Selle ĂŒlesande lahendamiseks kirjutasin oma draiveri â , hetkel on see saadaval plugina kujul ja peab olema eraldi installitud.
Kogu installatsioon toimub OpenNebula frontend sÔlmedes ega nÔua tÀiendavaid toiminguid compute sÔlmedes.
Esiteks peame veenduma, et meil on jq ja linstor-client:
apt-get install jq linstor-clientMeeskond linstor node list peaks vÀljastama sÔlmede loendi. KÔik OpenNebula compute sÔlmed peavad olema Linstor klastrisse lisatud.
Laadime 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-masterNĂŒĂŒd peame selle OpenNebula konfiguratsiooni lisama, selleks jĂ€rgime lihtsaid samme, mis on kirjeldatud .
Peale seda taaskÀivitage OpenNebula:
systemctl restart opennebulaJa lisame meie datastoorid, sĂŒsteemse:
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.confJa piltide salvestamine:
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_PLACEnÀitab, kui palju data-replikate luuakse iga uue pildi jaoks OpenNebulas. - Parameeter
CLONE_MODEnĂ€itab, kuidas tĂ€pselt pilte kloonitakse uute virtuaalmasinate loomisel,snapshotâ loob pildist snapshot'i ja kĂ€ivitab virtuaalmasina sellest snapshot'ist,kopeeridaâ loob iga virtuaalmasina jaoks pildi tĂ€ieliku koopia. - Uues
BRIDGE_LISTsoovitatakse mÀÀrata kÔik noodid, mida kasutatakse piltide kloonimise operatsioonide teostamiseks.
Toetatud parameetrite tÀielik nimekiri on toodud projekti.
Sellega on seadistamine lĂ”petatud, nĂŒĂŒd saab laadida ametlikust mĂ”nda appliance'i ja luua sellest virtuaalmasinaid.
Projekti link:
Allikas: habr.com
