Presentation

Dans ce projet, je veux activer la fonction haute disponibilité en proxmox. Pour cela, nous sommes obligés à quelques prérequis comme :

  • Au moins trois machines proxmox. Qui ont au moins un disque dur non utilisé
  • Les machines sont dans un cluster.

(Spoiler: j’ai que 2 machines)

Mais, qu’est-ce que c’est la haute disponibilité ? La définition trouvée sur wiki (anglais) est : 

La caractéristique d’un système qui a comme but d’assurer un certain niveau de performance opérationnelle, en principe l’état active sans coupure pour une période plus grande que normale.

Configuration Disques

Configurer les disques, faire la piscine de stockage : Nous pouvons utiliser soit la ligne commande et faire les commandes suivantes sur chaque nœud :

ssh root@proxmoxnode1
zpool create -f -o ashift=12  local-zfs  /dev/sdx /dev/sdy
# rpool est le nom de la piscine de stockage

Nous pouvons la faire aussi dans l’interface web du proxmox: Sur chaque nœud, nous allons dans le menu [Disks] -> [ZFS] -> [Create ZFS]

Nous allons décocher [Add Storage], le cas échéant, ça va mètre des contraintes sur le type de fichiers valide pour la piscine. Le type de RAID: moi comme je n’ai qu’un seul disque dur, je laisse [Single Disk]. Compression : la communauté soutient le lz4 comme rapide et efficient. Ashitft:  nous allons le laisser comme il est.

Ce qui vraiment important, c’est faire la même configuration sur les autres nœuds, en spécial le nom de piscine (j’ai eu des disques de différentes tailles sur différents nœuds facilement, mais le nom doit être pareil).

En suite, nous allons choisir le menu [Datacenter] => [Storage] => [Add] => [ZFS] (non pas [ZFS over iscsi])

ID: C’est le nom de la piscine, nous venons de créer. ZFS Pool: Nous allons trouver la piscine créée. Content : Les types de fichiers qui seront écrits sur le stockage. Nodes: Nous allons faire la piscine disponible pour tous nos nœuds . Enable : oui!! Thin Provisioning: oui Thin Provisioning c’est une méthode de pré-allocation d’espace de stockage à un disque virtuel.

En bref, le disque d’une machine virtuelle va occuper que l’espace utilise sur le disque hôte, même si nous déclarons un disque plus large. Exemple : Nous avons une machine hôte avec un disque dur de 60 GO. Sur cette machine, nous avons 4 machines virtuells chacune avec un disque virtuel de 30 GO. 4 x 30 = 120 comment est-il possible ? Chacune occupe que 10% de son espace alloué donc en total les 4 machines n’occupe plus de 12 GO sur le disque hôte.

Mais, attention, en temps l’espace occupée par chaque machine peut s’élargir avec des donnes (logs, média, etc) et l’on peut se retrouver sans d’espace sur la machine.

Plus des détails : Thin Provisioning Article

Creation groupes

En suite, nous allons faire [Datacenter] => [HA] => [Groups] => [Create] Ça va créer le groupe ou les machines virtuelles peuvent migrer d’une hôte/nœud à l’autre en cas d’un incident.

J’ai déjà des machines virtuelles, donc j’arrête une et je change le stockage pour son disque dur : Avec la machine sélectionnée en [Hardware] => [Hard Disk]=> [Disk Action] => [Move Storage]

Je la démarre et je reviens sur le menu [Datacenter] => [HA] => Resources => [Add] Ici, j’ajoute une machine, elle fait partie du groupe ha-visor.  L’état requis est allumé (started) ce choix est affecté des commandes start/stop/shutdown etc du menu principal.   Le [max-restart] et [max-relocate] s’agite de combien de fois les deux services seront utilisés en cas d’erreur.

Conclusion

Bref, j’ai réussi à essayer la réplication et la migration, mais comme je n’ai pas pas fait un serveur de partage pour les serveurs, la migration et la réplication était fait de manière très inefficiente. En effet, à chaque demande de migration les donnes étaient transmises d’un serveur à l’autre, pas que des liens vers un emplacement sur le disque de partage.

La Haute Disponibilité sera étudiée de manière approfondie ici