LINSTOR biltegiratzea eta OpenNebula-rekin integratzea

LINSTOR biltegiratzea eta OpenNebula-rekin integratzea

Duela ez hainbeste, LINBITeko mutilek SDS irtenbide berria aurkeztu zuten - Linstor. Hau guztiz doako biltegiratze bat da frogatutako teknologietan oinarrituta: DRBD, LVM, ZFS. Linstor-ek sinpletasuna eta ongi diseinatutako arkitektura konbinatzen ditu, egonkortasuna eta emaitza nahiko ikusgarriak lortzeko aukera ematen duena.

Gaur apur bat gehiago hitz egin nahiko nuke eta erakutsi zein erraza den OpenNebula-rekin integra daitekeen linstor_un erabiliz, horretarako bereziki garatu dudan kontrolatzaile berria.

Linstor OpenNebula-rekin konbinatuta, zure azpiegituran erraz zabaldu daitekeen hodei azkar eta fidagarria eraikitzeko aukera ematen du.

Linstor arkitektura

Linstor ez da berez fitxategi-sistema bat, ezta bloke-biltegiratzea ere, Linstor abstrakzio-geruza bat eskaintzen duen orkestratzailea da, LVM edo ZFS-n bolumenak sortzea automatizatzeko eta DRBD9 erabiliz errepikatzeko.

Estereotipoak haustea

Baina itxaron, DRBD? - Zergatik automatizatu eta nola funtziona dezake?

Gogora dezagun DRBD8 oso ezaguna zeneko iragana. Bere erabilera estandarrak bloke gailu handi bat sortzea eta zati txiki askotan moztea esan nahi zuen, LVM bera erabiliz. Mdadm RAID-1 moduko bat baina sareko erreplikazioarekin.

Planteamendu honek ez du eragozpenik gabe, eta, beraz, DRBD9-ren etorrerarekin, biltegiratze eraikuntzaren printzipioak aldatu egin dira, orain DRBD gailu bereizi bat sortzen da makina birtual bakoitzeko.

Bloke gailu independentearen ikuspegiak klusterreko espazioa hobeto aprobetxatzea ahalbidetzen du, eta funtzio gehigarri batzuk ere gehitzen ditu. Adibidez, horrelako gailu bakoitzeko, erreplika kopurua, haien kokapena eta banakako ezarpenak zehaztu ditzakezu. Sortu/ezabatzen, argazkiak atera, tamaina aldatzea, enkriptatzea gaitzen eta abar errazak dira. Aipatzekoa da DRBD9-k ere quoruma mantentzen duela, eta horrek zatiketa-garunaren egoerak saihesten ditu.

Baliabideak eta backendak

Bloke-gailu berri bat sortzean, Linstorrek beharrezko erreplika kopurua jartzen du klusterreko nodo desberdinetan. Erreplika bakoitzari DRBD baliabide deituko diogu.

Baliabideak bi motatakoak dira:

  • Datu-baliabidea - LVM edo ZFS igerilekuko nodo batean kokatutako DRBD gailu bat irudikatu.
    Momentu honetan hainbat backendentzako laguntza dago eta haien kopurua etengabe hazten ari da. LVM, ThinLVM eta ZFS laguntza dago. Azken biek argazkiak sortu eta erabiltzeko aukera ematen dute.
  • Diskorik gabeko baliabidea - Backend gabeko nodo batean ostatatutako DRBD gailua da, baina blokeo gailu arrunt bat bezala tratatzeko aukera emanez, irakurketa/idazketa eragiketa guztiak datu-baliabideetara birbideratuko dira. Diskorik gabeko baliabideetatik hurbilen dagoen analogikoa iSCSI LUN da.

DRBD baliabide bakoitzak 8 erreplika izan ditzake gehienez eta horietako bakarra aktibo egon daiteke lehenespenez - Lehen, gainontzeko guztiak izango dira Bigarren eta horien erabilera ezinezkoa izango da, gutxienez Lehen mailako bat dagoen bitartean, hau da, euren artean datuak erreplikatu besterik ez dute egingo.

DRBD gailu bat sisteman muntatuz, automatikoki bihurtzen da Lehen, beraz, Diskorik gabeko baliabide bat ere, DRBD terminologian, Lehen mailakoa izan daiteke.

Beraz, zergatik behar dugu Linstor?

Baliabide intentsiboko zeregin guztiak nukleoaren esku utziz, Linstor, funtsean, Java aplikazio arrunta da, DRBD baliabideen sorrera erraz automatizatzeko aukera ematen duena.
Aldi berean, berak sortutako baliabide bakoitza modu independentean lan egiten duen DRBD kluster independente bat izango da, kontrol-planoaren eta DRBD-ren beste baliabide batzuen egoera edozein dela ere.

Linstor-ek bi osagai bakarrik ditu:

  • linstor-kontrolatzailea - Kontrolagailu nagusia, baliabideak sortzeko eta kudeatzeko API bat eskaintzen duena. Sateliteekin ere komunikatzen da, horietan libre dagoen espazioa egiaztatuz, eta baliabide berriak sortzeko eta ezabatzeko lanak bidaltzen ditu. Instantzia bakarrean exekutatzen da eta barnekoa (H2) edo kanpokoa (PostgreSQL, MySQL, MariaDB) izan daitekeen datu-base bat erabiltzen du.
  • linstor-satelitea - Biltegiratze-nodo guztietan instalatuta dago eta kontrolagailuari espazio libreari buruzko informazioa ematen dio, eta kontrolagailutik jasotako zereginak ere egiten ditu haien gainean bolumen eta DRBD gailu berriak sortzeko eta ezabatzeko.

Linstor-ek funtsezko kontzeptu hauekin funtzionatzen du:

  • Nodoa β€” DRBD baliabideak sortu eta erabiliko diren zerbitzari fisikoa.
  • Biltegiratze Igerilekua - DRBD baliabideak jarriko diren nodoan sortutako LVM edo ZFS pool. Diskorik gabeko igerilekua ere posible da; diskorik gabeko baliabideak bakarrik jarriko diren igerilekua da.
  • baliabideen definizioa - Baliabide baten definizioa, hain zuzen ere izena eta bere propietate guztiak deskribatzen dituen prototipoa da.
  • bolumenaren definizioa β€” Bolumenaren definizioa. Baliabide bakoitzak hainbat bolumen izan ditzake, bolumen bakoitzak tamaina bat izan behar du.
  • Baliabideen - Bloke gailu baten instantzia bat sortu da, baliabide bakoitza nodo zehatz batean eta biltegiratze-pool batean kokatu behar da.

Linstor instalatzea

Ubuntu sistema gisa erabiltzea gomendatzen dut. beretzat existitzen da prest egindako PPA:

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

Edo Debian, non Linstor Proxmox biltegi ofizialetik instalatu daitekeen:

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

Hemen dena erraza da:

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

Biltegiratze-nodoak

Linux kernelak zuhaitz barruko kernel modulu batekin hornitzen du DRBD8, tamalez ez zaigu egokitzen eta instalatu behar dugu DRBD9:

apt-get install drbd-dkms

Praktikak erakusten duenez, zailtasun gehienak DRBD8 modulua sisteman kargatuta egotearekin sortzen dira, eta ez DRBD9. Zorionez, hau egiaztatzea erraza da exekutatuta:

modprobe drbd
cat /proc/drbd

Ikusten baduzu bertsioa: 9 - dena ondo dago bada bertsioa: 8 - Zerbait gaizki joan dela esan nahi du eta arrazoiak ezagutzeko urrats gehigarriak eman behar dituzula esan nahi du.

Orain instala dezagun linstor-satelitea ΠΈ drbd-utils:

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

Sortu kluster bat

Biltegiratze-igerilekuak eta nodoak

Backend gisa hartuko dugu ThinLVM, zeren sinpleena da eta argazkiak onartzen ditu.
instalatu lvm2, oraindik egin ez baduzu, eta sor dezagun ThinLVM biltegiratze bat gure biltegiratze-nodo guztietan:

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

Ekintza gehiago guztiak kontrolagailuan zuzenean egin daitezke:

Gehi ditzagun gure nodoak:

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

Sor ditzagun biltegiratze-igerilekuak:

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

Orain egiaztatu ditzagun sortutako igerilekuak:

linstor storage-pool list

Dena ondo egiten bada, honelako zerbait ikusi beharko genuke:

+------------------------------------------------- -------------------------------------------------- ----+ | BiltegiratzeIgerilekua | nodoa | gidaria | igerilekuaren izena | doako gaitasuna | guztizko gaitasuna | Argazkiak onartzen ditu | |------------------------------------------------- -------------------------------------------------- ----| | datuak | nodoa1 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | egia | | datuak | nodoa2 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | egia | | datuak | nodoa3 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | egia | +------------------------------------------------- -------------------------------------------------- ----+

DRBD baliabideak

Orain saia gaitezen gure DRBD baliabide berria sortzen:

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

Ikus ditzagun sortutako baliabideak:

linstor resource list 

+------------------------------------------------- -------------------------------------------------- ---+ | nodoa | baliabidea | BiltegiratzeIgerilekua | BolumenZk. | MinorNr | Gailu izena | Esleitutako | erabileran | egoera | |------------------------------------------------- -------------------------------------------------- ---| | nodoa1 | myres | datuak | 0 | 1084 | /dev/drbd1084 | 52 KiB | Erabili gabeko | Eguneratuta | | nodoa2 | myres | datuak | 0 | 1084 | /dev/drbd1084 | 52 KiB | Erabili gabeko | Eguneratuta | +------------------------------------------------- -------------------------------------------------- ---+

Bikaina! - Baliabidea lehenengo bi nodoetan sortu zela ikusten dugu, hirugarrenean diskorik gabeko baliabide bat sortzen ere saia gaitezke:

linstor resource create --diskless node3 myres

Nodoetan beti aurkituko duzu gailu hau /dev/drbd1084 edo /dev/drbd/by-res/myres/0

Honela funtzionatzen du Linstor-ek, hemendik informazio gehiago lor dezakezu dokumentazio ofiziala.

Orain OpenNebula-rekin nola integratu hitz egingo dut

OpenNebula konfiguratzen

Ez naiz gehiegi sakonduko OpenNebula konfigurazio prozesuan, zeren Urrats guztiak xehatuta daude dokumentazio ofiziala, aipatzea gomendatzen dizut, OpenNebula Linstor-ekin duen integrazioaz bakarrik hitz egingo dut.

linstor_un

Arazo hau konpontzeko, nire kontrolatzailea idatzi nuen - linstor_un, une honetan plugin gisa eskuragarri dago eta bereizita instalatu behar da.

Instalazio osoa OpenNebula frontend-eko nodoetan egiten da eta ez du ekintza gehigarririk behar konputazio-nodoetan.

Lehenik eta behin, daukagula ziurtatu behar dugu jq ΠΈ linstor-bezeroa:

apt-get install jq linstor-client

Team linstor node list nodoen zerrenda erakutsi beharko luke. OpenNebula kalkulu-nodo guztiak gehitu behar dira Linstor klusterera.

Deskargatu eta instalatu 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

Orain OpenNebula konfigurazioan gehitu behar dugu, horretarako deskribatutako pauso errazak jarraituko ditugu Hemen.

Ondoren, berrabiarazi OpenNebula:

systemctl restart opennebula

Eta gehitu gure datu-biltegiak, sistema:

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

Eta irudi denda:

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

  • Parametroa AUTO_PLACE OpenNebula-n irudi berri bakoitzerako sortuko diren datu-erreplika kopurua erakusten du.
  • Parametroa CLONE_MODE makina birtual berriak sortzean irudiak nola klonatuko diren adierazten du, snapshot - irudiaren argazki bat sortuko du eta argazkitik makina birtual bat zabalduko du, copy - irudiaren kopia osoa egingo du makina birtual bakoitzeko.
  • Π’ BRIDGE_LIST irudiak klonatzeko eragiketak egiteko erabiliko diren nodo guztiak zehaztea gomendatzen da.

Onartutako aukeren zerrenda osoa ikusteko, ikus README proiektua.

Honek konfigurazioa amaitzen du, orain tresna batzuk deskargatu ditzakezu ofizialetik OpenNebula Marketplace eta sortu bertatik makina birtualak.

Proiektuaren esteka:
https://github.com/OpenNebula/addon-linstor_un

Iturria: www.habr.com

Gehitu iruzkin berria