Paillasse/docs/runbooks/ceph.md

83 lines
3.5 KiB
Markdown
Raw Permalink Normal View History

# Runbook — Ceph (démo mono-serveur)
Démo du bloc C du CLAUDE.md : comprendre et savoir opérer Ceph, avant le
« vrai cluster » prévu au 2ᵉ serveur. **Pas branché à OpenStack** (Cinder est
désactivé sur ce déploiement — `enable_cinder: "no"`), pas de réplication (1
seul OSD), pas de stockage réel de l'application. Voir
[ADR 0007](../adr/0007-ceph-demo-mono-serveur.md) pour le détail des choix et
des contournements de bugs.
## État attendu
| Composant | Attendu |
|---|---|
| mon | 1, `sd-124443` |
| mgr | 1 actif + 1 standby |
| osd | 1, up et in, mode `raw` sur `/dev/loop0` |
| Pools | 0 en temps normal (démo seulement, rien de permanent stocké) |
```
sudo /usr/sbin/cephadm shell -- ceph -s
```
`HEALTH_WARN` est normal et attendu (1 seul OSD < taille de réplication par
défaut) — pas une alerte à traiter.
## Où sont les choses
- Config et clés : `/etc/ceph/ceph.conf`, `/etc/ceph/ceph.client.admin.keyring`.
- Fichier épars de l'OSD (20 Go, alloué à l'usage réel) : `/var/lib/ceph-osd-demo/osd0.img`.
- Service qui réattache ce fichier en `/dev/loop0` au démarrage : `/etc/systemd/system/ceph-osd-demo-loop.service` (copie suivie dans le dépôt : `infra/ceph/ceph-osd-demo-loop.service`, pas encore déployé par Ansible).
- cephadm gère les daemons comme des conteneurs podman (`sudo podman ps`), pas docker (utilisé par Kolla et le portail) — deux runtimes de conteneurs coexistent sur ce serveur, sans conflit.
## Commandes utiles
```
# Santé du cluster
sudo /usr/sbin/cephadm shell -- ceph -s
# Lister les daemons
sudo /usr/sbin/cephadm ls
# RAM : à surveiller avant/après toute action Ceph (colonne "available",
# pas "free" — c'est elle qui compte vraiment)
free -h
```
## Pourquoi RAM et disque sont serrés
Le serveur a réellement **31 Go de RAM** et **230 Go en RAID 1** (pas 64 Go /
2×500 Go comme décrit dans le CLAUDE.md — à corriger si une vraie mise à
jour matérielle est faite). OpenStack (Kolla, MariaDB Galera, Nova/qemu) et
le portail Laravel tournent déjà sur cette même machine. Avant d'ajouter
quoi que ce soit à ce cluster (dashboard, supervision, un 2ᵉ OSD), vérifier
`free -h` : viser au moins 2 Go « disponibles » de marge.
## Nettoyer entièrement la démo (si besoin de récupérer la RAM/le disque)
```
ssh paillasse
sudo /usr/sbin/cephadm ls # récupérer le fsid
sudo /usr/sbin/cephadm rm-cluster --fsid <fsid> --force
sudo losetup -d /dev/loop0
sudo systemctl disable --now ceph-osd-demo-loop.service
sudo rm /etc/systemd/system/ceph-osd-demo-loop.service
sudo rm -rf /var/lib/ceph-osd-demo
sudo rm /etc/apt/sources.list.d/ceph.list /usr/share/keyrings/ceph.gpg
sudo apt-get update
```
## Écueils rencontrés (pour ne pas les redécouvrir)
- **`ceph orch daemon add osd <hôte>:<périphérique>` plante** sur un
périphérique loop (`IndexError`, bug de classification de `ceph-volume`,
reproduit sur Pacific et Reef). Contournement : ajouter `raw` en second
argument séparé : `ceph orch daemon add osd <hôte>:<périphérique> raw`
(la syntaxe `périphérique,method=raw` est refusée par la CLI).
- **cephadm veut du SSH root** même pour gérer l'hôte local — incompatible
avec `PermitRootLogin no`. Toujours bootstrapper avec `--ssh-user adam`.
- **Mélanger une image Ceph et un `cephadm` de version différente échoue**
(`Container release reef != cephadm release pacific`) : installer le
`cephadm` du dépôt officiel de la même version que l'image voulue, pas
forcer avec `--allow-mismatched-release`.