
LINBIT a récemment publié sa nouvelle solution pour orchestrer et gérer plusieurs baies DRBD.
Par exemple, vous pouvez avoir plusieurs nœuds et chacun aura son propre pool LVM ou ZFS dans lequel LINSTOR créera automatiquement de nouveaux volumes et les répliquera entre les nœuds à l'aide du protocole DRBD.
LINSTOR prend en charge le provisionnement fin, les instantanés et bien d'autres choses intéressantes.
Cette solution est bien adaptée aux machines virtuelles et aux conteneurs.
Satellites LINSTOR
Je crois que vous avez déjà un cluster Proxmox, j'ai trois nœuds pve1
, pve2
et pve3
.
La première étape consiste donc à installer drbd-utils et à construire un module noyau sur chaque nœud.
Ajoutez le référentiel linstor et installez les en-têtes de noyau , ainsi que tous les packages nécessaires:
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
Après l'installation, vérifions votre version du module du noyau:
modprobe drbd cat /proc/drbd
Si vous voyez la version 8, alors quelque chose s'est mal passé et le module dans l'arborescence du noyau a été chargé, vérifiez l' dkms status
pour en savoir plus sur la construction du module dkms directement.
Pour LINSTOR, vous devez utiliser DRBD version 9.
Ensuite, sur chaque nœud, installez les packages linstor-proxmox et linstor-satellite :
apt-get -y install linstor-proxmox linstor-satellite systemctl start linstor-satellite.service systemctl enable linstor-satellite.service
ContrĂ´leur LINSTOR
Nous déploierons le contrôleur à l'intérieur du conteneur LXC.
Téléchargez le modèle debian:
wget http://download.proxmox.com/images/system/debian-9.0-standard_9.3-1_amd64.tar.gz -P /var/lib/vz/template/cache/
Créez maintenant un conteneur pour le contrôleur:
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
Exécutez le conteneur et entrez-le:
pct start 100 pct exec 100 bash
Installer les mises Ă jour:
apt-get update apt-get -y upgrade
Ajoutez le référentiel linstor et installez linstor-controller et 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 nécessite des paramètres régionaux configurés. Configurer les paramètres régionaux:
sed -i '/en_US.UTF-8 UTF-8/ s/^# //' /etc/locale.gen locale-gen
Configurons immédiatement le fuseau horaire:
dpkg-reconfigure tzdata
Configuration du coffre-fort
Créer des nœuds:
linstor node create pve1 10.1.0.11 linstor node create pve2 10.1.0.12 linstor node create pve3 10.1.0.13
Pour chaque nœud, nous décrivons une interface supplémentaire qui sera utilisée pour la réplication DRBD:
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
Exemple de sortie de la commande 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 ┊ ╰──────────────────────────────────────────────────────────────╯
Créer des pools:
Sur chaque nœud, vous devez préparer un pool léger lvm pour drbd:
lvcreate -L 800G --thinpool drbdpool pve
Vous pouvez maintenant les ajouter Ă linstor:
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
Configurons les pools pour utiliser l'interface de 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
Exemple de sortie de la commande 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 ╰───────────────────────────────────────────────────────────────────────────────────────────
Nous pouvons maintenant ajouter notre nouveau stockage Ă la configuration Proxmox:
cat >> /etc/pve/storage.cfg <<EOF drbd: drbdpool content rootdir,images controller 10.1.0.123 controllervm 100 redundancy 3 EOF
Configuration HA pour le contrĂ´leur
Nous allons maintenant transférer notre conteneur linstor vers le stockage linstor.
Nous devons d'abord créer un disque virtuel pour cela:
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
Exemple de sortie de la commande 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 ┊ ╰──────────────────────────────────────────╯
Par défaut, linstor-satellite supprime les configurations de toutes les ressources au démarrage du service, puis attend une nouvelle configuration de linstor-controller , mais si nous gardons linstor-controller au même endroit que les données, nous devons faire une exception pour sa ressource en ajoutant une option --keep-res=vm-100
pour linstor-satellite sur tous les nœuds:
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
Cette action doit empĂŞcher la suppression de la ressource vm-100-disk-0
à chaque démarrage.
Maintenant, nous arrêtons le conteneur linstor-controller et transférons toutes les données du disque local vers le disque drbd.
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
Mettez Ă jour la configuration du conteneur:
sed -i '/^rootfs:/d' /etc/pve/lxc/100.conf echo 'rootfs: drbdpool:vm-100-disk-0,size=4G' >> /etc/pve/lxc/100.conf
Exécutez le conteneur et si tout va bien, supprimez l'ancien disque:
pct start 100 rm -f /var/lib/vz/images/100/vm-100-disk-0.raw
Il ne nous reste plus qu'Ă ajouter notre conteneur Ă proxmox ha-manager :
ha-manager add ct:100 --max_relocate=3 --max_restart=3
PROFIT
Performances et réglages
Pour le moment, pour modifier les paramètres globaux du contrôleur, vous devrez désactiver l'authentification sur le contrôleur:
Pour résoudre automatiquement les situations de cerveau partagé, ajoutez les options suivantes pour le contrôleur:
linstor controller drbd-options \ --after-sb-0pri=discard-zero-changes \ --after-sb-1pri=discard-secondary \ --after-sb-2pri=disconnect
Pour mon réseau 10G, j'ai trouvé les paramètres suivants les plus optimaux pour une synchronisation rapide:
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