Page cover

CEPH

Déployer un cluster Ceph avec cephadm (Rocky Linux)

📘 Déploiement d’un cluster Ceph avec cephadm (Rocky Linux 9)

Ceph est un système de stockage distribué open-source conçu pour fournir un stockage d'objets, de blocs et de fichiers hautement évolutif et performant. Il utilise une architecture décentralisée avec des nœuds autonomes pour assurer la résilience, la scalabilité et la gestion automatique des données.

Documentation offciellearrow-up-right

Objectif

Fournir un stockage primaire haute disponibilité à un cloud (ex. Apache CloudStack) en déployant un cluster Ceph sur 4 nœuds, avec séparation des trafics public et cluster pour optimiser performances et sécurité.

A savoir

📘 Explication des daemons Ceph

Daemon
Rôle

MON

Gérer la carte du cluster et le quorum.

Requis : 3 MONs minimum.

MGR

Fournir les métriques, orchestrer les services, gérer l’interface web.

Recommandé : 2 MGR (1 actif + 1 standby).

OSD

Gérer les blocs physiques (1 OSD = 1 disque brut). Réplication automatique des données.

MDS

Gérer les métadonnées du système de fichiers CephFS

RGW

Fournir une interface compatible S3 pour le stockage objet.

Public Network

Réseau utilisé pour les communications entre les clients (applications, utilisateurs) et les services Ceph (comme les monitors, OSD, et RGW). Il transporte les requêtes des clients et les données lues/écrites. Exemple : réseau accessible pour les opérations de stockage.

Cluster Network

Réseau interne dédié aux communications entre les nœuds du cluster Ceph, principalement pour la réplication des données, la synchronisation des OSD, et la récupération (rebalancing). Il est conçu pour être isolé et optimisé pour un trafic interne intensif.

1. Prérequis matériels et réseau

  • 4 nœuds physiques ou VMs Rocky Linux 9

  • Sur chaque nœud :

    • 1 disque système (32 Go) → installation de l’OS

    • 3 disques de données (200 Go chacun) → destinés aux OSD Ceph

  • Deux interfaces réseau par nœud :

    • eth0réseau public (accès API, clients) – exemple : 192.168.10.0/24

    • eth1cluster network (backend Ceph, réplication, heartbeat) – exemple : 10.0.0.0/24

circle-exclamation

Pourquoi deux réseaux ?

2. Préparer chaque nœud

2.1 Installer les paquets nécessaires

  • chrony → synchroniser l’heure sur tous les nœuds (critique pour Ceph).

  • lvm2 → nécessaire si l’on veut partitionner ou gérer les disques OSD en LVM (optionnel).

2.2 Configurer la résolution des noms

Ajouter dans /etc/hosts sur chacun des 4 nœuds :

  • Permettre à chaque nœud de résoudre les autres par nom, simplifiant la configuration Ceph.

2.3 Activer SSH sans mot de passe

Sur ceph-node1, générer une clé SSH et la distribuer :

  • Faciliter l’orchestration automatisée de Ceph via cephadm.

circle-info

🔒 Bonnes pratiques pour un environnement de production

🛡️ Note de sécurité :

Dans cette documentation, l'accès SSH est effectué directement avec l'utilisateur root pour faciliter le déploiement dans un environnement de test ou de lab.

En production, il est recommandé de :

  • Créer un utilisateur dédié, par exemple cephadmin.

  • Lui accorder les droits sudo sans mot de passe pour les commandes nécessaires :

  • Donner à cet utilisateur des ACLs ( package ACL installé au préalable ) spécifiques sur /etc/ceph/ :

  • Restreindre l'accès SSH (par clé uniquement, fail2ban, IP source, etc.)

👉 Cela renforce la sécurité, tout en permettant à cephadm de fonctionner correctement sans ouvrir totalement l'accès root.

3. Initialiser le cluster Ceph (cephadm bootstrap)

Doc officielle : 1arrow-up-right - 2arrow-up-right

3.1 Installer cephadm

3.2 Lancer le bootstrap

  • --mon-ip → IP du premier MON sur le réseau public.

  • --cluster-network → plage IP dédiée au trafic backend Ceph.

  • Dashboard → interface web activée dès le départ.

  • --initial-dashboard-password → mot de passe de l'UI

Le premier MON (monitor) et le MGR (manager) sont créés automatiquement sur ceph-node1.

3.3 Copier la clé ceph.pub dans le répertoire /etc/ceph/ depuis ceph-node1 ( 192.168.10.11 )

circle-info

Pour un environnement de prod, avec un user dédié ( par exemple cephadmin )

4. Ajouter les autres nœuds au cluster

  • Entrer dans le container Ceph pour exécuter les commandes d’orchestration.

  • orch host add → enregistrement des nœuds au sein de l’orchestrateur Ceph.

5. Gérer les labels (facultatif mais recommandé)

5.1 Ajouter un label à un nœud

circle-exclamation

Pour se connecter tapez l'ip d'un noeud en web sur le port 8443 . Vous serez redirigé vers le moniteur

Le username et le mdp sont ceux définis lors du boostrap

6. Déployer les daemons Ceph

6.1 Méthode A – avec labels

6.2 Méthode B – manuelle (sans labels)

6.2.3 Déployer OSDs en séparant WAL/DB ( facultatif mais très good )

circle-check

📘 Rôle du WAL et de la DB (Bluestore)

triangle-exclamation
  1. Lister les disques

circle-exclamation
  1. Ajouter chaque disque OSD en séparant les disque de datas ( sdb,sdc,sdd, ) et les disques pour Wal et DB

7. Créer le pool RBD pour CloudStack

triangle-exclamation
circle-check
  1. Calculer le nombre de Placement Groups (PG) :

circle-exclamation
  1. Créer le pool :

triangle-exclamation

Ne pas tenir compte de mon undersized sur mon dashboard ( j'ai crash des osd pour des tests )

8. Vérifier le fonctionnement

9. Activer le dashboard (optionnel)

  • Accéder à : https://<ceph-node1>:8443

  • Consulter les métriques, la santé du cluster et les logs.

10. Ouverture – CephFS et MDS

  • Objectif : partager un filesystem distribué (NAS) via Ceph.

  • Daemon MDS (Metadata Server) : gérer les métadonnées POSIX (arborescence, permissions).

  • Déploiement :

  • Montage :

🔍 Commandes de debug

Commande
Description

ceph health detail

Afficher toutes les alertes et warnings

ceph osd crush tree

Visualiser la topologie CRUSH (OSD via racks, hosts)

ceph orch device ls

Lister tous les disques physiques détectés

ceph orch host ls --label osd

Lister les hôtes portant un label “osd”

ceph mgr services

Vérifier les services MGR actifs

ceph daemon <type>.<id> config show

Afficher la config d’un daemon spécifique

ceph debug monconfig <host>

Debug du config MON

journalctl -u ceph-\*

Logs système pour tous les services Ceph

ceph -s

Etat général du cluster

Last updated