LINSTOR-tallennustila ja sen integrointi OpenNebulaan

LINSTOR-tallennustila ja sen integrointi OpenNebulaan

Ei niin kauan sitten LINBITin kaverit esittelivät uuden SDS-ratkaisunsa - Linstorin. Tämä on täysin ilmainen tallennustila, joka perustuu todistettuihin teknologioihin: DRBD, LVM, ZFS. Linstorissa yhdistyy yksinkertaisuus ja hyvin suunniteltu arkkitehtuuri, jonka avulla voit saavuttaa vakautta ja varsin vaikuttavia tuloksia.

Tänään haluan puhua siitä hieman enemmän ja näyttää kuinka helposti se voidaan integroida OpenNebulaan linstor_unilla - uudella ohjaimella, jonka kehitin erityisesti tätä tarkoitusta varten.

Linstor yhdessä OpenNebulan kanssa mahdollistaa nopean ja luotettavan pilven rakentamisen, joka on helppo ottaa käyttöön omassa infrastruktuurissasi.

Linstor-arkkitehtuuri

Linstor ei ole tiedostojärjestelmä eikä lohkotallennus itsessään, vaan Linstor on orkesteri, joka tarjoaa abstraktiokerroksen, joka automatisoi taltioiden luomisen LVM:ssä tai ZFS:ssä ja replikoi ne DRBD9:n avulla.

Stereotypioiden rikkominen

Mutta odota, DRBD? - Miksi se automatisoidaan ja miten se ylipäätään voi toimia?

Muistakaamme menneisyys, jolloin DRBD8 oli erittäin suosittu. Sen vakiokäyttö tarkoitti yhden suuren lohkolaitteen luomista ja sen leikkaamista useiksi pieniksi paloiksi käyttämällä samaa LVM:ää. Eräänlainen mdadm RAID-1, mutta verkkoreplikaatiolla.

Tämä lähestymistapa ei ole vailla haittoja, ja siksi DRBD9:n myötä tallennusrakenteen periaatteet ovat muuttuneet, nyt jokaiselle virtuaalikoneelle luodaan erillinen DRBD-laite.

Itsenäinen lohkolaite mahdollistaa klusterin tilan paremman hyödyntämisen ja lisää myös useita lisäominaisuuksia. Voit esimerkiksi määrittää jokaiselle tällaiselle laitteelle kopioiden määrän, niiden sijainnin ja yksittäiset asetukset. Niitä on helppo luoda/poistaa, ottaa tilannekuvia, muuttaa kokoa, ottaa käyttöön salaus ja paljon muuta. On syytä huomata, että DRBD9 ylläpitää myös päätösvaltaisuutta, mikä välttää aivojen jakautumisen.

Resurssit ja taustaohjelmat

Uutta lohkolaitetta luodessaan Linstor sijoittaa tarvittavan määrän replikoita klusterin eri solmuihin. Kutsumme jokaista tällaista kopiota DRBD-resurssiksi.

Resursseja on kahta tyyppiä:

  • Tietolähde - edustaa LVM- tai ZFS-poolin solmussa sijaitsevaa DRBD-laitetta.
    Tällä hetkellä tukea on useille backendeille ja niiden määrä kasvaa jatkuvasti. Siellä on tuki LVM:lle, ThinLVM:lle ja ZFS:lle. Kahden viimeksi mainitun avulla voit luoda ja käyttää tilannekuvia.
  • Levytön resurssi - on DRBD-laite, jota isännöidään solmussa ilman taustajärjestelmää, mutta koska sitä voidaan käsitellä tavallisena lohkolaitteena, kaikki luku-/kirjoitustoiminnot ohjataan tietoresursseihin. Lähin analoginen levyttömille resursseille on iSCSI LUN.

Jokaisella DRBD-resurssilla voi olla enintään 8 kopiota ja vain yksi niistä voi olla aktiivinen oletuksena − Ensisijainen, kaikki loput tulee olemaan Toissijainen ja niiden käyttö on mahdotonta niin kauan kuin on olemassa ainakin yksi ensisijainen, eli ne yksinkertaisesti replikoivat tietoja keskenään.

Asentamalla DRBD-laitteen järjestelmään siitä tulee automaattisesti Ensisijainen, joten jopa levytön resurssi DRBD-terminologiassa voi olla ensisijainen.

Joten miksi tarvitsemme Linstoria?

Kun kaikki resurssiintensiiviset tehtävät uskotaan ytimelle, Linstor on pohjimmiltaan tavallinen Java-sovellus, jonka avulla voit helposti automatisoida DRBD-resurssien luomisen.
Samalla jokainen hänen luoma resurssi on itsenäinen DRBD-klusteri, joka toimii itsenäisesti ohjaustason ja muiden DRBD-resurssien tilasta riippumatta.

Linstor koostuu vain kahdesta osasta:

  • linstor-ohjain - Pääohjain, joka tarjoaa API:n resurssien luomiseen ja hallintaan. Se myös kommunikoi satelliittien kanssa, tarkastaa niiden vapaata tilaa ja lähettää töitä uusien resurssien luomiseksi ja poistamiseksi. Toimii yhdessä esiintymässä ja käyttää tietokantaa, joka voi olla joko sisäinen (H2) tai ulkoinen (PostgreSQL, MySQL, MariaDB)
  • linstor-satelliitti - Asennettu kaikkiin tallennussolmuihin ja antaa ohjaimelle tietoa vapaasta tilasta ja suorittaa myös ohjaimelta saatuja tehtäviä luodakseen ja poistaakseen uusia taltioita ja DRBD-laitteita niiden päälle.

Linstor toimii seuraavilla avainkonsepteilla:

  • Solmu — fyysinen palvelin, jolla luodaan ja käytetään DRBD-resursseja.
  • Varastointiallas - LVM- tai ZFS-pooli luotu solmuun, johon DRBD-resurssit sijoitetaan. Levytön pooli on myös mahdollinen - tämä on pooli, johon sijoitetaan vain levyttömät resurssit.
  • resurssin määritelmä - Resurssin määritelmä, itse asiassa se on prototyyppi, joka kuvaa nimen ja kaikki sen ominaisuudet.
  • äänenvoimakkuuden määritelmä — Tilavuuden määritelmä. Jokainen resurssi voi koostua useista osista, jokaisella taltiolla on oltava koko.
  • Resurssi - Luotu lohkolaitteen ilmentymä, jokainen resurssi on sijoitettava tiettyyn solmuun ja johonkin tallennuspooliin.

Linstorin asennus

Suosittelen Ubuntun käyttöä järjestelmänä, koska. on olemassa häntä varten valmis PPA:

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

Tai Debian, johon Linstor voidaan asentaa virallisesta Proxmox-arkistosta:

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

ohjain

Kaikki on yksinkertainen täällä:

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

Tallennussolmut

Linux-ydin toimitetaan tällä hetkellä puun sisäisen ydinmoduulin kanssa DRBD8, valitettavasti se ei sovi meille ja meidän on asennettava DRBD9:

apt-get install drbd-dkms

Kuten käytäntö osoittaa, useimmat vaikeudet johtuvat juuri siitä, että DRBD8-moduuli ladataan järjestelmään, ei DRBD9. Onneksi tämä on helppo tarkistaa suorittamalla:

modprobe drbd
cat /proc/drbd

Jos näet versio: 9 - kaikki on hyvin, jos versio: 8 - se tarkoittaa, että jotain meni pieleen ja sinun on ryhdyttävä lisätoimiin syiden selvittämiseksi.

Nyt asennetaan linstor-satelliitti и drbd-utils:

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

Luo klusteri

Varastointialtaat ja solmut

Otamme taustaksi ThinLVM, koska se on yksinkertaisin ja tukee tilannekuvia.
Asettaa lvm2, jos et ole jo tehnyt niin, ja luodaan ThinLVM-varasto kaikille tallennussolmuillemme:

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

Kaikki muut toiminnot voidaan suorittaa suoraan ohjaimella:

Lisätään solmumme:

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

Luodaan tallennusaltaita:

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

Tarkastetaan nyt luodut poolit:

linstor storage-pool list

Jos kaikki on tehty oikein, meidän pitäisi nähdä jotain tällaista:

+-------------------------------------------------- --------------------------------------------------- ----+ | StoragePool | solmu | kuljettaja | altaan nimi | vapaa kapasiteetti | kokonaiskapasiteetti | Tukee Snapshots | |-------------------------------------------------- --------------------------------------------------- ----| | tiedot | solmu1 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | totta | | tiedot | solmu2 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | totta | | tiedot | solmu3 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | totta | +-------------------------------------------------- --------------------------------------------------- ----+

DRBD-resurssit

Yritetään nyt luoda uusi DRBD-resurssi:

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

Tarkastetaan luodut resurssit:

linstor resource list 

+-------------------------------------------------- --------------------------------------------------- ---+ | solmu | resurssi | StoragePool | VolumeNr | MinorNr | Laitteennimi | Jaettu | käytössä | valtio | |-------------------------------------------------- --------------------------------------------------- ---| | solmu1 | myres | tiedot | 0 | 1084 | /dev/drbd1084 | 52 KiB | Käyttämätön | Päivitetty | | solmu2 | myres | tiedot | 0 | 1084 | /dev/drbd1084 | 52 KiB | Käyttämätön | Päivitetty | +-------------------------------------------------- --------------------------------------------------- ---+

Loistava! - näemme, että resurssi luotiin kahdessa ensimmäisessä solmussa, voimme myös yrittää luoda levyttömän resurssin kolmanteen:

linstor resource create --diskless node3 myres

Solmuissa löydät aina tämän laitteen sellaisena kuin se on /dev/drbd1084 tai /dev/drbd/by-res/myres/0

Näin Linstor toimii, saat lisätietoja osoitteesta virallinen dokumentaatio.

Nyt puhun kuinka integroida se OpenNebulaan

Otetaan OpenNebula käyttöön

En mene liian syvälle OpenNebulan asennusprosessiin, koska Kaikki vaiheet on kuvattu yksityiskohtaisesti virallinen dokumentaatio, johon suosittelen viittaamaan, puhun vain OpenNebulan integroinnista Linstoriin.

linstor_un

Tämän ongelman ratkaisemiseksi kirjoitin oman ohjaimeni - linstor_un, se on tällä hetkellä saatavana laajennuksena ja se on asennettava erikseen.

Koko asennus suoritetaan käyttöliittymän OpenNebula-solmuissa, eikä se vaadi lisätoimenpiteitä laskentasolmuissa.

Ensinnäkin meidän on varmistettava, että meillä on jq и linstor-asiakas:

apt-get install jq linstor-client

Joukkue linstor node list pitäisi näyttää luettelo solmuista. Kaikki OpenNebula-laskentasolmut on lisättävä Linstor-klusteriin.

Lataa ja asenna laajennus:

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

Nyt meidän on lisättävä se OpenNebula-konfiguraatioon, tätä varten noudatamme kuvattuja yksinkertaisia ​​​​vaiheita täällä.

Käynnistä sitten OpenNebula uudelleen:

systemctl restart opennebula

Ja lisää tietovarastomme, järjestelmämme:

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

Ja kuvakauppa:

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

  • Parametri AUTO_PLACE näyttää datakopioiden määrän, jotka luodaan jokaiselle OpenNebulan uudelle kuvalle.
  • Parametri CLONE_MODE osoittaa tarkasti, kuinka kuvat kloonataan luotaessa uusia virtuaalikoneita, snapshot - luo tilannekuvan kuvasta ja ottaa käyttöön virtuaalikoneen tilannekuvasta, copy - tekee täydellisen kopion kuvasta jokaiselle virtuaalikoneelle.
  • В BRIDGE_LIST on suositeltavaa määrittää kaikki solmut, joita käytetään kuvan kloonaustoimintojen suorittamiseen.

Täydellinen luettelo tuetuista vaihtoehdoista on kohdassa LUEMINUT projekti.

Tämä viimeistelee asennuksen, nyt voit ladata laitteen viralliselta sivustolta OpenNebula Marketplace ja luoda siitä virtuaalikoneita.

Linkki projektiin:
https://github.com/OpenNebula/addon-linstor_un

Lähde: will.com

Lisää kommentti