Úložisko LINSTOR a jeho integrácia s OpenNebula

Úložisko LINSTOR a jeho integrácia s OpenNebula

Nie je to tak dávno, čo chalani z LINBIT predstavili svoje nové SDS riešenie - Linstor. Ide o úplne bezplatné úložisko založené na osvedčených technológiách: DRBD, LVM, ZFS. Linstor kombinuje jednoduchosť a dobre navrhnutú architektúru, čo vám umožňuje dosiahnuť stabilitu a celkom pôsobivé výsledky.

Dnes by som o tom chcel hovoriť trochu podrobnejšie a ukázať, ako ľahko sa dá integrovať s OpenNebula pomocou linstor_un - nového ovládača, ktorý som vyvinul špeciálne pre tento účel.

Linstor v kombinácii s OpenNebula vám umožňuje vybudovať rýchly a spoľahlivý cloud, ktorý možno jednoducho nasadiť na vašej vlastnej infraštruktúre.

Linstorova architektúra

Linstor nie je ani súborový systém, ani blokové úložisko ako také, Linstor je orchestrátor, ktorý poskytuje abstrakciu, ktorá vám umožňuje automatizovať vytváranie zväzkov v LVM alebo ZFS a replikovať ich pomocou DRBD9.

Prelomenie stereotypov

Ale počkať, DRBD? — Prečo to automatizovať a ako to vôbec môže fungovať?

Spomeňme si na minulosť, keď bol DRBD8 veľmi populárny. Jeho štandardné použitie zahŕňalo vytvorenie jedného veľkého blokového zariadenia a jeho rozrezanie na veľa malých častí pomocou rovnakého LVM. Druh mdadm RAID-1, ale s replikáciou cez sieť.

Tento prístup nie je bez nevýhod, a preto sa s príchodom DRBD9 zmenili princípy dizajnu úložiska, teraz je pre každý virtuálny stroj vytvorené samostatné zariadenie DRBD.

Prístup s nezávislými blokovými zariadeniami umožňuje lepšie využitie priestoru v klastri a pridáva aj množstvo ďalších funkcií. Pre každé takéto zariadenie môžete napríklad určiť počet replík, ich umiestnenie a individuálne nastavenia. Ľahko sa vytvárajú/odstraňujú, robia snímky, menia veľkosť, umožňujú šifrovanie a mnoho ďalšieho. Stojí za zmienku, že DRBD9 tiež podporuje kvórum, čo vám umožňuje vyhnúť sa situáciám s rozštiepeným mozgom.

Zdroje a backendy

Pri vytváraní nového blokového zariadenia Linstor umiestni požadovaný počet replík na rôzne uzly v klastri. Každú takúto repliku budeme nazývať zdrojom DRBD.

Existujú dva typy zdrojov:

  • Zdroj údajov — sú zariadením DRBD umiestneným na uzle v oblasti LVM alebo ZFS.
    V súčasnosti existuje podpora pre niekoľko backendov a ich počet neustále rastie. K dispozícii je podpora pre LVM, ThinLVM a ZFS. Posledné dve vám umožňujú vytvárať a používať snímky.
  • Bezdiskový zdroj — je zariadenie DRBD umiestnené na uzle bez backendu, ale umožňuje s ním zaobchádzať ako s bežným blokovým zariadením; všetky operácie čítania/zápisu budú presmerované na dátové zdroje. Najbližším analógom bezdiskových prostriedkov je iSCSI LUN.

Každý zdroj DRBD môže mať až 8 replík a iba jedna z nich môže byť štandardne aktívna - Primárne, všetci ostatní budú Sekundárny a ich použitie bude nemožné, pokiaľ bude existovať aspoň jedna primárna, to znamená, že budú medzi sebou jednoducho replikovať údaje.

Inštaláciou zariadenia DRBD do systému sa automaticky stáva Primárne, teda aj bezdiskový zdroj v terminológii DRBD môže byť primárny.

Tak prečo potrebujete Linstora?

Tým, že všetky úlohy náročné na zdroje zveríte jadru, Linstor je v podstate bežnou Java aplikáciou, ktorá vám umožňuje jednoducho automatizovať vytváranie zdrojov DRBD.
Navyše každý ním vytvorený zdroj bude nezávislým klastrom DRBD, ktorý funguje nezávisle, bez ohľadu na stav riadiacej roviny a iných zdrojov DRBD.

Linstor pozostáva iba z dvoch komponentov:

  • Linstor-ovládač - Hlavný kontrolér, ktorý poskytuje API na vytváranie a správu zdrojov. Komunikuje tiež so satelitmi, kontroluje na nich voľné miesto a posiela úlohy na vytvorenie a odstránenie nových zdrojov. Beží v jednej inštancii a používa databázu, ktorá môže byť interná (H2) alebo externá (PostgreSQL, MySQL, MariaDB)
  • Linstor-satelit — Nainštalované na všetkých úložných uzloch a poskytuje radiču informácie o voľnom priestore a tiež vykonáva úlohy prijaté z radiča na vytváranie a odstraňovanie nových zväzkov a zariadení DRBD nad nimi.

Linstor pracuje s nasledujúcimi kľúčovými konceptmi:

  • Uzol — fyzický server, na ktorom sa budú vytvárať a používať prostriedky DRBD.
  • Skladovací bazén — Oblasť LVM alebo ZFS vytvorená na uzle, v ktorom sa budú nachádzať zdroje DRBD. Možný je aj bezdiskový fond – ide o fond, v ktorom budú umiestnené iba bezdiskové prostriedky.
  • Definícia zdroja — Definícia zdroja je v podstate prototyp, ktorý popisuje názov a všetky jeho vlastnosti.
  • Definícia objemu — Definícia objemu. Každý zdroj môže pozostávať z viacerých zväzkov, každý zväzok musí mať veľkosť.
  • Prostriedky — Vytvorená inštancia blokového zariadenia, každý zdroj musí byť umiestnený na konkrétnom uzle a v nejakej úložnej oblasti.

Inštalácia Linstor

Odporúčam používať Ubuntu ako systém, pretože... existuje pre ňu pripravený PPA:

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

Alebo Debian, kde je možné nainštalovať Linstor z oficiálneho úložiska pre 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

kontrolór

Všetko je jednoduché tu:

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

Úložné uzly

Linuxové jadro sa v súčasnosti dodáva s modulom jadra v strome DRBD8, bohužiaľ nám nevyhovuje a potrebujeme nainštalovať DRBD9:

apt-get install drbd-dkms

Ako ukazuje prax, väčšina ťažkostí vzniká práve preto, že do systému je načítaný modul DRBD8, a nie DRBD9. Našťastie sa to dá ľahko skontrolovať spustením:

modprobe drbd
cat /proc/drbd

Ak vidíte Verzia: 9 - to znamená, že všetko je v poriadku, ak Verzia: 8 - znamená to, že sa niečo pokazilo a musíte vykonať ďalšie kroky, aby ste zistili príčiny.

Teraz poďme nainštalovať linstor-satelit и drbd-utils:

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

Vytvorte klaster

Úložné bazény a uzly

Ako backend vezmeme ThinLVM, pretože je najjednoduchší a podporuje snímky.
Sada lvm2, ak ste tak ešte neurobili, vytvorte fond ThinLVM na všetkých našich úložných uzloch:

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

Všetky ďalšie akcie je možné vykonávať priamo na ovládači:

Pridajme naše uzly:

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

Poďme vytvoriť úložné oblasti:

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

Teraz skontrolujeme vytvorené fondy:

linstor storage-pool list

Ak je všetko vykonané správne, mali by sme vidieť niečo ako:

+-------------------------------------------------- -------------------------------------------------- ----+ | StoragePool | Uzol | Vodič | Názov bazéna | Voľná ​​kapacita | Celková kapacita | Podporuje snímky | |-------------------------------------------------- -------------------------------------------------- ---| | údaje | uzol1 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | pravda | | údaje | uzol2 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | pravda | | údaje | uzol3 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | pravda | +-------------------------------------------------- -------------------------------------------------- ----+

zdroje DRBD

Teraz sa pokúsme vytvoriť náš nový zdroj DRBD:

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

Skontrolujeme vytvorené zdroje:

linstor resource list 

+-------------------------------------------------- -------------------------------------------------- ---+ | Uzol | Zdroj | StoragePool | VolumeNr | MinorNr | Názov zariadenia | Pridelené | Používam | Štát | |-------------------------------------------------- -------------------------------------------------- --| | uzol1 | myres | údaje | 0 | 1084 | /dev/drbd1084 | 52 KiB | Nepoužité | Aktualizácia | | uzol2 | myres | údaje | 0 | 1084 | /dev/drbd1084 | 52 KiB | Nepoužité | Aktualizácia | +-------------------------------------------------- -------------------------------------------------- ---+

Skvelé! — vidíme, že zdroj bol vytvorený na prvých dvoch uzloch, môžeme sa tiež pokúsiť vytvoriť bezdiskový zdroj na treťom:

linstor resource create --diskless node3 myres

Na uzloch vždy nájdete toto zariadenie ako /dev/drbd1084 alebo /dev/drbd/by-res/myres/0

Takto funguje Linstor, od ktorého môžete získať viac informácií oficiálna dokumentácia.

Teraz vám poviem, ako ho integrovať s OpenNebula

Nastavenie OpenNebula

Nebudem zachádzať príliš hlboko do procesu nastavenia OpenNebula, pretože... všetky kroky sú podrobne popísané v oficiálna dokumentácia, ktorú vám odporúčam kontaktovať, vám poviem iba o integrácii OpenNebula s Linstorom.

linstor_un

Na vyriešenie tohto problému som napísal svoj vlastný ovládač - linstor_un, je momentálne k dispozícii ako doplnok a musí sa nainštalovať samostatne.

Celá inštalácia sa vykonáva na frontendových uzloch OpenNebula a nevyžaduje ďalšie akcie na výpočtových uzloch.

V prvom rade sa musíme uistiť, že máme jq и linstor-klient:

apt-get install jq linstor-client

Tím linstor node list by mal zobraziť zoznam uzlov. Všetky výpočtové uzly OpenNebula musia byť pridané do klastra Linstor.

Stiahnite si a nainštalujte doplnok:

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

Teraz ho musíme pridať do konfigurácie OpenNebula, aby sme to urobili podľa jednoduchých krokov popísaných tu.

Potom reštartujte OpenNebula:

systemctl restart opennebula

A pridajte naše dátové úložiská, systém:

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 obchod s obrázkami:

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

  • Parameter AUTO_PLACE zobrazuje počet dátových replík, ktoré sa vytvoria pre každý nový obrázok v OpenNebula.
  • Parameter CLONE_MODE presne označuje, ako budú obrázky klonované pri vytváraní nových virtuálnych strojov, snapshot — vytvorí snímku obrazu a nasadí virtuálny stroj zo snímky, copy — vytvorí úplnú kópiu obrazu pre každý virtuálny počítač.
  • В BRIDGE_LIST Odporúča sa zadať všetky uzly, ktoré sa použijú na vykonávanie operácií klonovania obrázkov.

Úplný zoznam podporovaných parametrov nájdete v časti README projektu.

Tým je nastavenie dokončené, teraz si môžete stiahnuť nejaké zariadenie od oficiálneho Trhovisko OpenNebula a vytvárať z neho virtuálne stroje.

Odkaz na projekt:
https://github.com/OpenNebula/addon-linstor_un

Zdroj: hab.com

Pridať komentár