LINSTOR saugykla ir jos integravimas su OpenNebula

LINSTOR saugykla ir jos integravimas su OpenNebula

Visai neseniai vaikinai iš LINBIT pristatė savo naują SDS sprendimą – Linstor. Tai visiškai nemokama saugykla, pagrįsta patikrintomis technologijomis: DRBD, LVM, ZFS. Linstor sujungia paprastumą ir gerai suplanuotą architektūrą, leidžiančią pasiekti stabilumo ir gana įspūdingų rezultatų.

Šiandien norėčiau apie tai pakalbėti šiek tiek išsamiau ir parodyti, kaip lengvai jį galima integruoti su OpenNebula naudojant linstor_un – naują tvarkyklę, kurią sukūriau specialiai šiam tikslui.

„Linstor“ kartu su „OpenNebula“ leidžia sukurti greitą ir patikimą debesį, kurį galima lengvai įdiegti savo infrastruktūroje.

Linstor architektūra

„Linstor“ nėra nei failų sistema, nei blokų saugykla, o „Linstor“ yra orkestruotojas, suteikiantis abstrakcijos sluoksnį, leidžiantį automatizuoti tomų kūrimą LVM arba ZFS ir atkartoti juos naudojant DRBD9.

Stereotipų laužymas

Bet palauk, DRBD? — Kam tai automatizuoti ir kaip ji gali veikti?

Prisiminkime praeitį, kai DRBD8 buvo labai populiarus. Standartinis jo naudojimas apėmė vieno didelio blokinio įrenginio sukūrimą ir supjaustymą į daug mažų gabalėlių, naudojant tą patį LVM. Savotiškas mdadm RAID-1, bet su replikacija tinkle.

Šis požiūris nėra be trūkumų, todėl, atsiradus DRBD9, pasikeitė saugyklos projektavimo principai, dabar kiekvienai virtualiai mašinai sukuriamas atskiras DRBD įrenginys.

Nepriklausomų blokinių įrenginių metodas leidžia geriau išnaudoti erdvę klasteryje, taip pat prideda daugybę papildomų funkcijų. Pavyzdžiui, kiekvienam tokiam įrenginiui galite nustatyti kopijų skaičių, jų vietą ir individualius nustatymus. Juos lengva sukurti / ištrinti, daryti momentines nuotraukas, keisti dydį, įjungti šifravimą ir dar daugiau. Verta paminėti, kad DRBD9 taip pat palaiko kvorumą, o tai leidžia išvengti smegenų padalijimo.

Ištekliai ir užpakalinės programos

Kurdamas naują blokinį įrenginį, „Linstor“ įdeda reikiamą skaičių kopijų skirtinguose klasterio mazguose. Kiekvieną tokią kopiją vadinsime DRBD šaltiniu.

Yra dviejų tipų ištekliai:

  • Duomenų šaltinis — yra DRBD įrenginiai, esantys LVM arba ZFS telkinio mazge.
    Šiuo metu palaikomos kelios užpakalinės programos ir jų skaičius nuolat auga. Yra LVM, ThinLVM ir ZFS palaikymas. Paskutiniai du leidžia kurti ir naudoti momentines nuotraukas.
  • Išteklius be disko — yra DRBD įrenginys, patalpintas mazge be užpakalinės sistemos, tačiau leidžiantis jį traktuoti kaip įprastą blokinį įrenginį; visos skaitymo / rašymo operacijos bus nukreiptos į duomenų išteklius. Artimiausias bedisko išteklių analogas yra iSCSI LUN.

Kiekvienas DRBD šaltinis gali turėti iki 8 kopijų ir tik viena iš jų gali būti aktyvi pagal numatytuosius nustatymus – Pagrindinis, visi kiti bus Vidurinis ir jų naudojimas bus neįmanomas tol, kol bus bent vienas pirminis, tai yra, jie tiesiog atkartos duomenis tarpusavyje.

Įdiegus DRBD įrenginį į sistemą, jis automatiškai tampa Pagrindinis, taigi net be disko ištekliai, DRBD terminologija, gali būti pirminiai.

Taigi kodėl jums reikia „Linstor“?

Patikėdamas visas daug išteklių reikalaujančias užduotis branduoliui, „Linstor“ iš esmės yra įprasta „Java“ programa, leidžianti lengvai automatizuoti DRBD išteklių kūrimą.
Be to, kiekvienas jo sukurtas išteklius bus nepriklausomas DRBD klasteris, veikiantis savarankiškai, nepriklausomai nuo valdymo plokštumos ir kitų DRBD išteklių būsenos.

Linstor sudaro tik du komponentai:

  • Linstor-valdiklis - Pagrindinis valdiklis, teikiantis API kūrimui ir išteklių valdymui. Jis taip pat palaiko ryšį su palydovais, tikrina juose esančią laisvą vietą ir siunčia užduotis naujiems ištekliams kurti ir ištrinti. Jis veikia vienu atveju ir naudoja duomenų bazę, kuri gali būti vidinė (H2) arba išorinė (PostgreSQL, MySQL, MariaDB).
  • Linstor-palydovas — Įdiegta visuose saugojimo mazguose ir teikia valdikliui informaciją apie laisvą vietą, taip pat atlieka iš valdiklio gautas užduotis, kad sukurtų ir pašalintų naujus tomus ir DRBD įrenginius.

„Linstor“ veikia pagal šias pagrindines koncepcijas:

  • mazgas — fizinis serveris, kuriame bus kuriami ir naudojami DRBD ištekliai.
  • Sandėliavimo baseinas — LVM arba ZFS telkinys, sukurtas mazge, kuriame bus DRBD ištekliai. Taip pat galimas baseinas be disko - tai yra baseinas, kuriame bus tik resursai be disko.
  • Išteklių apibrėžimas — Ištekliaus apibrėžimas iš esmės yra prototipas, apibūdinantis pavadinimą ir visas jo savybes.
  • Garso apibrėžimas — Tūrio apibrėžimas. Kiekvienas išteklius gali sudaryti iš kelių tomų, kiekvienas tomas turi turėti savo dydį.
  • Išteklių — Sukurtas blokinio įrenginio egzempliorius, kiekvienas išteklius turi būti patalpintas tam tikrame mazge ir tam tikrame saugojimo telkinyje.

Linstor montavimas

Rekomenduoju naudoti Ubuntu kaip sistemą, nes... egzistuoja jai paruoštas PPA:

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

Arba „Debian“, kur „Linstor“ galima įdiegti iš oficialios „Proxmox“ saugyklos:

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

kontrolierius

Čia viskas paprasta:

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

Saugojimo mazgai

„Linux“ branduolys šiuo metu pristatomas su medyje esančiu branduolio moduliu DRBD8, deja, mums netinka ir reikia įdiegti DRBD9:

apt-get install drbd-dkms

Kaip rodo praktika, daugiausia sunkumų kyla būtent todėl, kad į sistemą įkeliamas DRBD8 modulis, o ne DRBD9. Laimei, tai lengva patikrinti paleidus:

modprobe drbd
cat /proc/drbd

Jei matai versija: 9 - tai reiškia, kad viskas gerai, jei versija: 8 - tai reiškia, kad kažkas nutiko ir jums reikia imtis papildomų veiksmų, kad išsiaiškintumėte priežastis.

Dabar įdiegkime linstor-palydovas и drbd-utils:

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

Sukurkite klasterį

Sandėliavimo baseinai ir mazgai

Kaip backend mes imsimės ThinLVM, nes tai paprasčiausias ir palaiko momentines nuotraukas.
Nustatyti lvm2, jei dar to nepadarėte, sukurkime ThinLVM telkinį visuose mūsų saugojimo mazguose:

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

Visi kiti veiksmai gali būti atliekami tiesiogiai valdikliu:

Pridėkime savo mazgus:

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

Sukurkime saugyklos baseinus:

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

Dabar patikrinkime sukurtus baseinus:

linstor storage-pool list

Jei viskas padaryta teisingai, turėtume pamatyti kažką panašaus į:

+-------------------------------------------------- -------------------------------------------------- ----+ | StorageBool | Mazgas | Vairuotojas | PoolName | FreeCapacity | TotalCapacity | Palaiko momentines nuotraukas | |------------------------------------------------ - ------------------------------------------------- ---| | duomenys | mazgas1 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | tiesa | | duomenys | mazgas2 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | tiesa | | duomenys | mazgas3 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | tiesa | +-------------------------------------------------- -------------------------------------------------- ----+

DRBD ištekliai

Dabar pabandykime sukurti savo naują DRBD šaltinį:

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

Patikrinkime sukurtus išteklius:

linstor resource list 

+-------------------------------------------------- -------------------------------------------------- ---+ | Mazgas | Šaltinis | StorageBool | TomasNr | MinorNr | Įrenginio pavadinimas | Skirta | InUse | Valstybė | |------------------------------------------------ - ------------------------------------------------- --| | mazgas1 | myres | duomenys | 0 | 1084 | /dev/drbd1084 | 52 KiB | Nenaudotas | UpToDate | | mazgas2 | myres | duomenys | 0 | 1084 | /dev/drbd1084 | 52 KiB | Nenaudotas | UpToDate | +-------------------------------------------------- -------------------------------------------------- ---+

Puiku! - matome, kad išteklius buvo sukurtas pirmuosiuose dviejuose mazguose, taip pat galime pabandyti sukurti išteklius be disko trečiajame:

linstor resource create --diskless node3 myres

Mazguose visada rasite šį įrenginį kaip /dev/drbd1084 arba /dev/drbd/by-res/myres/0

Taip veikia Linstor, daugiau informacijos galite gauti iš oficialius dokumentus.

Dabar aš jums pasakysiu, kaip integruoti jį su „OpenNebula“.

„OpenNebula“ nustatymas

Per daug nesigilinsiu į „OpenNebula“ sąrankos procesą, nes... visi žingsniai yra išsamiai aprašyti oficialius dokumentus, į kurią rekomenduoju kreiptis, papasakosiu tik apie OpenNebula integravimą su Linstor.

linstor_un

Norėdami išspręsti šią problemą, parašiau savo tvarkyklę - linstor_un, jis šiuo metu pasiekiamas kaip papildinys ir turi būti įdiegtas atskirai.

Visas diegimas atliekamas priekiniuose OpenNebula mazguose ir nereikalauja papildomų veiksmų skaičiavimo mazguose.

Pirmiausia turime įsitikinti, kad turime jq и linstor-klientas:

apt-get install jq linstor-client

Komanda linstor node list turėtų rodyti mazgų sąrašą. Visi OpenNebula skaičiavimo mazgai turi būti įtraukti į Linstor klasterį.

Atsisiųskite ir įdiekite papildinį:

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

Dabar turime pridėti jį prie „OpenNebula“ konfigūracijos, kad tai padarytume, atliksime paprastus aprašytus veiksmus čia.

Tada iš naujo paleiskite OpenNebula:

systemctl restart opennebula

Ir pridėkite mūsų duomenų saugyklas, sistemą:

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

Ir vaizdų parduotuvė:

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

  • Parametras AUTO_PLACE rodomas duomenų kopijų, kurios bus sukurtos kiekvienam naujam vaizdui OpenNebula, skaičius.
  • Parametras CLONE_MODE tiksliai nurodo, kaip vaizdai bus klonuojami kuriant naujas virtualias mašinas, snapshot — sukurs momentinę vaizdo kopiją ir įdiegs virtualią mašiną iš momentinės nuotraukos, copy — sukurs pilną kiekvienos virtualios mašinos vaizdo kopiją.
  • В BRIDGE_LIST Rekomenduojama nurodyti visus mazgus, kurie bus naudojami vaizdo klonavimo operacijoms atlikti.

Išsamų palaikomų parametrų sąrašą žr SKAITYK MANE projektą.

Tai užbaigia sąranką, dabar galite atsisiųsti tam tikrą prietaisą iš oficialaus „OpenNebula“ prekyvietė ir sukurti iš jo virtualias mašinas.

Projekto nuoroda:
https://github.com/OpenNebula/addon-linstor_un

Šaltinis: www.habr.com

Добавить комментарий