Un mémo sur la mise en place d’un cluster haute disponibilité d’hyperviseurs Proxmox avec un serveur NFS.
Contrairement à la version précédente de proxmox, il n’est plus possible de créer un cluster HA sur 2 noeuds depuis la version 4.x de Proxmox.
Dû à une contrainte budgétaire, je n’ai que 3 serveurs pour créer mon cluster avec partage NFS compris.
Pour le stockage partagé, j’ai choisi la technologie NFS pour sa facilité de mis en œuvre et sa maintenance.
La sauvegarde des données vivantes des serveurs de fichiers ne sera pas traitée dans cet article.
Présentation de l’architecture serveur choisie
- 2 Serveurs Dell R730 4 disques 4To 3.5pouces en RAID5
- 1 Serveur Dell R830 16 disques 1,2To 2,5pouces RAID6
- Hyperviseurs Proxmox en cluster nommés pve-01, pve-02 et pve-03.
- Pve-01 et pve-02 auront la gestion des machines virtuelles.
- Les VMs seront réparties sur pve-01 et pve-02
- Sauvegarde des VMs en local sur pve-01, pve-02 (en cas d’indisponibilité du serveur NFS, possibilité de restaurer les VMs sur pve01 ou pve-02)
- Pve-03 sera le serveur NFS ou seront hébergées les machines virtuelles.
- Les réseaux :
- LAN réseau entreprise : 10.10.8.0/24
- LAN privée non routé : 192.168.94.0/24
- Les interfaces réseaux :
- Vmbr0 : interface administration des proxmox en port cuivre
- Vmbr1 : interface réseau sur le LAN réseau entreprise en port fibre
- Vmbr2 : interface réseau sur le LAN privé en port fibre
- Schéma réseau simplifié du cluster HA :
- Adresses réseaux :
- pve-01 :
- pve-02 :
- pve-03 :
vmbr0 10.10.8.202
vmbr2 192.168.94.1vmbr0 10.10.8.204
vmbr2 192.168.94.2vmbr0 10.10.8.206
vmbr2 192.168.94.3
L’installation de Proxmox 4.x est identique à la version 3.x : tuto installation Proxmox 3.x
Mise en cluster des 3 nœuds proxmox
- Sur tous les noeuds, ajouter ces informations dans
/etc/hosts
:192.168.94.1 pve-01 192.168.94.2 pve-02 192.168.94.3 pve-03
- Sur pve-01 créé le nom du cluster :
pvecm create kluster -bindnet0_addr 192.168.94.1 -ring0_addr pve-01
pvecm add 192.168.94.1 -ring0_addr 192.168.94.2
pvecm add 192.168.94.1 -ring0_addr 192.168.94.3
Préparation des serveurs NFS sur pve-03
- Installation du serveur NFS :
apt install nfs-kernel-server nfs-common
mkdir /var/lib/vz/pve
/etc/exports
:nano /etc/exports
/var/lib/vz/pve 192.168.94.1(rw,no_subtree_check,sync,no_root_squash) /var/lib/vz/pve 192.168.94.2(rw,no_subtree_check,sync,no_root_squash) /var/lib/vz/pve 192.168.94.3(rw,no_subtree_check,sync,no_root_squash)
exportfs -r
exportfs -v
/var/lib/vz/pve 192.168.94.1(rw,wdelay,no_root_squash,no_subtree_check,sec=sys,rw,no_root_squash,no_all_squash) /var/lib/vz/pve 192.168.94.2(rw,wdelay,no_root_squash,no_subtree_check,sec=sys,rw,no_root_squash,no_all_squash) /var/lib/vz/pve 192.168.94.3(rw,wdelay,no_root_squash,no_subtree_check,sec=sys,rw,no_root_squash,no_all_squash)
Ajout du partage NFS sur les pve en cluster
- Cliquer sur « Datacenter », puis sur « Storage » et « Add » :
- Sélectionner « NFS » :
- Indiquer les renseignements demandés :
- Le stockage NFS est ajouté automatiquement à tout les nœuds :
Configuration du cluster HA
Depuis la version 4.x de proxmox, la mise place d’un cluster HA a été très simplifiée et peut être entièrement configurée depuis l’interface web d’administration.
- Création d’un groupe comprenant les nœuds proxmox :
- Cliquer sur « Datacenter », puis sur « HA », « Groups » et « Create » :
- Renseigner un nom et sélectionner les nœuds :
Créer une machine virtuelle
La méthode pour créer une VM sous proxmox 4.x est quasi identique par rapport à Proxmox 3 : https://memo-linux.com/creation-dune-machine-virtuelle-avec-proxmox-3/
Ajouter une VM au cluster
Prioriser les noeuds du cluster HA
Pour rappel, ce sont les nœuds pve-01 et pve-02 qui doivent gérer la disponibilité des VM et pve-03 uniquement l’hébergement et seulement la gestion des VM en cas d’indisponibilité des deux autres nœuds.
Configuration du minuteur Watchdog matériel
Sous Proxmox 4.x il n’est plus nécessaire de configurer le fencing car il est pris en charge directement par Proxmox. Cependant, la gestion est au niveau logiciel et je souhaite qu’elle soit au niveau matériel. Pour ce faire, il faut installer OpenManage et l’utilitaire ipmitool :
- Installation d’OpenManage : https://memo-linux.com/proxmoxdebian-installer-dell-openmanage-server-administrator/
- Installation de l’utilitaire ipmitool :
apt install ipmitool
Les valeurs par défaut sont trop hautes et pas d’action définit :
ipmitool mc watchdog get
Watchdog Timer Use: SMS/OS (0xc4) Watchdog Timer Is: Started/Running Watchdog Timer Actions: No action (0x00) Pre-timeout interval: 0 seconds Timer Expiration Flags: 0x00 Initial Countdown: 480 sec Present Countdown: 472 sec
- Editer le fichier
/etc/default/pve-ha-manager
pour activer watchdog :
nano /etc/default/pve-ha-manager
# select watchdog module (default is softdog) WATCHDOG_MODULE=ipmi_watchdog
/etc/modprob.d/ipmi_watchdog.conf
:nano /etc/modprobe.d/ipmi_watchdog.conf
options ipmi_watchdog action=power_cycle panic_wdt_timeout=10
- Éditer
/etc/default/grub
:
nano /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT
:GRUB_CMDLINE_LINUX_DEFAULT="quiet nmi_watchdog=0"
update-grub
reboot
ipmitool mc watchdog get
Watchdog Timer Use: SMS/OS (0x44) Watchdog Timer Is: Started/Running Watchdog Timer Actions: Power Cycle (0x03) Pre-timeout interval: 0 seconds Timer Expiration Flags: 0x00 Initial Countdown: 10 sec Present Countdown: 9 sec
Ressources
Principalement la documentation officielle de Proxmox :
Bonjour,
Tout d’abord merci pour cet excellent tuto.
Rencontrez vous des problèmes sur votre cluster au quotidien?
Je désirerai monter une architecture similaire cependant la redondance du stockage suffit-elle à une architecture de production?
Vous parlez de l’interface Vmbr1 au début du tuto et plus rien après, cette interface n’est pas utilisée?
Merci.
Nico
Bonjour,
l’interface vmbr1(interface fibre) est celle qui sera renseignée comme interface réseau pour les VM.
Jusqu’à maintenant aucun souci, au préalable j’ai fais des tests de panne pour m’assurer le basculement des VM sur les autres nœuds.
Le point faible de cette architecture est le stockage, car dans le cas présent pas de redondance. Faut que je prenne le temps de me documenter sur ceph…
Bonjour Fred,
Merci pour ton blog et tes mémos c’est super utile. J’ai deux serveurs dédiés (un Online et un OVH). J’aimerai avoir un serveur principal pour ma prod et un secondaire pour ma dev / test tout deux sous Proxmox. J’ai également un synology DS916+ qui arrive (quad core + 8go de ram) branché chez moi en fibre. Idéalement j’aimerai que mes serveurs dédiés gèrent leurs VM chacun de leur côté et que l’un prennent la relève de l’autre en cas de défaillance. Mes backups seront sur le NAS synology.
A lire ton article il est nécessaire d’avoir 3 serveurs. Dans mon cas je peux suivre ton tuto ? Mais je ne souhaite pas que le synology porte la data réel de mes VM juste les backup.
Bonjour Kevin,
depuis la version 4 de Proxmox, il faut obligatoirement 3 serveurs pour faire du HA et donc pourvoir basculer les VMs d’un nœud à l’autre. Dans ton cas, tu peux éventuellement mettre tes 2 serveurs en cluster « simple » avec ton synologie en tant que serveur NAS pour les backups mais tu n’auras pas de HA…
Merci pour ta réponse rapide. Il y a un autre point que je n’avais pas pensé. J’utilise les ip failover… mais cette solution n’est pas possible en étant multi fournisseur. De ton côté tu gères comment ? Si il est mieux d’être mono fournisseur tu me conseillerais plutot OVH ou Online ?
A la base j’ai pris OVH car Online ne proposait dans les serveurs qui m’intéresse que le même datacenter. Du coup je suis couvert contre la panne matériel mais en cas de coup dur sur l’infra du Datacenter… Pas vraiment top pour de la HA nan ?
Mes Proxmox sont dans des salles serveurs sur des sites dont j’ai la gestion et non pas chez un hébergeur… sur ce coup, je ne pourrais pas trop d’aider…
D’accord merci. Je vais voir comment je peux me débrouiller. Je vois plus haut dans les commentaires « Le point faible de cette architecture est le stockage, car dans le cas présent pas de redondance. ». Si j’ai bien compris en faisant ça si le serveur NFS tombe plus rien ne fonctionne ? Ou les VM sont aussi stocké sur les pve1 et 2 ?
J’aurai tendance à comprendre que le pve1 et 2 prennent la charge CPU et le 3 le stockage. Autre point un peu inconnu. Niveau IP comment gères tu le switches des VM sur un autre noeud ?
Exact pour le serveur NFS, j’ai donc changé ma façon de faire et je suis passé à Ceph : https://memo-linux.com/proxmox-4-x-mise-en-place-dun-cluster-ha-avec-ceph/
Les VM ont leur propre adresse IP qui est indépendante du noeud où elles se trouvent.
Vos VM ont des adresses IP privée ou le fait d’avoir vos propres serveurs vous pouvez avoir des IP publiques sur vos VM ? J’ai actuellement la problématique de devoir affecter des ipfailover si je veux que mes VM aient des IP accessibles depuis l’extérieur. IP qui sont rattaché aux serveurs. Du coup si il tombe je dois switcher l’ipfailover sur le serveur qui prend la main.
En tout cas merci ton blog est une vraie mine d’or !
Mon cluster est dans un réseau entreprise et donc pas d’adresse IP public et ni d’ipfailover. Je pense que ton ton cas , il faudrait peut être faire du NAT ?
merci pour le compliment :-)
Bonjour,
Merci pour ce tuto. Je suis en train de préparer une nouvelle infra que je vais héberger en data center. Je ne comprends pas l’intérêt du Watchdog. J’ai fait sur la version 4.3 des tests de HA, cela a fonctionné sans problème. Un peu plus que VMWARE (environ 4 mins pour VMWARE et 5 mins 30 secondes pour Proxmox le basculement et le redémarrage des VMS).
Concernant la demande de Kevin, chez les hébergeurs si vous désirez mettre en place des IP locales, il vous faut un routeur ou firewall. Comme vous ne pouvez pas mettre en place du hardware, il vous faut une version logiciel. Vous pouvez installer pfSense (firewall Opensource) en mode HA par exemple, cela vous permet de ne pas avoir de coupure en cas de panne d’un des hosts.
Attention, il peut y avoir des contraintes pour un bon fonctionnement en mode virtuel. Sous VMWARE cela fonctionnait bien mais j’ai fini par investir dans du hardware car j’ai une baie dans data center.
Cordialement,
Fabrice
Hello,
Thank you for this tutorial. It worked perfectly.
But i do live migrate but only have 2 nodes.
Thanks.
Bonjour,
J’ai suivit la doc mais sur une proxmox 5, quand je « perd » un hyperviseur, le HA fonctionne et la migration sur le deuxième hpv se fait mais lors du redemarrage de la machine virtuelle, ca me fait une erreur…
ask started by HA resource agent
Could not access KVM kernel module: No such file or directory
kvm: failed to initialize KVM: No such file or directory
TASK ERROR: start failed: command ‘/usr/bin/kvm -id 100 -name debtest -chardev ‘socket,id=qmp,path=/var/run/qemu-server/100.qmp,server,nowait’ -mon ‘chardev=qmp,mode=control’ -pidfile /var/run/qemu-server/100.pid -daemonize -smbios ‘type=1,uuid=b78f89e6-8cbc-4ba1-bf44-db683336b436’ -smp ‘1,sockets=1,cores=1,maxcpus=1’ -nodefaults -boot ‘menu=on,strict=on,reboot-timeout=1000,splash=/usr/share/qemu-server/bootsplash.jpg’ -vga std -vnc unix:/var/run/qemu-server/100.vnc,x509,password -cpu kvm64,+lahf_lm,+sep,+kvm_pv_unhalt,+kvm_pv_eoi,enforce -m 1024 -device ‘pci-bridge,id=pci.2,chassis_nr=2,bus=pci.0,addr=0x1f’ -device ‘pci-bridge,id=pci.1,chassis_nr=1,bus=pci.0,addr=0x1e’ -device ‘piix3-usb-uhci,id=uhci,bus=pci.0,addr=0x1.0x2’ -device ‘usb-tablet,id=tablet,bus=uhci.0,port=1’ -device ‘virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3’ -iscsi ‘initiator-name=iqn.1993-08.org.debian:01:5da8bd74b3a’ -drive ‘file=/mnt/pve/datas/template/iso/debian-9.2.1-amd64-DVD-1.iso,if=none,id=drive-ide2,media=cdrom,aio=threads’ -device ‘ide-cd,bus=ide.1,unit=0,drive=drive-ide2,id=ide2,bootindex=200’ -device ‘ahci,id=ahci0,multifunction=on,bus=pci.0,addr=0x7’ -drive ‘file=/mnt/pve/datas/images/100/vm-100-disk-1.qcow2,if=none,id=drive-sata1,format=qcow2,cache=none,aio=native,detect-zeroes=on’ -device ‘ide-drive,bus=ahci0.1,drive=drive-sata1,id=sata1,bootindex=100’ -netdev ‘type=tap,id=net0,ifname=tap100i0,script=/var/lib/qemu-server/pve-bridge,downscript=/var/lib/qemu-server/pve-bridgedown,vhost=on’ -device ‘virtio-net-pci,mac=76:53:EC:96:7E:3F,netdev=net0,bus=pci.0,addr=0x12,id=net0,bootindex=300 » failed: exit code 1
Si tu as une idée je suis preneur
Salut Seb,
à mon idée la technologie de virtualisation n’est pas activé dans le bios de ton serveur…
sinon, j’ai mis à jour l’installation du cluster Proxmox HA en version 5 : https://memo-linux.com/proxmox-5-mise-en-place-dun-cluster-ha-avec-ceph/