Dans ce tutoriel, je vais vous expliquer comment configurer un cluster avec Proxmox afin d’assurer une haute disponibilité et la gestion du stockage sera avec Ceph afin d’avoir un environnement de virtualisation Hyperconvergé.
Présentation
Avant de se lancer dans le tutoriel, je vais aborder quelques points pour les néophytes.
Commençons par l’hyperconvergence, traditionnellement la mise en Cluster des Hyperviseurs se faisait avec un système 2 tiers. On avait d’un coté la puissance de calcule (CPU + RAM) les serveurs et le stockage sur Baie dans un architecture de type SAN (Stockage Area Network). Avec l’Hyperconvergence, il n’y a plus de SAN, on utilise le stockage local des serveurs pour stocker les machines virtuelles.
Afin de facilité la compréhension voici deux schémas :
Je ne vais pas rentrer dans un débat sur quelle architecture est le mieux, avec un architecture hyperconvergée, on contacte que les machines virtuelles sont stockés sur plusieurs serveurs afin d’en assurer la haute disponibilité en cas de perte d’un serveur physique.
Le schéma est assez simpliste, si on avait un 4 ème serveurs sur la partie Hyperconvergé, il n’y aura pas forcement une 4eme copie des machines virtuelles.
D’expérience, les deux types d’architectures ont leurs avantages et inconvénients, pour moi elles sont complémentaires et non en oppositions.
Sur le papier l’hyperconvergence offre des performances élevées car elles est souvent utilisés sur des serveurs haut de gammes qui est un prérequis, avec un stockage full flash de type Nvme ou SSD, c’est idéale pour faire des applications et base de données qui nécessite beaucoup de puissance et une haute disponibilité.
Il serait totalement contre productifs de faire tourner par exemple des serveurs de fichiers de plusieurs Téra ou des serveurs Exchange par exemple qui stocke un grand volume de données froides.
Prenons l’exemple d’un serveur de fichier qui aurait un volume de 10To, sur une architecture hyperconvergée, la machine utiliserait 30 TO de stockage sur des disques flash.
Pour faire fonctionner une architecture hyperconvergée, il est nécessaire d’avoir au minimum 3 nœuds (serveurs) identiques qui est prérequis pour l’ensemble des solutions du marchée.
Pour en revenir à ce tutoriel dédié à Proxmox, nous allons avoir comment mettre en place un Cluster dans Proxmox puis la configuration de Ceph qui va gérer le stockage entre les serveurs.
Information
N’ayant pas à ma disposition 3 serveurs physiques identiques, j’ai réalisé ce tutoriel avec 2 serveurs.
Pour une mise en production il est impératif d’avoir 3 serveurs, sinon la haute disponibilité ne sera pas fonctionnelle.
Avant de vous lancer dans la configuration, je vous invite à lire cet article pour comprendre Ceph : Comprendre les bases de l’architecture de Ceph
Création du cluster dans Proxmox et ajout des serveurs
La première étape de ce tutoriel va être la création du Cluster dans Proxmox puis l’ajout des autres serveurs.
Avant de se lancer dans la création du Cluster, je vais apporter une petite précession pour les personnes qui sont habitués à Hyper-V.
Souvent quand on parle de Cluster, on pense tout de suite à la haute disponibilité, dans Proxmox la configuration du Cluster va permettre dans un premier d’ajouter les serveurs Proxmox dans le même Datacenter et de pouvoir gérer l’ensemble des serveurs Promox dans la même interface Web et de pouvoir par exemple, déplacer les machines d’un serveur à un autre (Migrate) sans pour autant qu’elles soient en hautes disponibilités.
Pour que la haute disponibilité soit possible, il faut un stockage partagée (SAN / Ceph), créer un groupe de HA et configurer les machines virtuelles dans ce groupe.
Autre élément à prendre un compte avec Proxmox pour une fonctionnement correcte de la haute disponibilité, Proxmox requiert 3 serveurs.
Créer un cluster dans Proxmox
La création du Cluster peut être effectué sur n’importe quel serveur qui en sera membre.
On va créer le cluster depuis le serveur s-pve-1.
Aller sur Datacenter 1, Cluster 2 puis cliquer sur le bouton Create Cluster 1.
Nommer le cluster 1, configurer le réseau du cluster 2 puis cliquer sur Create 3.
Patienter pendant la création du Cluster …
Le cluster est créé, fermer la fenêtre.
Le cluster est visible dans l’interface Web et on peut voir que le serveur qui nous a servi à créer le cluster en est membre.
Ajouter un serveur Proxmox dans un Cluster
On va ajouter le serveur s-pve-2 dans le cluster.
Sur le serveur s-pve-1, depuis le paramétrage du Cluter, cliquer sur Join Information 1.
Cliquer sur le bouton Copy Information 1.
Depuis l’interface Web d’administration du serveur aller à la configuration du cluster : Datacenter / Cluster et cliquer sur le bouton Join Cluster 1.
Coller les informations 1 de jonction au cluster, entrer le mot de passe root 2 du serveur membre du cluster, sélectionner la carte réseau 3 pour les communications du cluster et cliquer sur le bouton Join ‘Cluster-name’ 4.
Patienter pendant la jonction au cluster …
Pendant la jonction au cluster, vous allez être déconnecté de l’interface Web, de ce fait on ne peut pas voit quand la jonction est terminée.
Sur le serveur s-pve-1, vérifier dans l’interface Web que le serveur est ajouté au cluster 1 et que celui-ci est visible dans l’interface d’administration.
Recommencer l’opération pour les autres serveurs qui doivent être ajouter au cluster.
Mise en place du stockage Ceph
Installer Ceph sur les serveurs Proxmox
Par défaut Ceph n’est pas installé sur les serveurs Proxmox, en sélectionnant le serveur, aller sur Ceph et cliquer sur le bouton Install Ceph 1.
N’ayant pas de licence, j’ai sélectionné le Repository No-Subscription 1, cliquer sur Start reef installation 2.
Valider l’installation des paquets supplémentaires…
Patienter pendant l’installation …
L’installation terminée, cliquer Next 1 pour passer à la configuration.
Choisir l’adresse réseau 1 qui sera utilisé pour le cluster Ceph et cliquer sur Next 2.
L’installation est terminée, cliquer sur Finish 1 pour fermer l’assistant.
L’installation de Ceph est terminé sur le premier serveur, recommencer cette opération sur les autres serveurs du cluster.
Configuration de Ceph
On va maintenant passer à la configuration de Ceph.
Je ne vais pas rentrer dans le détail technique dans le tutoriel, je vous invite à lire la documentation qui se trouve ici pour plus d’informations.
Configurer les Monitor et Manager
On va ajouter chaque nœud comme Minotor et Manager du cluster Ceph
Depuis un des nœuds du cluster, aller Ceph 1 puis Monitor 2.
On va commencer par les Monitor, cliquer sur le bouton Create 1.
Sélectionner le serveur à ajouter 1.
Le serveur sélectionné, cliquer sur le bouton Create 1.
Le second serveur est ajouté.
Ajouter les autres serveurs et faire de même pour les Manager.
Ajouter OSD : disque physique
Maintenant on va ajouter à Ceph les disques physiques appelé OSD.
Ci-dessous les disques physiques que je vais pouvoir ajouter pour chaque serveur :
Pour une fonctionnement correcte, il faut ajouter le même nombre de disques pour chaque serveur.
Sélectionner un serveur, puis aller sur Ceph / OSD et cliquer sur le bouton Create : OSD 1.
Sélectionner le disque 1 et cliquer sur Create 2.
Le disque est ajouté pour le serveur s-pve-1.
Ajouter d’autres disques du serveur si nécessaire et recommencer pour chaque serveur du cluster Ceph.
Les disques ont été ajoutés pour les deux serveurs.
Vous pouvez ajouter des OSD à tout moment, il faut juste respecté d’ajouter un OSD par serveur à chaque fois.
Création d’un Pool
Un pool est un stockage qui va pouvoir être utiliser dans Proxmox pour le stockage des machines virtuelles.
Aller sur Cepth / Pools et cliquer sur le bouton Create 1.
J’ai volontairement activé l’affichage avancée, normalement, vous avez seulement à nommer 1 le Pool et à cliquer sur Create 2.
Quelques explications, la valeur Size va correspondre au nombre de copie de la données sur le cluster Ceph, par défaut cette valeur est à 3 et elle ne peut pas être supérieure au nombre de nœud dans le cluster Ceph. La valeur Min. Size correspond au nombre de nœud minimum qui doivent être en ligne, par défaut 2, si on descend en dessous de cette limite, les accès au Pool sont bloqués.
Le Pool est ajouté et on peut voir le stockage ceph-1 disponible sur les deux serveurs.
Utilisation du Pool de stockage Ceph
Lors de la création d’une machine virtuelle ou d’un conteneur, choisir le stockage ceph-1.
On peut voir que le disque de la machine virtuelle est sur le stockage ceph-1.
Configuration de la haute disponibilité HA sur un cluster Proxmox
On va maintenant voir comment configurer la HA dans Proxmox, pour fonctionner le stockage des machines virtuelles doit être sur stockage partagé entre les serveurs du groupe HA.
La haute disponibilité dans Proxmox se gère avec des groupes de haute disponibilité dont les serveurs sont membres, ce qui permet par exemple d’avoir différent type de serveur membre d’un cluster et de les regroupes les serveurs de type identique dans un groupe.
Cette configuration apporte une grande flexibilité et permet par exemple au sein d’un même Datacenter de pouvoir gérer des serveurs qui serait sur une architecture 2 tier et des serveurs en hyperconvergence.
Pour créer un groupe, aller sur Datacenter / HA / Groups et cliquer sur le bouton Create 1.
Nommer 1 le groupe, sélectionner les serveurs membres 2 puis cliquer sur le bouton Create 3.
Le groupe est créé.
Maintenant, il faut ajouter les ressources (VM et CT) qui seront dans le groupe de HA.
Aller sur Datacenter / HA cliquer sur le bouton Add 1.
Sélectionner la VM 1.
Sélectionner le groupe 1 et cliquer sur Add 2.
Les ressources sont configurées pour être en haute dispo.
Depuis l’aperçu de la machine virtuelle, on peut voir le statut HA.
Test de basculement
Pour tester le basculement de la VM 100 qui se trouve sur s-pve-2, je vais arrêter le serveur.
Depuis le Shell, je lance un arrêt du serveur.
Le serveur est hors ligne.
Le VM avec l ID 100 est basculée sur s-pve-1 et démarrée.
Vous savez maintenant comment configurer un environnement haute disponibles avec Proxmox et Ceph.