Comment j’ai déployé Ceph en PROD : épisode 2

Ceph-deploy

Chose promise, chose due, suite à la création de la VM d’administration dans l’épisode précédent, l’installation de Ceph-deploy peut commencer !

Ceph-deploy est un outil facilitant la mise en place d’un cluster Ceph. Cet outil convient parfaitement pour le cas qui nous concerne, toutefois, son utilisation n’est pas recommandée pour les grands clusters (> 15~20 serveurs). Pour de grands clusters, l’utilisation d’un outil de centralisation de configuration comme Puppet, Ansible ou Salt est préférable.

Une fois connecté sur la VM d’administration CentOS 7 créée la journée précédente, un dépôt Ceph doit y être ajouté.
Après l’ajout du dépôt Ceph pour la release Jewel (version 10.2.9 LTS), un simple « yum install ceph-deploy » suffit.

Ceph-deploy est prêt, créons les fichiers nécessaires pour la création du futur cluster :

ceph.conf

Un fichier de configuration vient d’être créé par ceph-deploy, il s’agit du fichier « ceph.conf » contenant la configuration générale du cluster :

[pastacode lang= »python » manual= »%5Bglobal%5D%0Afsid%20%3D%20XXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX%0Amon_initial_members%20%3D%20monitorETL%2C%20monitorSTA%2C%20monitorUMA%0Amon_host%20%3D%20XX.XX.XX.XX%2C%20XX.XX.XX.XX%2C%20XX.XX.XX.XX%0Aauth_cluster_required%20%3D%20cephx%0Aauth_service_required%20%3D%20cephx%0Aauth_client_required%20%3D%20cephx%0Aosd%20pool%20default%20size%20%3D%202%0Apublic%20network%20%3D%20XX.XX.XX.XX%2F24%0Acluster%20network%20%3D%20XX.XX.XX.XX%2F24%0A%0A%5Bosd%5D%0Aosd%20journal%20size%20%3D%2030720″ message= » » highlight= » » provider= »manual »/]

Quelques lignes ont été rajoutées dans ce fichier, notamment la liste des trois monitors accompagnés de leurs IP respectives. Lesdites IP se trouvent dans le réseau « public network » d’un point de vue Ceph.

La ligne « osd pool default size = 2  » a également été ajoutée. Elle permet de définir le nombre de répliques présentes par défaut au sein du pool Ceph.

C’est pas le moment de lire le journal !

Deux lignes du fichier de configuration ont sciemment été évitées durant le chapitre précédent :

[pastacode lang= »python » manual= »%5Bosd%5D%0Aosd%20journal%20size%20%3D%2030720″ message= » » highlight= » » provider= »manual »/]

Prenons un peu de recul, voulez-vous ? Vous vous souvenez du tableau contenant la configuration matérielle des différents serveurs ?

Vous vous êtes peut-être demandé pourquoi avoir recours à plusieurs SSD de types différents ? Bonne question, et la réponse est dans les fameuses deux lignes du fichier de configuration.

Ceph intègre le concept de journal. Chaque OSD (disque dur ou SSD) possède son propre journal afin de garantir la consistance des données enregistrées sur le disque mais également afin de gagner en performance.

Dans notre cas, les SSD NVMe servent de journaux pour les 12 disques durs présents dans les quatre serveurs OSD. En multipliant la taille d’un journal de « 30’720Mo » par 12 on remplit pratiquement le SSD NVMe de 400Gb.

Création des monitors !

Une fois le fichier « ceph.conf » édité convenablement, l’initialisation du cluster peut commencer. La première étape consiste à créer les trois monitors indiqués dans le fameux fichier de configuration :

[pastacode lang= »python » manual= »mon_initial_members%20%3D%20monitorETL%2C%20monitorSTA%2C%20monitorUMA%0Amon_host%20%3D%20XX.XX.XX.XX%2C%20XX.XX.XX.XX%2C%20XX.XX.XX.XX » message= » » highlight= » » provider= »manual »/]

Les trois monitors peuvent donc être installés à l’aide de la commande suivante :

[pastacode lang= »bash » manual= »ceph-deploy%20mon%20create-initial » message= » » highlight= » » provider= »manual »/]

Erreur lors du déploiement d’un monitor

Les trois monitors se trouvent dans les datacenters 1, 2 et 3. L’installation se déroule comme prévu dans les datacenters 1 et 2. Malheureusement, lors de l’ajout du troisième monitor dans le quorum, ceph-deploy lève une erreur et le cluster n’est pas configuré.

J’ouvre un terminal afin de vérifier que le monitor solitaire est toujours accessible et en bonne santé. À ma grande surprise, le serveur répond au ping sur toutes ses interfaces réseaux, il est accessible en SSH, le firewall et SElinux ne semblent pas être impliqués.

Je relance ceph-deploy une nouvelle fois sans grande conviction. Comme prévu, même déroulement des opérations. Le monitor du datacenter 3 n’arrive pas à rejoindre le cluster.

Tentative numéro 3: réinitialiser le cluster Ceph actuel (comprenant uniquement 2+1 monitors) et le recréer avec uniquement le monitor du datacenter 3 pour commencer. Une dizaine de minutes plus tard, c’est chose faite. Le cluster est créé avec un unique monitor présent dans le datacenter 3. La suite de l’exercice consiste donc à rajouter un à un les deux monitors restants. Échec de la mission lors de l’ajout du monitor 1, échec lors de l’ajout du monitor 2.

Il semble que le monitor du datacenter 3 soit isolé des deux autres.

Pourtant, suite à une petite partie de ping-pong réseau, aucune anomalie n’est détectée.

Quelques installations infructueuses plus tard, il m’est toujours impossible d’obtenir un cluster comprenant les trois monitors. La liaison reliant le datacenter 3 au reste du réseau en est-elle la cause ?

La réponse au prochain épisode…

Comment j’ai déployé Ceph en PROD : les épisodes

Episode 1

Episode 2

Episode 3

Episode 4

0 réponses

Laisser un commentaire

Participez-vous à la discussion?
N'hésitez pas à contribuer!

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.