Bereitstellen von LINSTOR Storage fรผr Proxmox

Bild


LINBIT hat kรผrzlich seine neue Lรถsung fรผr die Orchestrierung und Verwaltung mehrerer DRBD-Arrays verรถffentlicht.


Sie kรถnnen beispielsweise mehrere Knoten haben und jeder hat seinen eigenen LVM- oder ZFS-Pool, in dem LINSTOR automatisch neue Volumes erstellt und diese mithilfe des DRBD-Protokolls zwischen Knoten repliziert.


LINSTOR unterstรผtzt Thin Provisioning, Snapshots und viele andere interessante Dinge.
Diese Lรถsung eignet sich gut fรผr virtuelle Maschinen und Container.


LINSTOR Satelliten


Ich glaube, dass Sie bereits einen Proxmox-Cluster haben, ich habe drei Knoten pve1 , pve2 und pve3 .


Der erste Schritt besteht also darin, drbd-utils zu installieren und auf jedem Knoten ein Kernelmodul zu erstellen .


Fรผgen Sie das Linstor-Repository hinzu und installieren Sie die Kernel-Header sowie alle erforderlichen Pakete daraus:


 wget -O- https://packages.linbit.com/package-signing-pubkey.asc | apt-key add - echo "deb http://packages.linbit.com/proxmox/ proxmox-5 drbd-9.0" \ > /etc/apt/sources.list.d/linbit.list apt-get update apt-get -y install pve-headers apt-get -y install drbd-dkms drbdtop 

Lassen Sie uns nach der Installation Ihre Version des Kernelmoduls รผberprรผfen:


 modprobe drbd cat /proc/drbd 

Wenn Sie Version 8 sehen, ist ein dkms status und das Kernel-In-Tree-Modul wurde geladen. รœberprรผfen Sie den dkms status , um mehr รผber das direkte Erstellen des dkms-Moduls zu erfahren.
Fรผr LINSTOR mรผssen Sie DRBD Version 9 verwenden.


Installieren Sie als Nรคchstes auf jedem Knoten die Pakete linstor-proxmox und linstor-satelliten :


 apt-get -y install linstor-proxmox linstor-satellite systemctl start linstor-satellite.service systemctl enable linstor-satellite.service 

LINSTOR-Controller


Wir werden den Controller im LXC-Container bereitstellen.


Laden Sie die Debian-Vorlage herunter:


 wget http://download.proxmox.com/images/system/debian-9.0-standard_9.3-1_amd64.tar.gz -P /var/lib/vz/template/cache/ 

Erstellen Sie nun einen Container fรผr den Controller:


 pct create 100 local:vztmpl/debian-9.0-standard_9.3-1_amd64.tar.gz \ --hostname=linstor-controller \ --net0=name=eth0,bridge=vmbr0,gw=10.1.0.1,ip=10.1.0.123/16 

Fรผhren Sie den Container aus und geben Sie ihn ein:


 pct start 100 pct exec 100 bash 

Updates installieren:


 apt-get update apt-get -y upgrade 

Fรผgen Sie das Linstor-Repository hinzu und installieren Sie Linstor-Controller und Linstor-Client :


 wget -O- https://packages.linbit.com/package-signing-pubkey.asc | apt-key add - echo "deb http://packages.linbit.com/proxmox/ proxmox-5 drbd-9.0" \ > /etc/apt/sources.list.d/linbit.list apt-get update && apt-get install -y linstor-controller linstor-client systemctl start linstor-controller.service systemctl enable linstor-controller.service 

Linstor benรถtigt ein konfiguriertes Gebietsschema. Gebietsschema konfigurieren:


 sed -i '/en_US.UTF-8 UTF-8/ s/^# //' /etc/locale.gen locale-gen 

Lassen Sie uns gleich die Zeitzone einrichten:


 dpkg-reconfigure tzdata 

Tresorkonfiguration


Knoten erstellen:


 linstor node create pve1 10.1.0.11 linstor node create pve2 10.1.0.12 linstor node create pve3 10.1.0.13 

Fรผr jeden Knoten beschreiben wir eine zusรคtzliche Schnittstelle, die fรผr die DRBD-Replikation verwendet wird:


 linstor node interface create pve1 data 10.2.0.11 linstor node interface create pve2 data 10.2.0.12 linstor node interface create pve3 data 10.2.0.13 

Beispielausgabe des linstor node list :


 โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ โ”Š Node โ”Š NodeType โ”Š Addresses โ”Š State โ”Š โ•žโ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ•ก โ”Š pve1 โ”Š SATELLITE โ”Š 10.0.1.11,10.0.2.11:3366 (PLAIN) โ”Š Online โ”Š โ”Š pve2 โ”Š SATELLITE โ”Š 10.0.1.12,10.0.2.12:3366 (PLAIN) โ”Š Online โ”Š โ”Š pve3 โ”Š SATELLITE โ”Š 10.0.1.13,10.0.2.13:3366 (PLAIN) โ”Š Online โ”Š โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ 

Pools erstellen:


Auf jedem Knoten mรผssen Sie lvm thin-pool fรผr drbd vorbereiten:


 lvcreate -L 800G --thinpool drbdpool pve 

Jetzt kรถnnen Sie sie zu linstor hinzufรผgen:


 linstor storage-pool create lvmthin pve1 drbdpool pve/drbdpool linstor storage-pool create lvmthin pve2 drbdpool pve/drbdpool linstor storage-pool create lvmthin pve3 drbdpool pve/drbdpool 

Konfigurieren wir die Pools fรผr die Verwendung der data :


 linstor storage-pool set-property pve1 drbdpool PrefNic data linstor storage-pool set-property pve2 drbdpool PrefNic data linstor storage-pool set-property pve3 drbdpool PrefNic data 

Beispielausgabe des linstor storage-pool list :


 โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”Š StoragePool โ”Š Node โ”Š Driver โ”Š PoolName โ”Š FreeCapacity โ”Š TotalCapacity โ”Š Support โ•žโ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„ โ”Š drbdpool โ”Š pve1 โ”Š LvmThinDriver โ”Š hv1/drbdpool โ”Š 800 GiB โ”Š 800 GiB โ”Š true โ”Š drbdpool โ”Š pve1 โ”Š LvmThinDriver โ”Š hv1/drbdpool โ”Š 800 GiB โ”Š 800 GiB โ”Š true โ”Š drbdpool โ”Š pve3 โ”Š LvmThinDriver โ”Š hv3/drbdpool โ”Š 800 GiB โ”Š 800 GiB โ”Š true โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ 

Jetzt kรถnnen wir unseren neuen Speicher zur Proxmox-Konfiguration hinzufรผgen:


 cat >> /etc/pve/storage.cfg <<EOF drbd: drbdpool content rootdir,images controller 10.1.0.123 controllervm 100 redundancy 3 EOF 

HA-Setup fรผr die Steuerung


Jetzt รผbertragen wir unseren Linstor-Container in den Linstor-Speicher.


Zuerst mรผssen wir eine virtuelle Festplatte dafรผr erstellen:


 pct exec 100 bash linstor resource-definition create vm-100-disk-0 linstor volume-definition create vm-100-disk-0 4G linstor resource create vm-100-disk-0 --auto-place 3 -s drbdpool 

Beispielausgabe des linstor resource list :


 โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ โ”Š ResourceName โ”Š Node โ”Š Port โ”Š State โ”Š โ•žโ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ”„โ•ก โ”Š vm-100-disk-0 โ”Š pve1 โ”Š 7000 โ”Š UpToDate โ”Š โ”Š vm-100-disk-0 โ”Š pve2 โ”Š 7000 โ”Š UpToDate โ”Š โ”Š vm-100-disk-0 โ”Š pve3 โ”Š 7000 โ”Š UpToDate โ”Š โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ 

StandardmรครŸig lรถscht Linstor-Satellit die Konfigurationen aller Ressourcen zum Zeitpunkt des Dienststarts. Dann wird eine neue Konfiguration von Linstor-Controller erwartet. Wenn wir Linstor-Controller jedoch an derselben Stelle wie die Daten belassen , mรผssen wir eine Ausnahme fรผr seine Ressource machen, indem wir eine Option hinzufรผgen --keep-res=vm-100 fรผr Linstor-Satellit auf allen Knoten:


 echo -e "[Service]\nExecStart=\nExecStart=/usr/share/linstor-server/bin/Satellite --logs=/var/log/linstor-satellite --config-directory=/etc/linstor --keep-res=vm-100" | SYSTEMD_EDITOR=tee systemctl edit linstor-satellite.service 

Diese Aktion sollte verhindern, dass die vm-100-disk-0 bei jedem Start gelรถscht wird.


Jetzt stoppen wir den Linstor-Controller- Container und รผbertragen alle Daten von der lokalen Festplatte auf die drbd-Festplatte.


 pct shutdown 100 dd if=/var/lib/vz/images/100/vm-100-disk-0.raw of=/dev/drbd/by-res/vm-100-disk-0/0 bs=8M status=progress e2fsck -f /dev/drbd/by-res/vm-100-disk-0/0 resize2fs /dev/drbd/by-res/vm-100-disk-0/0 

Aktualisieren Sie die Containerkonfiguration:


 sed -i '/^rootfs:/d' /etc/pve/lxc/100.conf echo 'rootfs: drbdpool:vm-100-disk-0,size=4G' >> /etc/pve/lxc/100.conf 

Fรผhren Sie den Container aus, und lรถschen Sie die alte Festplatte, wenn alles in Ordnung ist:


 pct start 100 rm -f /var/lib/vz/images/100/vm-100-disk-0.raw 

Jetzt mรผssen wir nur noch unseren Container zu proxmox ha-manager hinzufรผgen:


 ha-manager add ct:100 --max_relocate=3 --max_restart=3 

GEWINN


Leistung und Abstimmung


Um die globalen Einstellungen des Controllers zu รคndern, mรผssen Sie derzeit die Authentifizierung auf dem Controller deaktivieren:



Fรผgen Sie dem Controller die folgenden Optionen hinzu, um Split-Brain-Situationen automatisch zu lรถsen:


 linstor controller drbd-options \ --after-sb-0pri=discard-zero-changes \ --after-sb-1pri=discard-secondary \ --after-sb-2pri=disconnect 

Fรผr mein 10G-Netzwerk habe ich die folgenden Einstellungen fรผr eine schnelle Synchronisierung am besten gefunden:


 linstor controller drbd-options \ --max-buffers=36864 \ --rcvbuf-size=2097152 \ --sndbuf-size=1048576 linstor controller drbd-options \ --c-fill-target=10240 \ --c-max-rate=737280 \ --c-min-rate=20480 \ --c-plan-ahead=10 

Source: https://habr.com/ru/post/de423101/


All Articles