
Ne tako davno, momci iz LINBIT-a predstavili su svoje novo SDS rješenje - Linstor. Ovo je potpuno besplatno skladište zasnovano na proverenim tehnologijama: DRBD, LVM, ZFS. Linstor kombinuje jednostavnost i dobro dizajniranu arhitekturu, što vam omogućava da postignete stabilnost i prilično impresivne rezultate.
Danas bih želeo da pričam malo više o tome i da pokažem kako se lako može integrisati sa OpenNebulom koristeći linstor_un - novi drajver koji sam razvio posebno za ovu svrhu.
Linstor u kombinaciji sa OpenNebulom omogućava vam da izgradite brz i pouzdan oblak koji se lako može postaviti na vašu vlastitu infrastrukturu.
Linstor arhitektura
Linstor nije ni sistem datoteka ni blok memorija sam po sebi, Linstor je orkestrator koji obezbeđuje sloj apstrakcije za automatizaciju kreiranja volumena u LVM ili ZFS i njihovo repliciranje pomoću DRBD9.
Razbijanje stereotipa
Ali čekaj, DRBD? - Zašto ga automatizovati i kako uopšte može da funkcioniše?
Prisjetimo se prošlosti kada je DRBD8 bio veoma popularan. Njegova standardna upotreba značila je stvaranje jednog velikog blok uređaja i njegovo rezanje na mnogo malih komada, koristeći isti LVM. Neka vrsta mdadm RAID-1 ali sa mrežnom replikacijom.
Ovaj pristup nije bez nedostataka i stoga, s pojavom DRBD9, principi izgradnje skladišta su se promijenili, sada se kreira poseban DRBD uređaj za svaku virtualnu mašinu.
Pristup nezavisnih blok uređaja omogućava bolje korištenje prostora u klasteru, a također dodaje niz dodatnih funkcija. Na primjer, za svaki takav uređaj možete odrediti broj replika, njihovu lokaciju i pojedinačne postavke. Lako ih je kreirati/brisati, praviti snimke, mijenjati veličinu, omogućiti šifriranje i još mnogo toga. Vrijedi napomenuti da DRBD9 također održava kvorum, čime se izbjegavaju situacije podjele mozga.
Resursi i pozadina
Prilikom kreiranja novog blok uređaja, Linstor postavlja potreban broj replika na različite čvorove u klasteru. Svaku takvu repliku ćemo nazvati DRBD resursom.
Resursi su dvije vrste:
- Izvor podataka - predstavljaju DRBD uređaj koji se nalazi na čvoru u LVM ili ZFS spremištu.
Trenutno postoji podrška za nekoliko backenda i njihov broj stalno raste. Postoji podrška za LVM, ThinLVM i ZFS. Posljednja dva vam omogućavaju da kreirate i koristite snimke. - Resurs bez diska - je DRBD uređaj koji se nalazi na čvoru bez backend-a, ali dozvoljavajući da se tretira kao običan blok uređaj, sve operacije čitanja/pisanja će biti preusmjerene na resurse podataka. Najbliži analog resursima bez diska je iSCSI LUN.
Svaki DRBD resurs može imati do 8 replika i samo jedna od njih može biti aktivna po defaultu − osnovni, sve ostalo će biti sekundarni i njihova upotreba će biti nemoguća sve dok postoji barem jedan primarni, odnosno jednostavno će replicirati podatke između sebe.
Montiranjem DRBD uređaja u sistem, on automatski postaje osnovni, tako da čak i resurs bez diska, u DRBD terminologiji, može biti primarni.
Pa zašto nam treba Linstor?
Povjeravanjem svih resursno intenzivnih zadataka kernelu, Linstor je u suštini obična Java aplikacija koja vam omogućava da lako automatizirate kreiranje DRBD resursa.
U isto vrijeme, svaki resurs koji on kreira bit će nezavisan DRBD klaster koji radi nezavisno, bez obzira na stanje kontrolne ravni i drugih DRBD resursa.
Linstor se sastoji od samo dvije komponente:
- linstor-kontroler - Glavni kontroler, koji pruža API za kreiranje i upravljanje resursima. Također komunicira sa satelitima, provjerava slobodan prostor na njima i šalje poslove za kreiranje i brisanje novih resursa. Pokreće se u jednoj instanci i koristi bazu podataka koja može biti interna (H2) ili eksterna (PostgreSQL, MySQL, MariaDB)
- linstor-satelit - Instalira se na svim čvorovima za skladištenje i daje kontroleru informacije o slobodnom prostoru, a također obavlja zadatke primljene od kontrolera za kreiranje i brisanje novih volumena i DRBD uređaja iznad njih.
Linstor radi sa sljedećim ključnim konceptima:
- čvor — fizički server na kojem će se kreirati i koristiti DRBD resursi.
- skladišni bazen - LVM ili ZFS spremište kreirano na čvoru u koji će biti smješteni DRBD resursi. Moguće je i spremište bez diska - ovo je spremište u koje će biti smješteni samo resursi bez diska.
- definicija resursa - Definicija resursa, u stvari to je prototip koji opisuje ime i sva njegova svojstva.
- definicija volumena — Definicija volumena. Svaki resurs se može sastojati od nekoliko volumena, svaki volumen mora imati veličinu.
- resurs - Kreirana instanca blok uređaja, svaki resurs mora biti smješten na određenom čvoru iu nekom spremištu.
Instalacija Linstora
Preporučujem korištenje Ubuntua kao sistema, jer. postoji za nju :
add-apt-repository ppa:linbit/linbit-drbd9-stack
apt-get updateIli Debian, gdje se Linstor može instalirati iz službenog Proxmox spremišta:
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 updatekontrolor
Ovde je sve jednostavno:
apt-get install linstor-controller linstor-client
systemctl enable linstor-controller
systemctl start linstor-controllerČvorovi za skladištenje
Linux kernel trenutno se isporučuje sa modulom kernela u stablu DRBD8,nazalost nam ne odgovara i moramo ga instalirati DRBD9:
apt-get install drbd-dkmsKao što pokazuje praksa, većina poteškoća nastaje upravo s činjenicom da se u sistem učitava modul DRBD8, a ne DRBD9. Srećom, ovo je lako provjeriti pokretanjem:
modprobe drbd
cat /proc/drbdAko vidite verzija: 9 - sve je u redu ako verzija: 8 - to znači da je nešto pošlo po zlu i da morate poduzeti dodatne korake kako biste saznali razloge.
Sada instalirajmo linstor-satelit и drbd-utils:
apt-get install linstor-satellite drbd-utils
systemctl enable linstor-satellite
systemctl start linstor-satelliteKreirajte klaster
Skladišni bazeni i čvorovi
Kao backend ćemo uzeti ThinLVM, jer najjednostavniji je i podržava snimke.
Ustanovite lvm2, ako to već niste učinili, i hajde da kreiramo ThinLVM bazen na svim našim čvorovima za pohranu:
sudo vgcreate drbdpool /dev/sdb
sudo lvcreate -L 800G -T drbdpool/thinpoolSve dalje radnje mogu se izvršiti direktno na kontroleru:
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.13Kreirajmo skladišne bazene:
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/thinpoolSada provjerimo kreirane bazene:
linstor storage-pool listAko je sve urađeno kako treba, trebali bismo vidjeti nešto poput:
+------------------------------------------------ -------------------------------------------------- ----+ | StoragePool | čvor | vozač | naziv bazena | freecapacity | ukupni kapacitet | Podržava Snapshots | |------------------------------------------------ -------------------------------------------------- ----| | podaci | čvor1 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | istina | | podaci | node2 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | istina | | podaci | node3 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | istina | +------------------------------------------------ -------------------------------------------------- ----+
DRBD resursi
Pokušajmo sada kreirati naš novi DRBD resurs:
linstor resource-definition create myres
linstor volume-definition create myres 1G
linstor resource create myres --auto-place 2Provjerimo kreirane resurse:
linstor resource list +------------------------------------------------ -------------------------------------------------- ---+ | čvor | resurs | StoragePool | VolumeNr | MinorNr | DeviceName | Dodijeljeno | u upotrebi | stanje | |------------------------------------------------ -------------------------------------------------- ---| | čvor1 | myres | podaci | 0 | 1084 | /dev/drbd1084 | 52 KiB | Neiskorišteno | UpToDate | | node2 | myres | podaci | 0 | 1084 | /dev/drbd1084 | 52 KiB | Neiskorišteno | UpToDate | +------------------------------------------------ -------------------------------------------------- ---+
Odlično! - vidimo da je resurs kreiran na prva dva čvora, također možemo pokušati kreirati resurs bez diska na trećem:
linstor resource create --diskless node3 myresNa čvorovima ćete uvijek pronaći ovaj uređaj kao /dev/drbd1084 ili /dev/drbd/by-res/myres/0
Ovako Linstor radi, možete dobiti više informacija od .
Sada ću govoriti o tome kako da ga integrišem sa OpenNebulom
Postavljanje OpenNebula
Neću ulaziti previše u proces postavljanja OpenNebula, jer Svi koraci su detaljno opisani u , na koji preporučujem da se osvrnete, govoriću samo o integraciji OpenNebula sa Linstorom.
linstor_un
Da riješim ovaj problem, napisao sam svoj drajver − , trenutno je dostupan kao dodatak i mora se zasebno instalirati.
Celokupna instalacija se izvodi na frontend OpenNebula čvorovima i ne zahteva dodatne radnje na računarskim čvorovima.
Prije svega, moramo biti sigurni da imamo jq и linstor-client:
apt-get install jq linstor-clienttim linstor node list treba prikazati listu čvorova. Svi OpenNebula računarski čvorovi moraju biti dodati u Linstor klaster.
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-masterSada ga moramo dodati u OpenNebula konfiguraciju, za to slijedimo jednostavne opisane korake .
Zatim ponovo pokrenite OpenNebula:
systemctl restart opennebulaI dodajte naše skladišta podataka, 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.confI prodavnica 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_PLACEprikazuje broj replika podataka koje će biti kreirane za svaku novu sliku u OpenNebula. - Parametar
CLONE_MODEoznačava tačno kako će slike biti klonirane prilikom kreiranja novih virtuelnih mašina,snapshot- će kreirati snimak slike i implementirati virtuelnu mašinu iz snimka,copy- napraviće punu kopiju slike za svaku virtuelnu mašinu. - В
BRIDGE_LISTpreporučljivo je navesti sve čvorove koji će se koristiti za izvođenje operacija kloniranja slike.
Za kompletnu listu podržanih opcija, pogledajte projekat.
Ovim je podešavanje završeno, sada možete preuzeti neki uređaj sa službenog i kreirati virtuelne mašine od toga.
Link projekta:
izvor: www.habr.com
