Storfa LINSTOR a'i integreiddio ag OpenNebula

Storfa LINSTOR a'i integreiddio ag OpenNebula

Ddim mor bell yn ôl, cyflwynodd y dynion o LINBIT eu datrysiad SDS newydd - Linstor. Mae hwn yn storfa hollol rhad ac am ddim yn seiliedig ar dechnolegau profedig: DRBD, LVM, ZFS. Mae Linstor yn cyfuno symlrwydd a phensaernïaeth wedi'i ddylunio'n dda, sy'n eich galluogi i gyflawni sefydlogrwydd a chanlyniadau eithaf trawiadol.

Heddiw hoffwn siarad ychydig mwy amdano a dangos pa mor hawdd y gellir ei integreiddio ag OpenNebula gan ddefnyddio linstor_un - gyrrwr newydd a ddatblygais yn benodol at y diben hwn.

Mae Linstor mewn cyfuniad ag OpenNebula yn caniatáu ichi adeiladu cwmwl cyflym a dibynadwy y gellir ei ddefnyddio'n hawdd ar eich seilwaith eich hun.

pensaernïaeth Linstor

Nid yw Linstor yn system ffeiliau nac yn storfa bloc ynddo'i hun, mae Linstor yn gerddorfawr sy'n darparu haen tynnu i awtomeiddio creu cyfeintiau yn LVM neu ZFS a'u hailadrodd gan ddefnyddio DRBD9.

Torri stereoteipiau

Ond arhoswch, DRBD? - Pam ei awtomeiddio a sut y gall weithio o gwbl?

Gadewch i ni gofio'r gorffennol pan oedd DRBD8 yn boblogaidd iawn. Roedd ei ddefnydd safonol yn golygu creu un ddyfais bloc mawr a'i dorri'n nifer o ddarnau bach, gan ddefnyddio'r un LVM. Math o mdadm RAID-1 ond gydag atgynhyrchu rhwydwaith.

Nid yw'r dull hwn heb anfanteision, ac felly, gyda dyfodiad DRBD9, mae egwyddorion adeiladu storio wedi newid, nawr mae dyfais DRBD ar wahân yn cael ei chreu ar gyfer pob peiriant rhithwir.

Mae'r dull dyfais bloc annibynnol yn caniatáu gwell defnydd o ofod yn y clwstwr, ac mae hefyd yn ychwanegu nifer o nodweddion ychwanegol. Er enghraifft, ar gyfer pob dyfais o'r fath, gallwch chi bennu nifer y copïau, eu lleoliad a'u gosodiadau unigol. Maent yn hawdd i'w creu / dileu, cymryd cipluniau, newid maint, galluogi amgryptio, a mwy. Mae'n werth nodi bod DRBD9 hefyd yn cynnal cworwm, sy'n osgoi sefyllfaoedd hollt-ymennydd.

Adnoddau a chefnlenni

Wrth greu dyfais bloc newydd, mae Linstor yn gosod y nifer ofynnol o atgynyrchiadau ar wahanol nodau yn y clwstwr. Byddwn yn galw pob atgynhyrchiad o'r fath yn adnodd DRBD.

Mae adnoddau o ddau fath:

  • Adnodd data - cynrychioli dyfais DRBD sydd wedi'i lleoli ar nod mewn pwll LVM neu ZFS.
    Ar hyn o bryd mae yna gefnogaeth i sawl backend ac mae eu nifer yn cynyddu'n gyson. Mae cefnogaeth i LVM, ThinLVM a ZFS. Mae'r ddau olaf yn caniatáu ichi greu a defnyddio cipluniau.
  • Adnodd di-ddisg - yn ddyfais DRBD a gynhelir ar nod heb gefn, ond gan ganiatáu iddo gael ei drin fel dyfais bloc arferol, bydd yr holl weithrediadau darllen / ysgrifennu yn cael eu hailgyfeirio i adnoddau data. Yr analog agosaf at adnoddau di-ddisg yw iSCSI LUN.

Gall pob adnodd DRBD gynnwys hyd at 8 atgynhyrchiad a dim ond un ohonynt all fod yn weithredol yn ddiofyn - Cynradd, bydd y gweddill i gyd Uwchradd a bydd yn amhosibl eu defnyddio cyn belled â bod o leiaf un Cynradd, hynny yw, yn syml y byddant yn atgynhyrchu data rhyngddynt eu hunain.

Trwy osod dyfais DRBD yn y system, mae'n dod yn awtomatig Cynradd, felly gall hyd yn oed adnodd di-ddisg, mewn terminoleg DRBD, fod yn Gynradd.

Felly pam mae angen Linstor arnom?

Trwy ymddiried yr holl dasgau adnoddau-ddwys i'r cnewyllyn, mae Linstor yn ei hanfod yn gymhwysiad Java rheolaidd sy'n eich galluogi i awtomeiddio'r broses o greu adnoddau DRBD yn hawdd.
Ar yr un pryd, bydd pob adnodd a grëir ganddo yn glwstwr DRBD annibynnol sy'n gweithio'n annibynnol, waeth beth fo cyflwr yr awyren reoli ac adnoddau DRBD eraill.

Dim ond dwy gydran sydd i Linstor:

  • linstor-rheolwr - Y prif reolwr, sy'n darparu API ar gyfer creu a rheoli adnoddau. Mae hefyd yn cyfathrebu â lloerennau, yn gwirio gofod rhydd arnynt, ac yn anfon swyddi i greu a dileu adnoddau newydd. Yn rhedeg mewn un achos ac yn defnyddio cronfa ddata a all fod naill ai'n fewnol (H2) neu'n allanol (PostgreSQL, MySQL, MariaDB)
  • linstor-lloeren - Wedi'i osod ar bob nod storio ac yn rhoi gwybodaeth i'r rheolwr am ofod rhydd, a hefyd yn cyflawni tasgau a dderbynnir gan y rheolwr i greu a dileu cyfeintiau a dyfeisiau DRBD newydd ar eu pennau.

Mae Linstor yn gweithredu gyda'r cysyniadau allweddol canlynol:

  • Nôd — gweinydd ffisegol lle bydd adnoddau DRBD yn cael eu creu a'u defnyddio.
  • Pwll Storio - Pwll LVM neu ZFS wedi'i greu ar y nod y bydd adnoddau DRBD yn cael eu gosod ynddo. Mae pwll di-ddisg hefyd yn bosibl - mae hwn yn gronfa lle dim ond adnoddau di-ddisg fydd yn cael eu gosod.
  • diffiniad adnoddau - Diffiniad o adnodd, mewn gwirionedd mae'n brototeip sy'n disgrifio'r enw a'i holl briodweddau.
  • diffiniad cyfaint — Diffiniad cyfaint. Gall pob adnodd gynnwys sawl cyfrol, rhaid i bob cyfrol fod â maint.
  • Adnoddau - Wedi creu enghraifft o ddyfais bloc, rhaid gosod pob adnodd ar nod penodol ac mewn rhai pwll storio.

Gosod Linstor

Rwy'n argymell defnyddio Ubuntu fel system, oherwydd. yn bodoli iddi PPA parod:

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

Neu Debian, lle gellir gosod Linstor o ystorfa swyddogol 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

Rheolwr

Mae popeth yn syml yma:

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

Nodau storio

Ar hyn o bryd mae'r cnewyllyn Linux yn cludo modiwl cnewyllyn mewn coed DRBD8, yn anffodus nid yw'n addas i ni ac mae angen inni osod DRBD9:

apt-get install drbd-dkms

Fel y dengys arfer, mae'r rhan fwyaf o'r anawsterau'n codi'n union gyda'r ffaith bod modiwl DRBD8 yn cael ei lwytho i'r system, ac nid DRBD9. Yn ffodus, mae'n hawdd gwirio hyn trwy redeg:

modprobe drbd
cat /proc/drbd

Os gwelwch fersiwn: 9 - popeth yn iawn os fersiwn: 8 - mae'n golygu bod rhywbeth wedi mynd o'i le a bod angen i chi gymryd camau ychwanegol i ddarganfod y rhesymau.

Nawr gadewch i ni osod linstor-lloeren и drbd-utils:

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

Creu clwstwr

Pyllau storio a nodau

Fel backend byddwn yn cymryd TenauLVM, achos dyma'r symlaf ac mae'n cefnogi cipluniau.
Gosod lvm2, os nad ydych wedi gwneud hynny eisoes, a gadewch i ni greu pwll ThinLVM ar ein holl nodau storio:

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

Gellir cyflawni pob cam pellach yn uniongyrchol ar y rheolydd:

Gadewch i ni ychwanegu ein nodau:

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

Gadewch i ni greu pyllau storio:

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

Nawr, gadewch i ni wirio'r pyllau a grëwyd:

linstor storage-pool list

Os gwneir popeth yn gywir, yna dylem weld rhywbeth fel:

+-------------------------------------------- ----------------------------------------------- ----+ | StoragePol | nôd | gyrrwr | enw pwll | gallu rhydd | cyfanswm gallu | Yn cefnogi Cipluniau | |-------------------------------------------- ----------------------------------------------- ----| | data | nôd1 | LVM_THIN | drbdpool/pwll tenau | 64 GiB | 64 GiB | gwir | | data | nôd2 | LVM_THIN | drbdpool/pwll tenau | 64 GiB | 64 GiB | gwir | | data | nôd3 | LVM_THIN | drbdpool/pwll tenau | 64 GiB | 64 GiB | gwir | +-------------------------------------------- ----------------------------------------------- ----+

Adnoddau DRBD

Nawr, gadewch i ni geisio creu ein hadnodd DRBD newydd:

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

Gadewch i ni wirio'r adnoddau a grëwyd:

linstor resource list 

+-------------------------------------------- ----------------------------------------------- ---+ | nôd | adnodd | StoragePol | CyfrolNr | MânNr | Enw Dyfais | Dyrannwyd | mewn defnydd | cyflwr | |-------------------------------------------- ----------------------------------------------- ---| | nôd1 | myres | data | 0 | 1084 | /dev/drbd1084 | 52 KiB | Heb ei Ddefnyddio | UpToDate | | nôd2 | myres | data | 0 | 1084 | /dev/drbd1084 | 52 KiB | Heb ei Ddefnyddio | UpToDate | +-------------------------------------------- ----------------------------------------------- ---+

Gwych! - gwelwn fod yr adnodd wedi'i greu ar y ddau nod cyntaf, gallwn hefyd geisio creu adnodd heb ddisg ar y trydydd:

linstor resource create --diskless node3 myres

Ar nodau fe welwch y ddyfais hon bob amser fel /dev/drbd1084 neu /dev/drbd/by-res/myres/0

Dyma sut mae Linstor yn gweithio, gallwch chi gael mwy o wybodaeth gan dogfennaeth swyddogol.

Nawr byddaf yn siarad am sut i'w integreiddio ag OpenNebula

Sefydlu OpenNebula

Ni fyddaf yn mynd yn rhy ddwfn i'r broses sefydlu OpenNebula, oherwydd Manylir ar bob cam yn dogfennaeth swyddogol, yr wyf yn argymell ichi gyfeirio ato, ni fyddaf ond yn siarad am integreiddio OpenNebula â Linstor.

linstor_un

I ddatrys y broblem hon, ysgrifennais fy ngyrrwr fy hun - linstor_un, mae ar gael ar hyn o bryd fel ategyn a rhaid ei osod ar wahân.

Mae'r gosodiad cyfan yn cael ei berfformio ar nodau blaen OpenNebula ac nid oes angen camau gweithredu ychwanegol ar y nodau cyfrifo.

Yn gyntaf oll, mae angen inni wneud yn siŵr ein bod wedi gwneud hynny jq и linstor-cleient:

apt-get install jq linstor-client

Tîm linstor node list Dylai arddangos rhestr o nodau. Rhaid ychwanegu holl nodau cyfrifiannu OpenNebula at glwstwr Linstor.

Dadlwythwch a gosodwch yr ategyn:

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

Nawr mae angen i ni ei ychwanegu at y ffurfwedd OpenNebula, ar gyfer hyn rydym yn dilyn y camau syml a ddisgrifir yma.

Yna ailgychwyn OpenNebula:

systemctl restart opennebula

Ac ychwanegwch ein storfeydd data, system:

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

A'r storfa ddelweddau:

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

  • Paramedr AUTO_PLACE yn dangos nifer y copïau data a fydd yn cael eu creu ar gyfer pob delwedd newydd yn OpenNebula.
  • Paramedr CLONE_MODE yn nodi'n union sut y bydd delweddau'n cael eu clonio wrth greu peiriannau rhithwir newydd, snapshot - yn creu ciplun o'r ddelwedd ac yn defnyddio peiriant rhithwir o'r ciplun, copy - yn gwneud copi llawn o'r ddelwedd ar gyfer pob peiriant rhithwir.
  • В BRIDGE_LIST argymhellir nodi'r holl nodau a ddefnyddir i berfformio gweithrediadau clonio delwedd.

Am restr gyflawn o opsiynau a gefnogir, gweler README prosiect.

Mae hyn yn cwblhau'r gosodiad, nawr gallwch chi lawrlwytho rhywfaint o offer o'r swyddog Marchnad AgoredNebula a chreu peiriannau rhithwir ohono.

Cyswllt prosiect:
https://github.com/OpenNebula/addon-linstor_un

Ffynhonnell: hab.com

Ychwanegu sylw