14

Proxmox 4.x : mise en place d’un cluster HA

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 :
    • vmbr0 10.10.8.202
      vmbr2 192.168.94.1

    • pve-02 :
    • vmbr0 10.10.8.204
      vmbr2 192.168.94.2

    • pve-03 :
    • vmbr0 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
  • Sur pve-02, rejoindre le cluster :
  • pvecm add 192.168.94.1 -ring0_addr 192.168.94.2
  • Même chose sur pve-03 :
  • pvecm add 192.168.94.1 -ring0_addr 192.168.94.3
  • Dans l’interface web, les 3 nœuds sont présent :

Préparation des serveurs NFS sur pve-03

  • Installation du serveur NFS :
  • apt install nfs-kernel-server nfs-common
  • Création du répertoire partagé :
  • mkdir /var/lib/vz/pve
  • Configuration du fichier /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)
    
  • Exporter la configuration NFS :
  • exportfs -r
  • Vérification :
  • 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

    • Cliquer sur « Datacenter », puis « HA » et « Add » :
    • La VM est ajoutée au groupe « pveha » du cluster HA :

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.

  • Revenir au menu « Groups », éditer le groupe « pveha » et indiquer les priorités :

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 :

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
  • Supprimer le dièze pour activer :
  • # select watchdog module (default is softdog)
    WATCHDOG_MODULE=ipmi_watchdog
    
  • Créer un fichier de configuration /etc/modprob.d/ipmi_watchdog.conf :
  • nano /etc/modprobe.d/ipmi_watchdog.conf
  • Ajouter :
  • options ipmi_watchdog action=power_cycle panic_wdt_timeout=10
  • Modifier le grub :
    • Éditer /etc/default/grub :
    • nano /etc/default/grub
    • Modifier la ligne GRUB_CMDLINE_LINUX_DEFAULT :
    • GRUB_CMDLINE_LINUX_DEFAULT="quiet nmi_watchdog=0"
    • Recharger la configuration du grub :
    • update-grub
  • Redémarrer le serveur :
  • reboot
  • Une fois connecté au serveur, vérifier les nouvelles valeurs :
  • 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 :

Partager l'article :





fred

"Dire que l'on s'en fiche du droit à la vie privée sous prétexte qu'on a rien à cacher, c'est comme déclarer que l'on se fiche du droit à la liberté d'expression sous prétexte qu'on a rien à dire." Edward Snowden

14 commentaires

  1. 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

  2. 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…

  3. 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.

  4. 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…

  5. 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 ?

  6. 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…

  7. 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 ?

  8. 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 !

  9. 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 :-)

  10. 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

  11. Hello,
    Thank you for this tutorial. It worked perfectly.
    But i do live migrate but only have 2 nodes.
    Thanks.

  12. 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

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.