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
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
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
linstor_un
Om hierdie probleem op te los, het ek my eie bestuurder geskryf -
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
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
Dit voltooi die opstelling, nou kan jy 'n toestel by die amptenaar aflaai
Projek skakel:
Bron: will.com