A LINSTOR tárhely és integrációja az OpenNebulával

A LINSTOR tárhely és integrációja az OpenNebulával

Nem sokkal ezelőtt a LINBIT srácai bemutatták új SDS-megoldásukat, a Linstort. Ez egy teljesen ingyenes tárhely, amely bevált technológiákon alapul: DRBD, LVM, ZFS. A Linstor ötvözi az egyszerűséget és a jól megtervezett architektúrát, amely lehetővé teszi a stabilitás és a lenyűgöző eredmények elérését.

Ma egy kicsit részletesebben szeretnék beszélni róla, és megmutatni, milyen egyszerűen integrálható az OpenNebula-val a linstor_un segítségével - egy új meghajtó, amelyet kifejezetten erre a célra fejlesztettem ki.

A Linstor az OpenNebulával kombinálva gyors és megbízható felhő felépítését teszi lehetővé, amely könnyen telepíthető saját infrastruktúráján.

Linstor architektúra

A Linstor önmagában sem nem fájlrendszer, sem nem blokktároló, a Linstor pedig egy olyan absztrakciós réteget biztosít, amely lehetővé teszi a kötetek LVM-ben vagy ZFS-ben történő létrehozásának automatizálását és azok replikálását a DRBD9 segítségével.

A sztereotípiák megtörése

De várj, DRBD? — Miért kell automatizálni, és hogyan működhet?

Emlékezzünk a múltra, amikor a DRBD8 nagyon népszerű volt. Szokásos használata egy nagy blokk-eszköz létrehozását jelentette, és sok kis darabra vágja ugyanazt az LVM-et. Egyfajta mdadm RAID-1, de hálózaton keresztüli replikációval.

Ez a megközelítés nem mentes a hátrányaitól, ezért a DRBD9 megjelenésével a tárolótervezés elvei megváltoztak, most minden virtuális géphez külön DRBD-eszköz jön létre.

A független blokkeszközökkel való megközelítés lehetővé teszi a klaszterben lévő hely jobb kihasználását, és számos további funkciót is hozzáad. Például minden ilyen eszköznél meghatározhatja a replikák számát, elhelyezkedését és egyedi beállításait. Könnyen létrehozhatók/törölhetők, pillanatfelvételeket készíthetnek, átméretezhetők, titkosítást tesznek lehetővé és még sok más. Érdemes megjegyezni, hogy a DRBD9 támogatja a kvórumot is, ami lehetővé teszi a megosztott agyi helyzetek elkerülését.

Erőforrások és háttérrendszerek

Új blokkeszköz létrehozásakor a Linstor a szükséges számú replikát a fürt különböző csomópontjaira helyezi el. Minden ilyen replikát DRBD-erőforrásnak fogunk nevezni.

Kétféle forrás létezik:

  • Adatforrás — egy LVM- vagy ZFS-készlet csomópontján található DRBD-eszközök.
    Jelenleg több háttérrendszer is támogatott és számuk folyamatosan növekszik. Az LVM, a ThinLVM és a ZFS támogatja. Az utolsó kettő lehetővé teszi pillanatképek létrehozását és használatát.
  • Lemez nélküli erőforrás — egy háttérrendszer nélküli csomóponton elhelyezett DRBD-eszköz, amely lehetővé teszi normál blokkeszközként történő kezelését; minden olvasási/írási művelet át lesz irányítva az adatforrásokhoz. A lemez nélküli erőforrások legközelebbi analógja az iSCSI LUN.

Minden DRBD-erőforrásnak legfeljebb 8 replikája lehet, és ezek közül alapértelmezés szerint csak egy lehet aktív - elsődleges, mindenki más lesz Másodlagos és használatuk lehetetlen lesz mindaddig, amíg van legalább egy elsődleges, azaz egyszerűen replikálják az adatokat egymás között.

Ha egy DRBD eszközt telepít a rendszerbe, az automatikusan azzá válik elsődleges, így a DRBD terminológiával élve még egy lemez nélküli erőforrás is lehet elsődleges.

Akkor miért van szüksége a Linstorra?

Azáltal, hogy minden erőforrásigényes feladatot a kernelre bíz, a Linstor lényegében egy szokásos Java alkalmazás, amely lehetővé teszi a DRBD erőforrások létrehozásának egyszerű automatizálását.
Ezenkívül minden általa létrehozott erőforrás egy független DRBD-fürt lesz, amely függetlenül működik, függetlenül a vezérlősík és más DRBD erőforrások állapotától.

A Linstor mindössze két összetevőből áll:

  • Linstor-vezérlő - A fő vezérlő, amely API-t biztosít az erőforrások létrehozásához és kezeléséhez. Műholdakkal is kommunikál, ellenőrzi a rajtuk lévő szabad helyet, és feladatokat küld új erőforrások létrehozásához és törléséhez. Egyetlen példányban fut, és egy adatbázist használ, amely lehet belső (H2) vagy külső (PostgreSQL, MySQL, MariaDB)
  • Linstor-műhold — Telepítve az összes tárolócsomópontra, és a vezérlő számára tájékoztatást ad a szabad helyről, valamint végrehajtja a vezérlőtől kapott feladatokat új kötetek és DRBD-eszközök létrehozásához és törléséhez.

A Linstor a következő kulcsfogalmakkal működik:

  • Csomópont — egy fizikai szerver, amelyen a DRBD erőforrásokat létrehozzák és használják.
  • Tároló medence — LVM- vagy ZFS-készlet azon a csomóponton létrehozott, amelyben a DRBD-erőforrások lesznek. Lemez nélküli készlet is lehetséges - ez egy olyan készlet, amelyben csak lemez nélküli erőforrások találhatók.
  • Erőforrás meghatározása — Az erőforrás meghatározása lényegében egy prototípus, amely leírja a nevet és annak összes tulajdonságát.
  • Hangerő meghatározása — A kötet meghatározása. Minden erőforrás több kötetből is állhat, minden kötetnek mérettel kell rendelkeznie.
  • Forrás — Egy blokkeszköz létrehozott példánya, minden erőforrást egy adott csomóponton és valamilyen tárolókészletben kell elhelyezni.

Linstor telepítés

Javaslom az Ubuntu használatát rendszerként, mert... létezik számára kész PPA:

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

Vagy Debian, ahol a Linstor telepíthető a Proxmox hivatalos tárolójából:

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

ellenőr

Itt minden egyszerű:

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

Tároló csomópontok

A Linux kernel jelenleg egy fán belüli kernelmodullal kerül szállításra DRBD8, sajnos nem felel meg nekünk és telepítenünk kell DRBD9:

apt-get install drbd-dkms

Amint azt a gyakorlat mutatja, a legtöbb nehézség pontosan azért merül fel, mert a DRBD8 modult töltik be a rendszerbe, és nem a DRBD9-et. Szerencsére ez könnyen ellenőrizhető a következő futtatással:

modprobe drbd
cat /proc/drbd

Ha látod verzió: 9 - azt jelenti, hogy minden rendben van, ha verzió: 8 - ez azt jelenti, hogy valami elromlott, és további lépéseket kell tennie az okok kiderítéséhez.

Most telepítsük linstor-satellite и drbd-utils:

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

Hozzon létre egy klasztert

Tárolómedencék és csomópontok

Háttérként fogjuk venni ThinLVM, mert ez a legegyszerűbb, és támogatja a pillanatképeket.
Készlet lvm2, ha még nem tette meg, hozzunk létre egy ThinLVM-készletet az összes tárolócsomópontunkon:

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

Minden további művelet közvetlenül a vezérlőn hajtható végre:

Adjuk hozzá a csomópontjainkat:

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

Hozzunk létre tárolókészleteket:

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

Most nézzük meg a létrehozott készleteket:

linstor storage-pool list

Ha mindent jól csináltunk, akkor valami ilyesmit kell látnunk:

+-------------------------------------------------- -------------------------------------------------- ----+ | StoragePool | Csomópont | Sofőr | PoolName | FreeCapacity | TotalCapacity | Támogatja a pillanatfelvételeket | |------------------------------------------------ - ------------------------------------------------- ---| | adatok | csomópont1 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | igaz | | adatok | csomópont2 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | igaz | | adatok | csomópont3 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | igaz | +-------------------------------------------------- -------------------------------------------------- ----+

DRBD erőforrások

Most próbáljuk meg létrehozni az új DRBD erőforrásunkat:

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

Nézzük meg a létrehozott forrásokat:

linstor resource list 

+-------------------------------------------------- -------------------------------------------------- ---+ | Csomópont | Erőforrás | StoragePool | VolumeNr | MinorNr | Eszköznév | Kiosztott | InUse | állam | |------------------------------------------------ - ------------------------------------------------- --| | csomópont1 | myres | adatok | 0 | 1084 | /dev/drbd1084 | 52 KiB | Nem használt | UpToDate | | csomópont2 | myres | adatok | 0 | 1084 | /dev/drbd1084 | 52 KiB | Nem használt | UpToDate | +-------------------------------------------------- -------------------------------------------------- ---+

Nagy! — azt látjuk, hogy az erőforrás az első két csomóponton jött létre, a harmadikon is megpróbálhatunk lemez nélküli erőforrást létrehozni:

linstor resource create --diskless node3 myres

A csomópontokon mindig megtalálja ezt az eszközt /dev/drbd1084 vagy /dev/drbd/by-res/myres/0

A Linstor így működik, további információkat innen kaphat hivatalos dokumentáció.

Most elmondom, hogyan lehet integrálni az OpenNebula-val

Az OpenNebula beállítása

Nem megyek bele túlságosan az OpenNebula beállítási folyamatába, mert... az összes lépést részletesen leírja hivatalos dokumentáció, amivel javaslom, hogy vegye fel a kapcsolatot, csak az OpenNebula Linstorral való integrációjáról mesélek.

linstor_un

A probléma megoldására írtam egy saját illesztőprogramomat - linstor_un, jelenleg pluginként érhető el, és külön kell telepíteni.

A teljes telepítés a frontend OpenNebula csomópontokon történik, és nem igényel további műveleteket a számítási csomópontokon.

Először is meg kell győződnünk arról, hogy megvan jq и linstor-kliens:

apt-get install jq linstor-client

Csapat linstor node list meg kell jelenítenie a csomópontok listáját. Az összes OpenNebula számítási csomópontot hozzá kell adni a Linstor-fürthöz.

Töltse le és telepítse a bővítményt:

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

Most hozzá kell adnunk az OpenNebula konfigurációjához, ehhez a leírt egyszerű lépéseket követjük itt.

Ezután indítsa újra az OpenNebulát:

systemctl restart opennebula

És add hozzá adattárainkat, rendszerünket:

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

És a képtár:

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

  • Paraméter AUTO_PLACE megjeleníti az OpenNebula minden egyes új képéhez létrehozandó adatreplikák számát.
  • Paraméter CLONE_MODE pontosan jelzi, hogyan lesznek klónozva a képek új virtuális gépek létrehozásakor, snapshot — létrehoz egy pillanatképet a képről, és a pillanatképből telepít egy virtuális gépet, copy — minden virtuális géphez készít egy teljes másolatot a képről.
  • В BRIDGE_LIST Javasoljuk, hogy adja meg az összes csomópontot, amelyet a képklónozási műveletek végrehajtására használnak.

A támogatott paraméterek teljes listáját lásd README projekt.

Ezzel a beállítás befejeződött, most már letölthet néhány készüléket a hivatalos oldalról OpenNebula Marketplace és hozzon létre belőle virtuális gépeket.

Projekt link:
https://github.com/OpenNebula/addon-linstor_un

Forrás: will.com

Hozzászólás