Logo comoweb.fr
comoweb.fr EPITA ING 1
Retour aux articles
Stockage

Stockage distribué Ceph sur Proxmox 3 nœuds : CephFS, Ceph RBD et S3 RadosGW

Architecture Ceph unifiée hyperconvergée sur 3 nœuds Proxmox : disques blocs RBD pour K8s, filesystem partagé CephFS et stockage objet S3 RadosGW.

Stockage distribué Ceph sur Proxmox VE 3 Nœuds

Pour garantir la haute disponibilité des données sur l'infrastructure comoweb.fr, l'ensemble du stockage est confié à un cluster Ceph distribué et auto-cicatrisant, configuré de manière hyperconvergée sur les 3 nœuds physiques Proxmox VE.

Ceph fournit simultanément trois modes de stockage distincts et complémentaires :

  1. Ceph RBD (RADOS Block Device) : Volumes blocs ultra-rapides pour les PersistentVolumes Kubernetes et disques de VMs.
  2. CephFS : Système de fichiers distribué compatible POSIX avec montage multi-clients (ReadWriteMany - RWX).
  3. Ceph S3 Object Storage (RadosGW) : API compatible AWS S3 pour le stockage de sauvegardes, images et buckets applicatifs.
CODE
                     Cluster Proxmox VE (3 Nœuds Physiques)
          ┌─────────────────────┬─────────────────────┬─────────────────────┐
          │     Nœud pve-01     │     Nœud pve-02     │     Nœud pve-03     │
          │  OSD 0 (NVMe/SSD)   │  OSD 1 (NVMe/SSD)   │  OSD 2 (NVMe/SSD)   │
          │     MON 1 / MGR     │     MON 2 / MGR     │     MON 3 / MGR     │
          └──────────┬──────────┴──────────┬──────────┴──────────┬──────────┘
                     │                     │                     │
                     └─────────────────────┼─────────────────────┘
                                           │
                              Réseau Dédié Ceph (10G Mesh)
                                           ▼
                   ┌───────────────────────────────────────────────┐
                   │           Pools Ceph Déclaratifs              │
                   ├───────────────────────┬───────────────────────┤
                   │   Ceph RBD (Block)    │   CephFS (Shared RWX) │
                   │   -> PersistentVolumes│   -> Partage multi-pod│
                   ├───────────────────────┴───────────────────────┤
                   │        S3 RadosGW (Object Storage)            │
                   │        -> Buckets AWS S3 compatibles          │
                   └───────────────────────────────────────────────┘

1. Ceph RBD : Le moteur des disques Kubernetes

Les pods Kubernetes ont besoin de disques persistants performants pour les bases de données (MariaDB, PostgreSQL) et les logs applicatifs. Grâce au pilote Ceph-CSI, Kubernetes alloue automatiquement des volumes RBD :

YAML
# Définition du StorageClass Ceph RBD
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: ceph-rbd
provisioner: rbd.csi.ceph.com
parameters:
  clusterID: comoweb-ceph-cluster
  pool: k8s-rbd-pool
  imageFeatures: layering
  csi.storage.k8s.io/provisioner-secret-name: csi-rbd-secret
  csi.storage.k8s.io/provisioner-secret-namespace: ceph-csi
reclaimPolicy: Delete
allowVolumeExpansion: true

2. CephFS : Le partage de fichiers en RWX

Pour les besoins de synchronisation où plusieurs pods doivent accéder au même volume en lecture et écriture simultanées (comme les configurations partagées ou les répertoires d'upload), CephFS fournit un système de fichiers POSIX distribué sans goulot d'étranglement NFS.

3. S3 RadosGW : Object Storage natif

Pour s'affranchir des services cloud propriétaires comme AWS S3 tout en conservant une compatibilité API standard, le RadosGW Ceph expose une interface d'API objet S3 complète :

  • Sauvegardes automatisées des bases de données et des clusters.
  • Stockage des artefacts GitLab CI et des dépôts de paquetages.
  • Chiffrement au repos et gestion des politiques IAM de buckets.