LINSTOR opslach en syn yntegraasje mei OpenNebula

LINSTOR opslach en syn yntegraasje mei OpenNebula

Noch net sa lang lyn presintearren de jonges fan LINBIT harren nije SDS-oplossing - Linstor. Dit is in folslein fergese opslach basearre op bewezen technologyen: DRBD, LVM, ZFS. Linstor kombinearret ienfâld en goed ûntwurpen arsjitektuer, wêrtroch jo stabiliteit en frij yndrukwekkende resultaten kinne berikke.

Hjoed wol ik der in bytsje mear oer prate en sjen litte hoe maklik it kin wurde yntegrearre mei OpenNebula mei linstor_un - in nije stjoerprogramma dat ik spesjaal foar dit doel ûntwikkele.

Linstor yn kombinaasje mei OpenNebula lit jo in flugge en betroubere wolk bouwe dy't maklik ynset wurde kin op jo eigen ynfrastruktuer.

Linstor arsjitektuer

Linstor is noch in bestânsysteem noch blokopslach op himsels, Linstor is in orkestrator dy't in abstraksjelaach leveret om it oanmeitsjen fan folumes yn LVM of ZFS te automatisearjen en se te replikearjen mei DRBD9.

Stereotypen brekke

Mar wachtsje, DRBD? - Wêrom automatisearje it en hoe kin it wurkje?

Litte wy it ferline ûnthâlde doe't DRBD8 heul populêr wie. It standert gebrûk betsjutte it meitsjen fan ien grut blokapparaat en it snijden yn in protte lytse stikken, mei deselde LVM. In soarte fan mdadm RAID-1 mar mei netwurkreplikaasje.

Dizze oanpak is net sûnder neidielen, en dêrom, mei de komst fan DRBD9, binne de prinsipes fan opslachkonstruksje feroare, no is in apart DRBD-apparaat makke foar elke firtuele masine.

De unôfhinklike blokapparaat oanpak lit better benutten fan romte yn it kluster, en ek foeget in oantal ekstra funksjes. Bygelyks, foar elk sa'n apparaat kinne jo it oantal replika's, har lokaasje en yndividuele ynstellingen bepale. Se binne maklik te meitsjen / wiskje, snapshots nimme, grutte feroarje, fersifering ynskeakelje, en mear. It is de muoite wurdich opskriuwen dat DRBD9 ek ûnderhâldt in kworum, dat foarkomt split-brain situaasjes.

Boarnen en backends

By it meitsjen fan in nij blokapparaat pleatst Linstor it fereaske oantal replika's op ferskate knopen yn it kluster. Wy sille elk sa'n replika in DRBD-boarne neame.

Boarnen binne fan twa soarten:

  • Gegevensboarne - fertsjintwurdigje in DRBD apparaat leit op in knooppunt yn in LVM of ZFS pool.
    Op it stuit is d'r stipe foar ferskate backends en har oantal groeit konstant. D'r is stipe foar LVM, ThinLVM en ZFS. De lêste twa kinne jo snapshots meitsje en brûke.
  • Diskless boarne - is in DRBD-apparaat hosted op in knooppunt sûnder in backend, mar wêrtroch it kin wurde behannele as in gewoan blokapparaat, sille alle lês- / skriuwoperaasjes wurde omlaat nei gegevensboarnen. De tichtste analoog foar skiifleaze boarnen is iSCSI LUN.

Elke DRBD-boarne kin oant 8 replika's hawwe en mar ien fan har kin standert aktyf wêze - basisûnderwiis, al de rest sil wêze fuortset en har gebrûk sil ûnmooglik wêze salang't d'r op syn minst ien Primêr is, dat is, se sille gewoan gegevens tusken harsels replikearje.

Troch in DRBD-apparaat yn it systeem te montearjen, wurdt it automatysk basisûnderwiis, dus sels in Diskless boarne, yn DRBD terminology, kin Primêr wêze.

Dus wêrom hawwe wy Linstor nedich?

Troch alle boarne-yntinsive taken oan 'e kearn te fertrouwen, is Linstor yn essinsje in gewoane Java-applikaasje wêrmei jo it oanmeitsjen fan DRBD-boarnen maklik kinne automatisearje.
Tagelyk sil elke troch him makke boarne in ûnôfhinklik DRBD-kluster wêze dat ûnôfhinklik wurket, nettsjinsteande de steat fan it kontrôlefleanmasine en oare DRBD-boarnen.

Linstor bestiet út mar twa komponinten:

  • linstor-controller - De haadkontrôler, dy't in API leveret foar it meitsjen en behearen fan boarnen. It kommunisearret ek mei satelliten, kontrolearret frije romte op har, en stjoert banen om nije boarnen te meitsjen en te wiskjen. Rint yn ien eksimplaar en brûkt in database dy't yntern (H2) of ekstern kin wêze (PostgreSQL, MySQL, MariaDB)
  • linstor-satelliet - Ynstalleare op alle opslachknooppunten en leveret de controller ynformaasje oer frije romte, en fiert ek taken út dy't ûntfongen binne fan 'e controller om nije folumes en DRBD-apparaten boppe-op te meitsjen en te wiskjen.

Linstor wurket mei de folgjende kaaibegripen:

  • node - in fysike tsjinner wêrop DRBD-boarnen sille wurde oanmakke en brûkt.
  • opslach pool - LVM- as ZFS-pool makke op it knooppunt wêryn DRBD-boarnen sille wurde pleatst. In diskless pool is ek mooglik - dit is in pool wêryn allinich diskless boarnen wurde pleatst.
  • resource definysje - Definysje fan in boarne, yn feite is it in prototype dat de namme en al syn eigenskippen beskriuwt.
  • folume definysje - Volume definysje. Elke boarne kin bestean út ferskate folumes, elk folume moat hawwe in grutte.
  • Helpmiddel - Oanmakke in eksimplaar fan in blok apparaat, elke boarne moat wurde pleatst op in spesifyk knooppunt en yn guon opslach pool.

Ynstallaasje fan Linstor

Ik advisearje Ubuntu as systeem te brûken, om't. bestiet foar har klear makke PPA:

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

Of Debian, wêr't Linstor kin wurde ynstalleare fanút it offisjele Proxmox-repository:

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 hjir ienfâldich:

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

Opslach knopen

De Linux kernel wurdt op it stuit ferstjoerd mei in yn-tree kernel module DRBD8, spitigernôch past it ús net en wy moatte ynstallearje DRBD9:

apt-get install drbd-dkms

As praktyk docht bliken, ûntsteane de measte swierrichheden krekt mei it feit dat de DRBD8-module yn it systeem wurdt laden, en net DRBD9. Gelokkich is dit maklik te kontrolearjen troch te rinnen:

modprobe drbd
cat /proc/drbd

As jo ​​sjogge ferzje: 9 - alles is goed as ferzje: 8 - it betsjut dat der wat mis gie en dat jo ekstra stappen moatte nimme om de redenen út te finen.

No litte wy ynstallearje linstor-satelliet и drbd-utils:

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

Meitsje in kluster

Opslach swimbaden en knopen

As backend sille wy nimme ThinLVM, omdat it is de ienfâldichste en stipet snapshots.
Ynstallearje lvm 2, as jo dat net al dien hawwe, en lit ús in ThinLVM-pool meitsje op al ús opslachknooppunten:

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

Alle fierdere aksjes kinne direkt op 'e controller útfierd wurde:

Litte wy ús knopen tafoegje:

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

Litte wy opslachpools meitsje:

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

Litte wy no de oanmakke swimbaden kontrolearje:

linstor storage-pool list

As alles goed is dien, dan moatte wy wat sjen as:

+------------------------------------------------ -------------------------------------------------- ----+ | StoragePool | noat | bestjoerder | poolnamme | frije kapasiteit | totale kapasiteit | Unterstützt Snapshots | |------------------------------------------------ -------------------------------------------------- ----| | data | node1 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | wier | | data | node2 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | wier | | data | node3 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | wier | +------------------------------------------------ -------------------------------------------------- ----+

DRBD boarnen

Litte wy no besykje ús nije DRBD-boarne te meitsjen:

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

Litte wy de oanmakke boarnen kontrolearje:

linstor resource list 

+------------------------------------------------ -------------------------------------------------- ---+ | noat | boarne | StoragePool | VolumeNr | MinorNr | Apparaatnamme | Tawiisd | yn gebrûk | steat | |------------------------------------------------ -------------------------------------------------- ---| | node1 | myn | data | 0 | 1084 | /dev/drbd1084 | 52 KiB | Net brûkt | UpToDate | | node2 | myn | data | 0 | 1084 | /dev/drbd1084 | 52 KiB | Net brûkt | UpToDate | +------------------------------------------------ -------------------------------------------------- ---+

Grut! - wy sjogge dat de boarne is makke op 'e earste twa knooppunten, wy kinne ek besykje om in skyfless boarne te meitsjen op' e tredde:

linstor resource create --diskless node3 myres

Op knopen sille jo dit apparaat altyd fine as /dev/drbd1084 of /dev/drbd/by-res/myres/0

Dit is hoe't Linstor wurket, kinne jo mear ynformaasje krije fan offisjele dokumintaasje.

No sil ik prate oer hoe't jo it kinne yntegrearje mei OpenNebula

OpenNebula ynstelle

Ik sil net te djip yngean op it OpenNebula-ynstellingsproses, om't Alle stappen binne detaillearre yn offisjele dokumintaasje, dy't ik advisearje dat jo ferwize nei, sil ik allinich prate oer de yntegraasje fan OpenNebula mei Linstor.

linstor_un

Om dit probleem op te lossen, skreau ik myn eigen bestjoerder - linstor_un, it is op it stuit beskikber as plugin en moat apart ynstalleare wurde.

De folsleine ynstallaasje wurdt útfierd op 'e frontend OpenNebula-knooppunten en fereasket gjin ekstra aksjes op' e komputerknoppen.

Earst moatte wy derfoar soargje dat wy hawwe jq и linstor-client:

apt-get install jq linstor-client

team linstor node list moat in list mei knopen werjaan. Alle OpenNebula-berekkeningsknooppunten moatte wurde tafoege oan it Linstor-kluster.

Download en ynstallearje de plugin:

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

No moatte wy it tafoegje oan 'e OpenNebula-konfiguraasje, hjirfoar folgje wy de ienfâldige beskreaune stappen hjir.

Start OpenNebula dan op 'e nij:

systemctl restart opennebula

En foegje ús datastores ta, systeem:

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 de byldwinkel:

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 toant it oantal gegevensreplika's dy't sille wurde makke foar elke nije ôfbylding yn OpenNebula.
  • Parameter CLONE_MODE jout krekt oan hoe't ôfbyldings sille wurde klone by it meitsjen fan nije firtuele masines, snapshot - sil in momintopname meitsje fan 'e ôfbylding en in firtuele masine ynsette fanút de momintopname, copy - sil in folsleine kopy meitsje fan 'e ôfbylding foar elke firtuele masine.
  • В BRIDGE_LIST it is oan te rieden om alle knooppunten oan te jaan dy't sille wurde brûkt om operaasjes foar it klonen fan ôfbyldings út te fieren.

Foar in folsleine list mei stipe opsjes, sjoch README projekt.

Dit foltôget de opset, no kinne jo wat apparaat downloade fan 'e offisjele OpenNebula Marketplace en meitsje firtuele masines fan it.

Projekt keppeling:
https://github.com/OpenNebula/addon-linstor_un

Boarne: www.habr.com

Add a comment