LINSTOR pohrana i njegova integracija s OpenNebula

LINSTOR pohrana i njegova integracija s OpenNebula

Nedavno su momci iz LINBIT-a predstavili svoje novo SDS rješenje - Linstor. Ovo je potpuno besplatna pohrana temeljena na provjerenim tehnologijama: DRBD, LVM, ZFS. Linstor kombinira jednostavnost i dobro osmišljenu arhitekturu, što vam omogućuje postizanje stabilnosti i prilično impresivnih rezultata.

Danas bih želio govoriti o njemu malo detaljnije i pokazati kako se lako može integrirati s OpenNebulom pomoću linstor_un - novog upravljačkog programa koji sam razvio posebno za ovu svrhu.

Linstor u kombinaciji s OpenNebulom omogućuje vam izgradnju brzog i pouzdanog oblaka koji se lako može implementirati na vlastitu infrastrukturu.

Linstor arhitektura

Linstor nije ni datotečni sustav ni blok pohrana sam po sebi, Linstor je orkestrator koji pruža sloj apstrakcije koji vam omogućuje automatiziranje stvaranja volumena u LVM-u ili ZFS-u i njihovo repliciranje pomoću DRBD9.

Razbijanje stereotipa

Ali čekaj, DRBD? — Zašto ga automatizirati i kako uopće može funkcionirati?

Prisjetimo se prošlosti, kada je DRBD8 bio vrlo popularan. Njegova standardna upotreba uključivala je stvaranje jednog velikog blok uređaja i njegovo rezanje na mnogo malih dijelova, koristeći isti LVM. Neka vrsta mdadm RAID-1 ali s replikacijom preko mreže.

Ovaj pristup nije bez nedostataka, pa su se s dolaskom DRBD9 promijenila načela dizajna pohrane; sada se za svako virtualno računalo stvara zasebni DRBD uređaj.

Pristup s neovisnim blok uređajima omogućuje bolju iskorištenost prostora u klasteru, a također dodaje niz dodatnih mogućnosti. Na primjer, za svaki takav uređaj možete odrediti broj replika, njihov položaj i pojedinačne postavke. Lako ih je izraditi/izbrisati, napraviti snimke, promijeniti veličinu, omogućiti enkripciju i još mnogo toga. Vrijedno je napomenuti da DRBD9 također podržava kvorum, što vam omogućuje da izbjegnete situacije podijeljenog mozga.

Resursi i pozadina

Prilikom izrade novog blok uređaja Linstor postavlja potreban broj replika na različite čvorove u klasteru. Svaku takvu repliku nazvat ćemo DRBD resurs.

Postoje dvije vrste resursa:

  • Izvor podataka — su DRBD uređaj smješten na čvoru u LVM ili ZFS skupu.
    Trenutno postoji podrška za nekoliko pozadina i njihov broj stalno raste. Postoji podrška za LVM, ThinLVM i ZFS. Posljednja dva vam omogućuju stvaranje i korištenje snimaka.
  • Resurs bez diska — je DRBD uređaj postavljen na čvor bez pozadine, ali dopušta da se s njime postupa kao s uobičajenim blok uređajem; sve operacije čitanja/pisanja bit će preusmjerene na podatkovne resurse. Najbliži analog resursima bez diska je iSCSI LUN.

Svaki DRBD resurs može imati do 8 replika, a samo jedna od njih može biti aktivna prema zadanim postavkama - osnovni, svi ostali će biti Sekundarni i njihova će uporaba biti nemoguća sve dok postoji barem jedan Primary, odnosno oni će jednostavno međusobno replicirati podatke.

Instaliranjem DRBD uređaja u sustav, on automatski postaje osnovni, stoga čak i resurs bez diska, u DRBD terminologiji, može biti primarni.

Pa zašto vam treba Linstor?

Povjeravajući sve zadatke koji zahtijevaju velike resurse jezgri, Linstor je u biti obična Java aplikacija koja vam omogućuje jednostavnu automatizaciju stvaranja DRBD resursa.
Štoviše, svaki resurs koji on stvori bit će neovisni DRBD klaster koji radi neovisno, bez obzira na stanje kontrolne ravnine i drugih DRBD resursa.

Linstor se sastoji od samo dvije komponente:

  • Linstor-kontrolor - Glavni kontroler, koji pruža API za kreiranje i upravljanje resursima. Također komunicira sa satelitima, provjerava slobodan prostor na njima i šalje zadatke za stvaranje i brisanje novih resursa. Pokreće se u jednoj instanci i koristi bazu podataka, koja može biti unutarnja (H2) ili vanjska (PostgreSQL, MySQL, MariaDB)
  • Linstor-satelit — Instalira se na svim čvorovima za pohranu i pruža kontroleru informacije o slobodnom prostoru, a također obavlja zadatke primljene od kontrolera za stvaranje i brisanje novih volumena i DRBD uređaja povrh njih.

Linstor radi sa sljedećim ključnim konceptima:

  • Čvor — fizički poslužitelj na kojem će se kreirati i koristiti DRBD resursi.
  • Bazen za pohranu — LVM ili ZFS skup stvoren na čvoru u kojem će se nalaziti DRBD resursi. Moguć je i bazen bez diska - ovo je bazen u kojem će se nalaziti samo resursi bez diska.
  • Definicija izvora — Definicija resursa je u biti prototip koji opisuje naziv i sva njegova svojstva.
  • Definicija volumena — Definicija volumena. Svaki resurs može se sastojati od više volumena, svaki volumen mora imati veličinu.
  • Resurs — Stvorena instanca blok uređaja, svaki resurs mora biti postavljen na određeni čvor i u neko skladište za pohranu.

Linstor instalacija

Preporučujem korištenje Ubuntua kao sustava, jer... postoji za nju spreman PPA:

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

Ili Debian, gdje se Linstor može instalirati iz službenog repozitorija za 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

kontrolor

Ovdje je sve jednostavno:

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

Čvorovi za pohranu

Linux kernel trenutno se isporučuje s in-tree modulom kernela DRBD8, nažalost nama ne odgovara i moramo instalirati DRBD9:

apt-get install drbd-dkms

Kao što praksa pokazuje, većina poteškoća nastaje upravo zato što se u sustav učitava modul DRBD8, a ne DRBD9. Srećom, to je lako provjeriti pokretanjem:

modprobe drbd
cat /proc/drbd

Ako vidiš Verzija: 9 - znači da je sve u redu ako Verzija: 8 - to znači da je nešto pošlo po zlu i morate poduzeti dodatne korake kako biste saznali razloge.

Sada idemo instalirati linstor-satelit и drbd-utils:

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

Napravite klaster

Skupovi i čvorovi za pohranu

Kao backend ćemo uzeti ThinLVM, jer najjednostavniji je i podržava snimke.
Postaviti lvm2, ako to već niste učinili, stvorimo ThinLVM skup na svim našim čvorovima za pohranu:

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

Sve daljnje radnje mogu se izvršiti izravno na upravljaču:

Dodajmo naše čvorove:

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

Kreirajmo skupove za pohranu:

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

Sada provjerimo stvorene bazene:

linstor storage-pool list

Ako je sve učinjeno kako treba, trebali bismo vidjeti nešto poput:

+------------------------------------------------ -------------------------------------------------- ----+ | Spremište | Čvor | Vozač | Ime bazena | FreeCapacity | Ukupni kapacitet | Podržava snimke | |------------------------------------------------ - ------------------------------------------------- - ---| | podaci | čvor1 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | istina | | podaci | čvor2 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | istina | | podaci | čvor3 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | istina | +------------------------------------------------ -------------------------------------------------- ----+

DRBD resursi

Pokušajmo sada stvoriti naš novi DRBD resurs:

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

Provjerimo stvorene resurse:

linstor resource list 

+------------------------------------------------ -------------------------------------------------- ---+ | Čvor | Izvor | Spremište | SvezakNr | ManjiNr | Naziv uređaja | Dodijeljeno | U upotrebi | Država | |------------------------------------------------ - ------------------------------------------------- - --| | čvor1 | myres | podaci | 0 | 1084 | /dev/drbd1084 | 52 KiB | Neiskorišten | Ažurirano | | čvor2 | myres | podaci | 0 | 1084 | /dev/drbd1084 | 52 KiB | Neiskorišten | Ažurirano | +------------------------------------------------ -------------------------------------------------- ---+

Sjajno! — vidimo da je resurs stvoren na prva dva čvora, također možemo pokušati stvoriti resurs bez diska na trećem:

linstor resource create --diskless node3 myres

Na čvorovima ćete uvijek pronaći ovaj uređaj kao /dev/drbd1084 ili /dev/drbd/by-res/myres/0

Ovako funkcionira Linstor, više informacija možete dobiti kod službena dokumentacija.

Sada ću vam reći kako ga integrirati s OpenNebulom

Postavljanje OpenNebule

Neću ulaziti preduboko u proces postavljanja OpenNebule, jer... svi su koraci detaljno opisani u službena dokumentacija, na koje vam preporučujem da se obratite, reći ću vam samo o integraciji OpenNebule s Linstorom.

linstor_un

Kako bih riješio ovaj problem, napisao sam vlastiti upravljački program - linstor_un, trenutno je dostupan kao dodatak i mora se zasebno instalirati.

Cjelokupna instalacija provodi se na prednjim OpenNebula čvorovima i ne zahtijeva dodatne radnje na računalnim čvorovima.

Prije svega, moramo biti sigurni da imamo jq и linstor-klijent:

apt-get install jq linstor-client

Momčad linstor node list treba prikazati popis čvorova. Svi računalni čvorovi OpenNebula moraju se dodati Linstor klasteru.

Preuzmite i instalirajte dodatak:

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

Sada ga moramo dodati konfiguraciji OpenNebula, da bismo to učinili slijedimo opisane jednostavne korake здесь.

Zatim ponovno pokrenite OpenNebula:

systemctl restart opennebula

I dodajte naša spremišta podataka, sustav:

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

I pohrana slika:

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

  • Parametar AUTO_PLACE prikazuje broj replika podataka koje će biti stvorene za svaku novu sliku u OpenNebuli.
  • Parametar CLONE_MODE označava točno kako će slike biti klonirane prilikom stvaranja novih virtualnih strojeva, snapshot — stvorit će snimku slike i implementirati virtualni stroj iz snimke, copy — napravit će potpunu kopiju slike za svaki virtualni stroj.
  • В BRIDGE_LIST Preporuča se navesti sve čvorove koji će se koristiti za izvođenje operacija kloniranja slike.

Za potpuni popis podržanih parametara pogledajte README projekt.

Ovo dovršava postavljanje, sada možete preuzeti neki uređaj sa službene strane OpenNebula Marketplace i od toga stvarati virtualne strojeve.

Link projekta:
https://github.com/OpenNebula/addon-linstor_un

Izvor: www.habr.com

Dodajte komentar