Skip to main content
RunBook Academy

CephX · Manager DaemonsManager Daemons

Manager failover — what happens and what to verify

Intermediate⏱ ~14 minceph

What you'll learn

  • Describe the failover sequence and its timing
  • Identify what state is lost and what is preserved
  • Trigger failover deliberately for testing
  • Verify failover works as part of routine practice

Prerequisites

None — start here.

Verified against Ceph Tentacle 20.2.x · Ceph Squid 19.2.x (supported previous) · cephadm matches the verified Ceph release · podman 4.x · csi-rbd and csi-cephfs current · RBD / CephFS / RGW current (matches Ceph release) · Linux kernel 5.15+ (5.10 minimum) · Ubuntu 24.04 LTS (Ceph host baseline) · Debian 12 (Bookworm) (Ceph host baseline) · Rocky Linux / RHEL / AlmaLinux 9.x (Ceph host baseline) · Proxmox VE 9.x (cross-course integration) · Kubernetes 1.31+ (cross-course integration) · 2026-08-18

Not yet marked complete on this device.

Why this matters in production

Manager failover is one of the few Ceph behaviours that is genuinely simple, and testing it takes one command. Clusters that have never tested it discover during an incident that the standby was never actually running.

The sequence

1. Active manager stops or becomes unresponsive
2. Monitors notice and select a standby
3. The chosen standby becomes active
4. It loads its modules: dashboard, prometheus, orchestrator, ...
5. Statistics begin collecting from scratch

Elapsed time is typically a few seconds to select, plus however long module loading takes — the dashboard and orchestrator take longest.

ceph mgr stat
ceph mgr dump | jq '{active: .active_name, standbys: [.standbys[].name]}'
ceph mgr fail                 # fail the active, promoting a standby

What is lost

  • In-flight dashboard sessions. Users reconnect and log in again.
  • Accumulated statistics. Rate calculations restart, so some Prometheus counters reset and rate graphs show a brief artefact.
  • In-progress orchestrator work. Reconciliation resumes on the new active, so scheduled work is retried rather than lost.

What is preserved

  • Everything durable. Module configuration lives in the monitor config store, not in the manager.
  • The cluster map, obviously — managers hold no authority over it.
  • Orchestrator service specifications.
  • Dashboard users and roles.

Placement for failover

Two managers on the same host provide no failover for host failure. Two managers in the same rack provide none for rack failure.

ceph orch ps --daemon-type mgr
ceph orch apply mgr --placement="ceph-01 ceph-05"

Choose hosts in different failure domains, and verify placement after any cluster change — managers drift for the same reasons monitors do.

Verification checklist

  • A standby exists and is running: ceph mgr dump.
  • The two managers are on different hosts and different racks.
  • ceph mgr fail promotes cleanly and ceph -s recovers within a minute.
  • The dashboard URL still resolves after failover.
  • Prometheus resumes scraping without manual intervention.

Quiz

Knowledge check · 4 questions

  1. Q1. What is lost when a Ceph manager fails over to a standby?

  2. Q2. A Prometheus alert based on a raw difference in a manager-exported counter can fire spuriously after a manager failover.

  3. Q3. A team discovers during an incident that their cluster has no manager standby, despite the spec declaring two. Design the verification that would have caught it.

    Cluster deployed 18 months ago with ceph orch apply mgr --placement="2". One manager host was decommissioned eight months ago and never replaced. ceph orch ls shows the mgr service with 1/2 daemons. Nobody looked. During a manager failure the cluster ran blind for 40 minutes while a new manager was deployed.

  4. Q4. Describe a manager failover test and what each step verifies.

Passing score: 75%. Answers are checked in this browser.

Production discipline

Run ceph mgr fail as a scheduled test — quarterly is enough — and verify status, dashboard, and scraping recover afterwards, because the failure this catches is a standby that is declared but not running. Alert on daemons running below their declared count and specifically on an empty standby list. Place the two managers in different failure domains and re-verify after cluster changes. And write alerting rules with rate() rather than raw differences, so a failover does not fire them.

Cross-course references

  • Ceph: Part X lesson on the manager role for what failover affects.
  • Ceph: Part LXXVII (Alerting) for writing rules that tolerate resets.
  • Ceph: Part LXXVIII (Monitoring the Monitoring Path) for the wider problem.