LINSTOR-opslag en de integratie ervan met OpenNebula

LINSTOR-opslag en de integratie ervan met OpenNebula

Nog niet zo lang geleden presenteerden de jongens van LINBIT hun nieuwe SDS-oplossing: Linstor. Dit is een volledig gratis opslag gebaseerd op bewezen technologieën: DRBD, LVM, ZFS. Linstor combineert eenvoud en goed ontworpen architectuur, waardoor u stabiliteit en behoorlijk indrukwekkende resultaten kunt bereiken.

Vandaag wil ik er wat gedetailleerder over praten en laten zien hoe gemakkelijk het kan worden geïntegreerd met OpenNebula met behulp van linstor_un - een nieuwe driver die ik speciaal voor dit doel heb ontwikkeld.

Met Linstor in combinatie met OpenNebula kunt u een snelle en betrouwbare cloud bouwen die eenvoudig op uw eigen infrastructuur kan worden ingezet.

Linstor-architectuur

Linstor is op zichzelf geen bestandssysteem of blokopslag. Linstor is een orkestrator die een abstractielaag biedt waarmee u het maken van volumes in LVM of ZFS kunt automatiseren en deze kunt repliceren met DRBD9.

Stereotypen doorbreken

Maar wacht, DRBD? — Waarom het automatiseren en hoe kan het zelfs werken?

Laten we het verleden herinneren, toen DRBD8 erg populair was. Het standaardgebruik ervan bestond uit het maken van één groot blokapparaat en het in veel kleine stukjes snijden, met behulp van dezelfde LVM. Een soort mdadm RAID-1 maar dan met replicatie over het netwerk.

Deze aanpak is niet zonder nadelen, en daarom zijn met de komst van DRBD9 de principes van het opslagontwerp veranderd; nu wordt voor elke virtuele machine een afzonderlijk DRBD-apparaat gemaakt.

De aanpak met onafhankelijke blokapparaten zorgt voor een beter gebruik van de ruimte in het cluster en voegt ook een aantal extra functies toe. Voor elk apparaat kunt u bijvoorbeeld het aantal replica's, hun locatie en individuele instellingen bepalen. Ze zijn eenvoudig te maken/verwijderen, momentopnamen maken, het formaat ervan wijzigen, codering inschakelen en nog veel meer. Het is vermeldenswaard dat DRBD9 ook quorum ondersteunt, waardoor u split-brain-situaties kunt voorkomen.

Bronnen en backends

Bij het maken van een nieuw blokapparaat plaatst Linstor het vereiste aantal replica's op verschillende knooppunten in het cluster. We zullen elke dergelijke replica een DRBD-bron noemen.

Er zijn twee soorten bronnen:

  • Gegevensbron — zijn een DRBD-apparaat dat zich op een knooppunt in een LVM- of ZFS-pool bevindt.
    Op dit moment is er ondersteuning voor verschillende backends en hun aantal groeit voortdurend. Er is ondersteuning voor LVM, ThinLVM en ZFS. Met de laatste twee kunt u snapshots maken en gebruiken.
  • Schijfloze bron — is een DRBD-apparaat dat op een knooppunt is geplaatst zonder een backend, maar waardoor het kan worden behandeld als een gewoon blokapparaat; alle lees-/schrijfbewerkingen worden omgeleid naar gegevensbronnen. De analoog die het dichtst in de buurt komt van schijfloze bronnen is iSCSI LUN.

Elke DRBD-bron kan maximaal 8 replica's hebben, en slechts één daarvan kan standaard actief zijn: Primair, alle anderen zullen dat zijn Secundair en het gebruik ervan zal onmogelijk zijn zolang er tenminste één Primary is, dat wil zeggen dat ze eenvoudigweg gegevens onderling zullen repliceren.

Door een DRBD-apparaat in het systeem te installeren, wordt dit automatisch een Primair, dus zelfs een schijfloze bron kan, in DRBD-terminologie, primair zijn.

Dus waarom heb je Linstor nodig?

Door alle resource-intensieve taken aan de kernel toe te vertrouwen, is Linstor in wezen een reguliere Java-applicatie waarmee u eenvoudig de creatie van DRBD-resources kunt automatiseren.
Bovendien zal elke door hem gecreëerde bron een onafhankelijk DRBD-cluster zijn dat onafhankelijk opereert, ongeacht de status van het besturingsvlak en andere DRBD-bronnen.

Linstor bestaat uit slechts twee componenten:

  • Linstor-controller - De hoofdcontroller, die een API biedt voor het maken en beheren van bronnen. Het communiceert ook met satellieten, controleert de vrije ruimte erop en verzendt taken om nieuwe bronnen aan te maken en te verwijderen. Het draait in één exemplaar en maakt gebruik van een database, die intern (H2) of extern kan zijn (PostgreSQL, MySQL, MariaDB)
  • Linstor-satelliet — Geïnstalleerd op alle opslagknooppunten en voorziet de controller van informatie over vrije ruimte, en voert ook taken uit die zijn ontvangen van de controller om nieuwe volumes en DRBD-apparaten daarbovenop te maken en te verwijderen.

Linstor werkt met de volgende kernconcepten:

  • Knooppunt — een fysieke server waarop DRBD-bronnen worden gemaakt en gebruikt.
  • Opslagpool — LVM- of ZFS-pool gemaakt op het knooppunt waarin DRBD-bronnen zich zullen bevinden. Een schijfloze pool is ook mogelijk - dit is een pool waarin alleen schijfloze bronnen zich bevinden.
  • Brondefinitie — De definitie van een hulpbron is in wezen een prototype dat de naam en al zijn eigenschappen beschrijft.
  • Volumedefinitie — Volumedefinitie. Elke resource kan uit meerdere volumes bestaan, elk volume moet een grootte hebben.
  • Hulpmiddelen — Een aangemaakt exemplaar van een blokapparaat, waarbij elke bron op een specifiek knooppunt en in een bepaalde opslagpool moet worden geplaatst.

Linstor-installatie

Ik raad aan om Ubuntu als systeem te gebruiken, omdat... bestaat voor haar klaar PPA:

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

Of Debian, waar Linstor kan worden geïnstalleerd vanuit de officiële repository voor 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

Controller

Alles is eenvoudig hier:

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

Opslagknooppunten

De Linux-kernel wordt momenteel geleverd met een kernelmodule in de boom DRBD8, helaas bevalt het ons niet en moeten we installeren DRBD9:

apt-get install drbd-dkms

Zoals de praktijk laat zien, ontstaan ​​de meeste problemen juist omdat de DRBD8-module in het systeem wordt geladen, en niet DRBD9. Gelukkig is dit eenvoudig te controleren door het volgende uit te voeren:

modprobe drbd
cat /proc/drbd

Als je het ziet versie: 9 - het betekent dat alles in orde is als versie: 8 - het betekent dat er iets mis is gegaan en dat u aanvullende stappen moet ondernemen om de redenen te achterhalen.

Laten we nu installeren linstor-satelliet и drbd-utils:

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

Maak een cluster

Opslagpools en knooppunten

Als backend zullen we nemen DunneLVM, omdat het is de eenvoudigste en ondersteunt snapshots.
Ingesteld lvm2Laten we, als u dit nog niet heeft gedaan, een ThinLVM-pool maken op al onze opslagknooppunten:

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

Alle verdere acties kunnen rechtstreeks op de controller worden uitgevoerd:

Laten we onze knooppunten toevoegen:

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

Laten we opslagpools maken:

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

Laten we nu de gemaakte pools controleren:

linstor storage-pool list

Als alles correct is gedaan, zouden we zoiets moeten zien als:

+--------------------------------------------- --------------------------------------------- ----+ | Opslagpool | Knooppunt | Bestuurder | Zwembadnaam | Vrije capaciteit | Totale capaciteit | OndersteuntSnapshots | |------------------------------------------ - -------------------------------------------- - ---| | gegevens | knooppunt1 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | waar | | gegevens | knooppunt2 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | waar | | gegevens | knooppunt3 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | waar | +--------------------------------------------- --------------------------------------------- ----+

DRBD-bronnen

Laten we nu proberen onze nieuwe DRBD-bron te maken:

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

Laten we de gemaakte bronnen controleren:

linstor resource list 

+--------------------------------------------- --------------------------------------------- ---+ | Knooppunt | Bron | Opslagpool | VolumeNr | MinorNr | Apparaatnaam | Toegewezen | InGebruik | Staat | |------------------------------------------ - -------------------------------------------- - --| | knooppunt1 | myres | gegevens | 0 | 1084 | /dev/drbd1084 | 52 KiB | Ongebruikt | UpToDate | | knooppunt2 | myres | gegevens | 0 | 1084 | /dev/drbd1084 | 52 KiB | Ongebruikt | UpToDate | +--------------------------------------------- --------------------------------------------- ---+

Geweldig! — we zien dat de bron is gemaakt op de eerste twee knooppunten, we kunnen ook proberen een schijfloze bron te maken op de derde:

linstor resource create --diskless node3 myres

Op knooppunten vind je dit apparaat altijd als /dev/drbd1084 of /dev/drbd/by-res/myres/0

Zo werkt Linstor, daar kun je meer informatie uit halen officiële documentatie.

Nu zal ik je vertellen hoe je het kunt integreren met OpenNebula

OpenNebula opzetten

Ik zal niet te diep ingaan op het OpenNebula-installatieproces, omdat... alle stappen worden gedetailleerd beschreven in officiële documentatie, waarmee ik u aanbeveel contact op te nemen, zal ik u alleen vertellen over de integratie van OpenNebula met Linstor.

linstor_un

Om dit probleem op te lossen, heb ik mijn eigen stuurprogramma geschreven - linstor_un, is momenteel beschikbaar als plug-in en moet afzonderlijk worden geïnstalleerd.

De gehele installatie wordt uitgevoerd op de frontend OpenNebula-knooppunten en vereist geen extra acties op de rekenknooppunten.

Allereerst moeten we ervoor zorgen dat we dat hebben gedaan jq и linstor-client:

apt-get install jq linstor-client

Team linstor node list zou een lijst met knooppunten moeten weergeven. Alle OpenNebula-rekenknooppunten moeten worden toegevoegd aan het Linstor-cluster.

Download en installeer de plug-in:

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

Nu moeten we het toevoegen aan de OpenNebula-configuratie, hiervoor volgen we de eenvoudige beschreven stappen hier.

Start OpenNebula vervolgens opnieuw op:

systemctl restart opennebula

En voeg onze datastores, systeem toe:

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

En de beeldwinkel:

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 geeft het aantal gegevensreplica's weer dat voor elke nieuwe afbeelding in OpenNebula wordt gemaakt.
  • Parameter CLONE_MODE geeft precies aan hoe afbeeldingen worden gekloond bij het maken van nieuwe virtuele machines, snapshot — maakt een momentopname van de afbeelding en implementeert een virtuele machine op basis van de momentopname, copy — maakt voor elke virtuele machine een volledige kopie van de afbeelding.
  • В BRIDGE_LIST Het wordt aanbevolen om alle knooppunten op te geven die zullen worden gebruikt om beeldkloneringsbewerkingen uit te voeren.

Zie voor een volledige lijst met ondersteunde parameters README project.

Hiermee is de installatie voltooid. Nu kunt u een apparaat downloaden van de ambtenaar Open Nebula-marktplaats en er virtuele machines van maken.

Beschrijving van het product:
https://github.com/OpenNebula/addon-linstor_un

Bron: www.habr.com

Voeg een reactie