LINSTOR geymsla og samþætting hennar við OpenNebula

LINSTOR geymsla og samþætting hennar við OpenNebula

Ekki alls fyrir löngu kynntu strákarnir frá LINBIT nýju SDS lausnina sína - Linstor. Þetta er algjörlega ókeypis geymsla byggð á sannreyndri tækni: DRBD, LVM, ZFS. Linstor sameinar einfaldleika og vel hannaðan arkitektúr, sem gerir þér kleift að ná stöðugleika og alveg glæsilegum árangri.

Í dag langar mig að ræða það aðeins nánar og sýna hversu auðvelt er að samþætta það við OpenNebula með því að nota linstor_un - nýjan rekla sem ég þróaði sérstaklega í þessum tilgangi.

Linstor ásamt OpenNebula gerir þér kleift að byggja upp hraðvirkt og áreiðanlegt ský sem auðvelt er að dreifa á eigin innviði.

Linstor arkitektúr

Linstor er hvorki skráarkerfi né blokkageymsla í sjálfu sér, Linstor er hljómsveitarstjóri sem veitir abstraktlag sem gerir þér kleift að gera sjálfvirkan stofnun binda í LVM eða ZFS og endurtaka þau með DRBD9.

Að brjóta staðalímyndir

En bíddu, DRBD? — Af hverju að gera það sjálfvirkt og hvernig getur það jafnvel virkað?

Við skulum muna fortíðina, þegar DRBD8 var mjög vinsælt. Venjuleg notkun þess fól í sér að búa til eitt stórt blokkartæki og klippa það í marga litla bita, með því að nota sama LVM. Eins konar mdadm RAID-1 en með afritun yfir netið.

Þessi nálgun er ekki án galla og því, með tilkomu DRBD9, hafa meginreglur geymsluhönnunar breyst; nú er sérstakt DRBD tæki búið til fyrir hverja sýndarvél.

Nálgunin með sjálfstæðum blokkartækjum gerir ráð fyrir betri nýtingu pláss í þyrpingunni og bætir einnig við fjölda viðbótareiginleika. Til dæmis, fyrir hvert slíkt tæki geturðu ákvarðað fjölda eftirmynda, staðsetningu þeirra og einstakar stillingar. Auðvelt er að búa til/eyða þeim, taka skyndimyndir, breyta stærð, virkja dulkóðun og margt fleira. Þess má geta að DRBD9 styður einnig sveit, sem gerir þér kleift að forðast aðstæður með klofna heila.

Auðlindir og bakenda

Þegar nýtt blokkartæki er búið til, setur Linstor tilskilinn fjölda eftirmynda á mismunandi hnúta í þyrpingunni. Við munum kalla hverja slíka eftirmynd DRBD auðlind.

Það eru tvær tegundir af auðlindum:

  • Gagnaauðlind — eru DRBD tæki staðsett á hnút í LVM eða ZFS laug.
    Í augnablikinu er stuðningur við nokkra bakenda og fjöldi þeirra fer stöðugt vaxandi. Það er stuðningur fyrir LVM, ThinLVM og ZFS. Síðustu tveir leyfa þér að búa til og nota skyndimyndir.
  • Disklaus auðlind — er DRBD tæki sem er sett á hnút án bakends, en gerir kleift að meðhöndla það sem venjulegt blokkunartæki; allar lestur/skrifaðgerðir verða sendar til gagnaauðlinda. Næsta hliðstæða við disklausa auðlindir er iSCSI LUN.

Hver DRBD auðlind getur haft allt að 8 eftirlíkingar og aðeins ein þeirra getur verið virk sjálfgefið - Primary, allir aðrir verða það Secondary og notkun þeirra verður ómöguleg svo lengi sem það er að minnsta kosti eitt aðal, það er, þeir munu einfaldlega endurtaka gögn sín á milli.

Með því að setja upp DRBD tæki í kerfið verður það sjálfkrafa Primary, þannig að jafnvel disklaus auðlind, í DRBD hugtökum, getur verið aðal.

Svo hvers vegna þarftu Linstor?

Með því að fela kjarnanum öll auðlindafrek verkefni er Linstor í rauninni venjulegt Java forrit sem gerir þér kleift að gera sjálfvirkan stofnun DRBD auðlinda auðveldlega.
Þar að auki mun hver auðlind sem hann býr til vera sjálfstæður DRBD klasi sem starfar sjálfstætt, óháð ástandi stjórnvélarinnar og annarra DRBD auðlinda.

Linstor samanstendur af aðeins tveimur hlutum:

  • Linstor-stjórnandi - Aðalstýringin, sem veitir API til að búa til og stjórna auðlindum. Það hefur einnig samskipti við gervihnött, athugar laust pláss á þeim og sendir verkefni til að búa til og eyða nýjum auðlindum. Það keyrir í einu tilviki og notar gagnagrunn, sem getur verið annað hvort innri (H2) eða ytri (PostgreSQL, MySQL, MariaDB)
  • Linstor-gervihnöttur — Uppsett á öllum geymsluhnútum og veitir stjórnanda upplýsingar um laust pláss, og framkvæmir einnig verkefni sem berast frá stjórnandi til að búa til og eyða nýjum bindum og DRBD tækjum ofan á þau.

Linstor starfar með eftirfarandi lykilhugtökum:

  • Hnút — líkamlegur þjónn þar sem DRBD tilföng verða búin til og notuð.
  • Geymslulaug — LVM eða ZFS laug búin til á hnútnum þar sem DRBD auðlindir verða staðsettar. Disklaus laug er líka möguleg - þetta er laug þar sem aðeins diskalaus auðlind verður staðsett.
  • Auðlindaskilgreining — Skilgreining á auðlind er í meginatriðum frumgerð sem lýsir nafninu og öllum eiginleikum þess.
  • Volume Skilgreining — Bindiskilgreining. Hver auðlind getur samanstendur af mörgum bindum, hvert bindi verður að hafa stærð.
  • Resource — Búið til dæmi um blokkartæki, hvert tilfang verður að vera komið fyrir á tilteknum hnút og í einhverjum geymsluhópi.

Linstor uppsetning

Ég mæli með því að nota Ubuntu sem kerfi vegna þess að... er til fyrir hana tilbúinn PPA:

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

Eða Debian, þar sem hægt er að setja Linstor upp úr opinberu geymslunni fyrir Proxmox:

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

Hér er allt einfalt:

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

Geymsluhnútar

Linux kjarninn er sem stendur send með kjarnaeiningu í tré DRBD8, því miður hentar það okkur ekki og við þurfum að setja upp DRBD9:

apt-get install drbd-dkms

Eins og æfingin sýnir koma flestir erfiðleikar upp einmitt vegna þess að DRBD8 einingin er hlaðin inn í kerfið, en ekki DRBD9. Sem betur fer er auðvelt að athuga þetta með því að keyra:

modprobe drbd
cat /proc/drbd

Ef þú sérð útgáfa: 9 - það þýðir að allt er í lagi ef útgáfa: 8 - það þýðir að eitthvað fór úrskeiðis og þú þarft að gera frekari ráðstafanir til að finna út ástæðurnar.

Nú skulum við setja upp linstor-gervihnöttur и drbd-utils:

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

Búðu til klasa

Geymslulaugar og hnútar

Sem bakhlið munum við taka Þunnt LVM, vegna þess það er einfaldast og styður skyndimyndir.
Setja lvm2, ef þú hefur ekki þegar gert það, skulum búa til ThinLVM laug á öllum geymsluhnútum okkar:

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

Allar frekari aðgerðir er hægt að framkvæma beint á stjórnandann:

Við skulum bæta við hnútunum okkar:

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

Við skulum búa til geymslulaugar:

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ú skulum við athuga laugarnar sem búið var til:

linstor storage-pool list

Ef allt er gert rétt, þá ættum við að sjá eitthvað eins og:

+------------------------------------------------ -------------------------------------------------- ----+ | Geymslulaug | Hnútur | Bílstjóri | Laugarnafn | FreeCapacity | Heildargeta | Styður Skyndimyndir | |------------------------------------------------ - -------------------------------------------------- - ---| | gögn | hnútur1 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | satt | | gögn | hnút2 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | satt | | gögn | hnútur3 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | satt | +------------------------------------------------ -------------------------------------------------- ----+

DRBD auðlindir

Nú skulum við reyna að búa til nýja DRBD auðlindina okkar:

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

Við skulum athuga auðlindirnar sem búið er til:

linstor resource list 

+------------------------------------------------ -------------------------------------------------- ---+ | Hnútur | Úrræði | Geymslulaug | VolumeNr | MinorNr | DeviceName | Úthlutað | InUse | Ríki | |------------------------------------------------ - -------------------------------------------------- - --| | hnútur1 | myres | gögn | 0 | 1084 | /dev/drbd1084 | 52 KiB | Ónotaður | UpToDate | | hnút2 | myres | gögn | 0 | 1084 | /dev/drbd1084 | 52 KiB | Ónotaður | UpToDate | +------------------------------------------------ -------------------------------------------------- ---+

Frábært! — við sjáum að auðlindin var búin til á fyrstu tveimur hnútunum, við getum líka reynt að búa til disklausa auðlind á þeirri þriðju:

linstor resource create --diskless node3 myres

Á hnútum muntu alltaf finna þetta tæki sem /dev/drbd1084 eða /dev/drbd/by-res/myres/0

Svona virkar Linstor, þú getur fengið frekari upplýsingar hjá opinber skjöl.

Nú mun ég segja þér hvernig á að samþætta það með OpenNebula

Setja upp OpenNebula

Ég mun ekki fara of djúpt í OpenNebula uppsetningarferlið, vegna þess að... öllum skrefum er lýst í smáatriðum í opinber skjöl, sem ég mæli með að þú hafir samband við, ég segi þér aðeins frá samþættingu OpenNebula við Linstor.

linstor_un

Til að leysa þetta vandamál skrifaði ég minn eigin bílstjóri - linstor_un, það er nú fáanlegt sem viðbót og verður að setja það upp sérstaklega.

Öll uppsetningin fer fram á framenda OpenNebula hnútunum og krefst ekki viðbótaraðgerða á reiknihnútunum.

Fyrst af öllu þurfum við að ganga úr skugga um að við höfum jq и linstor-viðskiptavinur:

apt-get install jq linstor-client

Team linstor node list ætti að birta lista yfir hnúta. Öllum OpenNebula reiknihnútum verður að bæta við Linstor þyrpinguna.

Sæktu og settu upp viðbótina:

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ú þurfum við að bæta því við OpenNebula stillinguna, til að gera þetta fylgjum við einföldum skrefum sem lýst er hér.

Endurræstu síðan OpenNebula:

systemctl restart opennebula

Og bættu við gagnaverum okkar, kerfi:

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

Og myndabúðin:

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

  • Viðfang AUTO_PLACE sýnir fjölda gagnaafrita sem verða búnar til fyrir hverja nýja mynd í OpenNebula.
  • Viðfang CLONE_MODE gefur til kynna nákvæmlega hvernig myndir verða klónaðar þegar nýjar sýndarvélar eru búnar til, snapshot — mun búa til skyndimynd af myndinni og setja upp sýndarvél úr myndinni, copy — mun gera fullkomið afrit af myndinni fyrir hverja sýndarvél.
  • В BRIDGE_LIST Mælt er með því að tilgreina alla hnúta sem verða notaðir til að framkvæma myndklónunaraðgerðir.

Fyrir heildarlista yfir studdar færibreytur, sjá README verkefni.

Þetta lýkur uppsetningunni, nú geturðu halað niður einhverju tæki frá embættismanninum OpenNebula Marketplace og búa til sýndarvélar úr því.

Verkefnistengillinn:
https://github.com/OpenNebula/addon-linstor_un

Heimild: www.habr.com

Bæta við athugasemd