LINSTOR-berging en die integrasie daarvan met OpenNebula

LINSTOR-berging en die integrasie daarvan met OpenNebula

Nie so lank gelede nie het die ouens van LINBIT hul nuwe SDS-oplossing - Linstor - aangebied. Dit is 'n heeltemal gratis berging gebaseer op bewese tegnologieë: DRBD, LVM, ZFS. Linstor kombineer eenvoud en goed ontwerpte argitektuur, wat jou toelaat om stabiliteit en nogal indrukwekkende resultate te behaal.

Vandag wil ek 'n bietjie meer daaroor praat en wys hoe maklik dit met OpenNebula geïntegreer kan word deur linstor_un te gebruik - 'n nuwe drywer wat ek spesifiek vir hierdie doel ontwikkel het.

Linstor in kombinasie met OpenNebula laat jou toe om 'n vinnige en betroubare wolk te bou wat maklik op jou eie infrastruktuur ontplooi kan word.

Linstor argitektuur

Linstor is nie 'n lêerstelsel of blokberging op sigself nie, Linstor is 'n orkestreerder wat 'n abstraksielaag bied om die skepping van volumes in LVM of ZFS te outomatiseer en dit te herhaal met DRBD9.

Verbreek stereotipes

Maar wag, DRBD? - Hoekom outomatiseer dit en hoe kan dit enigsins werk?

Kom ons onthou die verlede toe DRBD8 baie gewild was. Die standaardgebruik daarvan het beteken om een ​​groot bloktoestel te skep en dit in baie klein stukkies te sny, met dieselfde LVM. 'n Soort mdadm RAID-1 maar met netwerkreplikasie.

Hierdie benadering is nie sonder nadele nie, en daarom, met die koms van DRBD9, het die beginsels van stoorkonstruksie verander, nou word 'n aparte DRBD-toestel vir elke virtuele masjien geskep.

Die onafhanklike bloktoestelbenadering laat beter benutting van ruimte in die groep toe, en voeg ook 'n aantal bykomende kenmerke by. Byvoorbeeld, vir elke so 'n toestel kan jy die aantal replikas, hul ligging en individuele instellings bepaal. Dit is maklik om te skep / uit te vee, foto's te neem, grootte te verander, enkripsie te aktiveer, en meer. Dit is opmerklik dat DRBD9 ook 'n kworum handhaaf, wat gesplete breinsituasies vermy.

Hulpbronne en backends

Wanneer 'n nuwe bloktoestel geskep word, plaas Linstor die vereiste aantal replikas op verskillende nodusse in die groepie. Ons sal elke so 'n replika 'n DRBD-hulpbron noem.

Hulpbronne is van twee tipes:

  • Data hulpbron - verteenwoordig 'n DRBD-toestel wat op 'n nodus in 'n LVM- of ZFS-poel geleë is.
    Op die oomblik is daar ondersteuning vir verskeie backends en hul aantal groei voortdurend. Daar is ondersteuning vir LVM, ThinLVM en ZFS. Die laaste twee laat jou toe om foto's te skep en te gebruik.
  • Skyflose hulpbron - is 'n DRBD-toestel wat op 'n nodus gehuisves word sonder 'n backend, maar om dit soos 'n gewone bloktoestel te laat hanteer, sal alle lees-/skryfbewerkings na databronne herlei word. Die naaste analoog aan skyflose hulpbronne is iSCSI LUN.

Elke DRBD-hulpbron kan tot 8 replikas hê en slegs een van hulle kan by verstek aktief wees - Primêre, al die res sal wees Sekondêre en hul gebruik sal onmoontlik wees solank daar ten minste een Primêr is, dit wil sê, hulle sal bloot data onderling repliseer.

Deur 'n DRBD-toestel in die stelsel te monteer, word dit outomaties Primêre, dus selfs 'n skyflose hulpbron, in DRBD-terminologie, kan Primêr wees.

So hoekom het ons Linstor nodig?

Deur alle hulpbron-intensiewe take aan die kern toe te vertrou, is Linstor in wese 'n gewone Java-toepassing wat jou toelaat om die skepping van DRBD-hulpbronne maklik te outomatiseer.
Terselfdertyd sal elke hulpbron wat deur hom geskep word 'n onafhanklike DRBD-kluster wees wat onafhanklik werk, ongeag die toestand van die beheervlak en ander DRBD-hulpbronne.

Linstor bestaan ​​uit slegs twee komponente:

  • linstor-beheerder - Die hoofbeheerder, wat 'n API bied vir die skep en bestuur van hulpbronne. Dit kommunikeer ook met satelliete, kontroleer vrye spasie op hulle, en stuur werke om nuwe hulpbronne te skep en uit te vee. Loop in 'n enkele geval en gebruik 'n databasis wat intern (H2) of ekstern (PostgreSQL, MySQL, MariaDB) kan wees.
  • linstor-satelliet - Geïnstalleer op alle stoor nodusse en voorsien die kontroleerder met inligting oor vrye spasie, en voer ook take uit wat van die kontroleerder ontvang is om nuwe volumes en DRBD-toestelle bo-op hulle te skep en uit te vee.

Linstor werk met die volgende sleutelkonsepte:

  • Knoop — 'n fisiese bediener waarop DRBD-hulpbronne geskep en gebruik sal word.
  • Stoor swembad - LVM- of ZFS-poel geskep op die nodus waarin DRBD-hulpbronne geplaas sal word. 'n Skyflose swembad is ook moontlik - dit is 'n poel waarin slegs skyflose hulpbronne geplaas sal word.
  • Hulpbron Definisie - Definisie van 'n hulpbron, in werklikheid is dit 'n prototipe wat die naam en al sy eienskappe beskryf.
  • volume definisie — Volumedefinisie. Elke hulpbron kan uit verskeie volumes bestaan, elke volume moet 'n grootte hê.
  • Resource - Geskep 'n instansie van 'n blok toestel, elke hulpbron moet op 'n spesifieke nodus en in een of ander stoorpoel geplaas word.

Installasie van Linstor

Ek beveel aan om Ubuntu as 'n stelsel te gebruik, want. vir haar bestaan klaargemaakte PPA:

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

Of Debian, waar Linstor vanaf die amptelike Proxmox-bewaarplek geïnstalleer kan word:

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

Alles is eenvoudig hier:

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

Berging nodusse

Die Linux-kern word tans saam met 'n in-boom kernmodule gestuur DRBD8, dit pas ons ongelukkig nie en ons moet installeer DRBD9:

apt-get install drbd-dkms

Soos die praktyk toon, ontstaan ​​die meeste van die probleme juis met die feit dat die DRBD8-module in die stelsel gelaai is, en nie DRBD9 nie. Gelukkig is dit maklik om dit na te gaan deur te hardloop:

modprobe drbd
cat /proc/drbd

As jy sien weergawe: 9 - alles is in orde as weergawe: 8 - dit beteken iets het verkeerd geloop en jy moet bykomende stappe neem om die redes uit te vind.

Kom ons installeer nou linstor-satelliet и drbd-utils:

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

Skep 'n groepie

Stoor swembaddens en nodusse

As 'n backend sal ons neem DunLVM, omdat dit is die eenvoudigste en ondersteun foto's.
Installeer lvm2, as jy dit nog nie gedoen het nie, en kom ons skep 'n ThinLVM-poel op al ons stoornodusse:

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

Alle verdere aksies kan direk op die beheerder uitgevoer word:

Kom ons voeg ons nodusse by:

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

Kom ons skep stoorpoele:

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

Kom ons kyk nou na die geskepde poele:

linstor storage-pool list

As alles korrek gedoen word, moet ons iets sien soos:

+------------------------------------------------ -------------------------------------------------- ----+ | BergingSwembad | node | bestuurder | swembadnaam | vrye kapasiteit | totale kapasiteit | Ondersteun Snapshots | |------------------------------------------------ -------------------------------------------------- ----| | data | nodus1 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | waar | | data | nodus2 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | waar | | data | node3 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | waar | +------------------------------------------------ -------------------------------------------------- ----+

DRBD hulpbronne

Kom ons probeer nou om ons nuwe DRBD-hulpbron te skep:

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

Kom ons kyk na die geskepte hulpbronne:

linstor resource list 

+------------------------------------------------ -------------------------------------------------- ---+ | node | hulpbron | BergingSwembad | VolumeNr | MinorNr | Toestelnaam | Toegewys | in gebruik | staat | |------------------------------------------------ -------------------------------------------------- ---| | nodus1 | myres | data | 0 | 1084 | /dev/drbd1084 | 52 KiB | Ongebruikte | Op datum | | nodus2 | myres | data | 0 | 1084 | /dev/drbd1084 | 52 KiB | Ongebruikte | Op datum | +------------------------------------------------ -------------------------------------------------- ---+

Puik! - ons sien dat die hulpbron op die eerste twee nodusse geskep is, ons kan ook probeer om 'n skyflose hulpbron op die derde te skep:

linstor resource create --diskless node3 myres

Op nodusse sal jy altyd hierdie toestel vind as /dev/drbd1084 of /dev/drbd/by-res/myres/0

Dit is hoe Linstor werk, jy kan meer inligting by kry amptelike dokumentasie.

Nou sal ek praat oor hoe om dit met OpenNebula te integreer

Stel OpenNebula op

Ek sal nie te diep in die OpenNebula-opstellingsproses ingaan nie, want Alle stappe word uiteengesit in amptelike dokumentasie, waarna ek aanbeveel dat jy verwys, sal ek net praat oor die integrasie van OpenNebula met Linstor.

linstor_un

Om hierdie probleem op te los, het ek my eie bestuurder geskryf - linstor_un, dit is tans beskikbaar as 'n inprop en moet afsonderlik geïnstalleer word.

Die hele installasie word uitgevoer op die voorkant OpenNebula nodusse en vereis nie bykomende aksies op die rekenaar nodusse nie.

Eerstens moet ons seker maak dat ons het jq и linstor-kliënt:

apt-get install jq linstor-client

Span linstor node list moet 'n lys nodusse vertoon. Alle OpenNebula-rekennodusse moet by die Linstor-kluster gevoeg word.

Laai die inprop af en installeer dit:

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

Nou moet ons dit by die OpenNebula-konfigurasie voeg, hiervoor volg ons die eenvoudige stappe wat beskryf word hier.

Herbegin dan OpenNebula:

systemctl restart opennebula

En voeg ons datawinkels, stelsel by:

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

En die beeldwinkel:

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

  • Parameter AUTO_PLACE vertoon die aantal data replikas wat vir elke nuwe prent in OpenNebula geskep sal word.
  • Parameter CLONE_MODE dui presies aan hoe beelde gekloon sal word wanneer nuwe virtuele masjiene geskep word, snapshot - sal 'n momentopname van die beeld skep en 'n virtuele masjien vanaf die momentopname ontplooi, copy - sal 'n volledige kopie van die prent vir elke virtuele masjien maak.
  • В BRIDGE_LIST dit word aanbeveel om alle nodusse te spesifiseer wat gebruik sal word om beeldkloningbewerkings uit te voer.

Vir 'n volledige lys van ondersteunde opsies, sien README projek.

Dit voltooi die opstelling, nou kan jy 'n toestel by die amptenaar aflaai OpenNebula Marketplace en skep virtuele masjiene daaruit.

Projek skakel:
https://github.com/OpenNebula/addon-linstor_un

Bron: will.com

Voeg 'n opmerking