LINSTORi salvestus ja selle integreerimine OpenNebulaga

LINSTORi salvestus ja selle integreerimine OpenNebulaga

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 valmis PPA:

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

VÔ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 update

Kontroller

Siin on kÔik lihtne:

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

Storage nodid

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

apt-get install drbd-dkms

Praktika 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/drbd

Kui 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-satellite

Klasteri 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/thinpool

KÔ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.13

Loome 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/thinpool

NĂŒĂŒd kontrollime loodud puule:

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-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 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 esimestel kahel sĂ”lmel, vĂ”ime proovida luua diskless-resurssi kolmandal:

linstor resource create --diskless node3 myres

SÔlmedes leiate alati selle seadme nimega /dev/drbd1084 vÔi /dev/drbd/by-res/myres/0

Nii toimib Linstor, rohkem teavet leiate ametlikust dokumentatsioonist.

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 ametlikust dokumentatsioonist, millele soovitan teil viidata; rÀÀgin ainult OpenNebula integreerimisest Linstoriga.

linstor_un

Selle ĂŒlesande lahendamiseks kirjutasin oma draiveri — linstor_un, 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-client

Meeskond 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-master

NĂŒĂŒd peame selle OpenNebula konfiguratsiooni lisama, selleks jĂ€rgime lihtsaid samme, mis on kirjeldatud siin.

Peale seda taaskÀivitage OpenNebula:

systemctl restart opennebula

Ja 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.conf

Ja 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_PLACE nĂ€itab, kui palju data-replikate luuakse iga uue pildi jaoks OpenNebulas.
  • Parameeter CLONE_MODE nĂ€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_LIST soovitatakse mÀÀrata kĂ”ik noodid, mida kasutatakse piltide kloonimise operatsioonide teostamiseks.

Toetatud parameetrite tÀielik nimekiri on toodud nÀiteks, mis kuvatakse armatuurlaudade peal koos Prometheuse pÀringutega, mis tÀidavad armatuure. projekti.

Sellega on seadistamine lĂ”petatud, nĂŒĂŒd saab laadida ametlikust OpenNebula Marketplace mĂ”nda appliance'i ja luua sellest virtuaalmasinaid.

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

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster