
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