Proxmox v6: Cluster hyperconvergé avec Ceph

Proxmox v6: Cluster hyperconvergé avec Ceph

14 mars 2020 0 Par Mairien Anthony

Mise en cluster de trois nodes Proxmox en version 6 avec stockage distribué Ceph !

Nous allons donc voir aujourd’hui comment mettre en cluster trois noeuds Proxmox et mettre ensuite en place une plateforme de stockage distribué via Ceph.

I) Ceph, c’est quoi au juste ?

Ceph est donc, selon notre cher Wikipedia :

Ceph est une plateforme libre de stockage distribué. Les objectifs principaux de Ceph sont d’être complètement distribué sans point unique de défaillance, extensible jusqu’à l’exaoctet et librement disponible. Les données sont répliquées, permettant au système d’être tolérant aux pannes. Ceph fonctionne sur du matériel non spécialisé. Le système est conçu pour s’autoréparer et automatiser au maximum ses tâches administratives afin de réduire les coûts d’exploitation.

Pour faire simple, Ceph nous permet d’utiliser les disques de plusieurs hôtes pour réaliser du stockage distribué, permettant par exemple de réaliser des migrations de machines virtuelles à chaud, ou encore d’éviter les pannes étant donné qu’il n’y aura pas de SPOF, c’est-à-dire de « Single Point of Failure », pas de point unique de défaillance. Dans le cas des VMs toujours, si nous les stockons sur notre cluster Ceph, celles-ci seront donc répliquées sur chacun des hôtes.

Concernant le fonctionnement de Ceph, c’est en réalité assez simple. Prenons cette photo issue d’une vidéo du Capitole du Libre, lors d’une conférence :

Nous avons des fichiers, que ce soit des fichiers textes (Word etc), des vidéos, des bases de données même. Nous allons les découper en plusieurs petites parties que l’on nommera objets, ensuite nous allons placer ces objets dans des sortes de boîtes, que nous dispatcherons sur nos différents disques. L’avantage, c’est que dans cet exemple, nous avons demandé à Ceph de conserver toujours au minimum deux réplicas, et comme on peut le voir, la « boîte bleue » se retrouve sur deux disques, et la « boîte rouge » sur deux disques aussi. Ainsi, vu que Ceph est dit « auto-réparant », si le premier disque vient à tomber en panne, Ceph va automatiquement créer un doublon de la boîte bleue du second disque sur le troisième, ce qui permet d’avoir une très bonne tolérance en cas de panne de disque. Ces fameuses boîtes sont d’ailleurs nommées des placements groups dans le langage technique de Ceph, et les disques des OSD, mais nous allons y venir, l’important est bien de saisir le fonctionnement pour l’instant.

Maintenant, pour le fonctionnement technique de la chose, ça se présente de cette façon :

  • Un noeud aura le rôle de Manager, c’est lui qui va gérer le cluster Ceph ;
  • Un noeud aura le rôle de Moniteur, voir minimum trois noeuds pour de la haute disponibilité. Ce sont eux qui auront le rôle de surveiller le cluster ;
  • Un noeud (ou plusieurs) serviront à héberger les disques OSD, bien que le Manager/Moniteur peuvent tout aussi bien en héberger ;

Si cela reste assez flou pour vous, je vous propose de continuer la lecture de cet article pour voir sa mise en oeuvre, et si malgré tout certaines zones d’ombres persistent, je ne peux que vous conseiller d’aller piocher sur internet pour avoir plus d’informations, même si les explications sur Ceph en français et tout particulièrement par rapport à Proxmox 6 sont très pauvres…

II) Mise en place du cluster

Bien, nous allons donc déjà mettre en cluster nos trois noeuds, ici je suppose que vous avez déjà vos trois Proxmox installés, à jour, et avec des IP fixes.

Pour ma part, j’aurais :

  • pve-01, en 192.168.1.100/24 ;
  • pve-02, en 192.168.1.110/24 ;
  • pve-03, en 192.168.1.120/24 ;

On ne se prend pas trop la tête niveau adressage réseau, ça reste un lab après tout.

On se rend donc sur notre premier hôte, dans Datacenter, puis Cluster et on clique sur Créer :

Ici il convient simplement de choisir un nom, et de séléctionner l’interface (ou les interfaces, si l’on désire faire de l’aggrégation de liens) qui sera utilisée pour communiquer avec les autres membres du cluster.

On peut maintenant cliquer sur Informations de jonction pour obtenir les informations nécessaires à la connexion des deux autres nodes :

Sur la seconde node, il nous suffit de cliquer sur Joindre cluster et de coller l’information de jonction, puis d’entrer le mot de passe root du premier noeud, et le tour est joué !

Il en va de même pour le troisième noeud, et tout sera bon. Si vous obtenez un message « erreur de connexion », faites simples F5 pour vous re-logguer à l’interface web et elle se mettra à jour d’elle-même.

*A noter que vous pouvez prendre les informations de jonction de l’hôte 1 ou 2 pour faire join le n°3, ça n’a pas d’importance.

Bingo, notre cluster est maintenant fonctionnel ! Plus simple/rapide que d’installer tout un vCenter hein VMWare ? 😁

III) Création du stockage Ceph

Ceph sera utilisée sur un réseau différent de celui utilisé pour communiquer avec les noeuds, donc un autre réseau que notre classique 192.168.1.0/24. En général, rien ne vous empêche de tout mettre sur le même, mais « dans la vrai vie », il faudra privilégier un second réseau en Gigabit voir plus pour ne pas impacter vos autres services sur le réseau. Ici je vais suivre la documentation officielle et installer deux cartes réseaux supplémentaires sur chaque noeuds, pour les mettre en Bonding (aggégation de liens) et utiliser un autre réseau comme préconisé, mais nous allons voir tout ça en détails. Commencez donc par rajouter deux cartes réseaux sur chacun de vos noeuds.

Ici je travaille avec le classique VMWare Workstation, donc j’ai simplement créé un Lan Segment nommé « Ceph » et j’ai connecté mes deux cartes réseaux supplémentaires à ce lan. Il en va donc de même pour les deux autres noeuds.

Ensuite nous redémarrons nos hyperviseurs et pour chacun d’eux nous allons dans Réseau puis Créer et ensuite Linux Bond :

Ici on choisi une adresse IP pour la carte (qui sera composée de deux cartes en réalité, nous faisons de l’aggrégation de liens, du « bonding ») et nous écrivons le nom des interfaces « esclaves » puis nous choisissons le mode balance-rr, qui n’est autre que du Round Robin. Et c’est tout ! Pas besoin de passerelle étant donné que nos cartes sont dans le lan segment créé plus haut, et pourront donc se ping sans problème.

On peut ensuite se rendre sur notre premier hôte, puis aller sur l’onglet Ceph pour lancer l’installation :

L’installation se lance donc, puis vient la configuration qui est assez simple à mettre en oeuvre :

  • Public network : le réseau que Ceph utilisera, il vaut mieux avoir un réseau dédié (c’est ce qu’on a fait ici) ;
  • Cluster network : réseau utilisé pour les réplications OSD, on ne touche à rien ici (on utilise le réseau classique, pas celui destiné à Ceph) ;
  • Noeud d’observation : sauf cas spécial, vous pouvez prendre le noeud que vous voulez ;

On valide le tout et hop :

Niquel ! Ceph est installé sur notre premier hôte.

On reste donc sur le menu lié à Ceph et on clique sur OSD, puis Créer :

Ici nous allons donc sélectionner un disque vierge de 100Go. Comme pour ZFS, ce disque ne doit pas être lié à un raid matériel.

Si on clique ensuite sur Rafraîchir on voit notre OSD qui est apparu :

On va donc maintenant installer et configurer Ceph de la même manière sur nos deux autres hôtes, et créer pour eux aussi un OSD.

Petite note: lors de l’installation sur les deux autres qui sont déjà dans notre cluster Proxmox, vous obtiendrez ce message :

C’est tout à fait normal, Proxmox vous a pré-rempli la configuration, donc aucun soucis !

Une fois tout ceci fait, vous devriez obtenir quelque comme comme ceci :

On peut donc voir nos différents OSD (nos différents disques) présents sur chaque node de notre cluster.

*Concernant la différence de version pour le node 02, n’y prêtez pas attention, c’est dû à certaines manipulations que j’avais faites en dehors de ce lab 😛

Bien, à partir de là si on retourne sur le panel central de Ceph, on peut voir que l’état de santé est passé à « Good » ! En effet, avant nous n’avions aucun OSD de créé, et il en fallait minimum deux, c’est désormais chose faite.

Si l’on désire rajouter un noeud en tant que moniteurs, il nous suffit d’aller sur l’onglet Moniteurs puis Créer, rien de plus facile !

Et il en va de même pour les managers.

Bien, il est temps d’enfin créer notre pool de stockage en nous rendant sur l’onglet pool puis Créer (on commence à connaître désormais) :

On donne donc un nom à notre pool, on coche la case Ajouter comme Stockage, et concernant Taille et Taille minimum ce sont simplement le nombre de réplications à effectuer pour les objets, comme décrit en début d’articles. Par défaut la valeur est donc de trois réplicas, avec un minmum de deux.

Et désormais, quand on se rend sur notre stockage :

Et bien voilà voilà ! Nous avons donc notre stockage Ceph répliqué sur nos trois hôtes ! On peut donc désormais créer des machines virtuelles dessus sans problème.

Bon bien entendu sur ces captures d’écran le taux en lecture/écriture est extrêmement faible, mais pour ce lab les trois hyperviseurs avec leurs disques ont été installés sur un simple disque dur en Sata, donc rien d’incroyable 😛

Ceci conclut donc ce second article sur Proxmox v6, où nous aurons vu la mise en cluster qui diffère pas mal de la v5, mais nous aurons aussi pu abordé Ceph avec la création d’un cluster certes classique, mais bien fonctionnel. Encore une fois, je vous invite fortement à vous renseigner sur d’autres sites par rapport à la mise en place de Ceph, qui regorge de fonctionnalités avancées que je n’ai pas pu traiter ici.

Bonne journée/soirée à vous !