Monitor quorum is the control plane that lets a Ceph cluster agree on maps, authentication, and daemon membership. Adding another monitor with cephadm improves tolerance for host maintenance or failure when the new daemon is placed on a managed host in the monitor network.
Cephadm manages monitors through the mon service specification. A monitor placement update must describe the full intended monitor set, because each ceph orch apply mon request replaces the previous placement request instead of appending one host to it.
Start from an administration host that already has Ceph admin credentials and an enrolled host such as ceph-node2 ready for monitor placement. Keep monitor daemons on the public monitor network, preview the placement before applying it, and verify both the cephadm daemon table and monitor quorum before treating the cluster as ready for maintenance.
Steps to add a Ceph monitor with cephadm:
- Check cluster health before changing monitor placement.
$ ceph -s cluster: id: 11111111-2222-3333-4444-555555555555 health: HEALTH_OK services: mon: 2 daemons, quorum ceph-admin,ceph-node1 (age 2h) mgr: ceph-admin.abc123(active, since 2h) osd: 6 osds: 6 up, 6 in data: pools: 4 pools, 256 pgs objects: 3.42M objects, 8.1 TiB usage: 24 TiB used, 76 TiB / 100 TiB avail pgs: 256 active+cleanStart from a named health state so the monitor change is not hiding an unrelated OSD, placement group, or manager issue.
Related: How to check Ceph cluster health - Confirm that the target host is already enrolled in cephadm.
$ ceph orch host ls HOST ADDR LABELS STATUS ceph-admin 192.0.2.10 _admin ceph-node1 192.0.2.11 ceph-node2 192.0.2.12
Add the host first when the target hostname is missing. Cephadm monitor placement can only use hosts already known to the orchestrator.
Related: How to add a host to a Ceph cluster with cephadm - Check the monitor public network.
$ ceph config get mon public_network 192.0.2.0/24
Cephadm deploys new monitor daemons only on hosts with addresses in the monitor public network. The sample host ceph-node2 uses 192.0.2.12, so it matches 192.0.2.0/24.
- Set the monitor public network only when the current value does not include the target host.
$ ceph config set mon public_network 192.0.2.0/24
Changing public_network affects where future monitors may run. Use the real storage public network, not the documentation placeholder range shown here.
- Export the current mon service spec before changing placement.
$ ceph orch ls --service_type mon --export > mon-placement-before.yaml
The exported YAML gives a review and rollback reference if the new placement needs to be adjusted.
Related: How to manage Ceph services with cephadm - Preview the complete monitor placement.
$ ceph orch apply mon --placement="ceph-admin,ceph-node1,ceph-node2" --dry-run
The placement string includes the existing monitor hosts and the new monitor host. Do not preview only ceph-node2 unless the intended final state is a single monitor.
- Apply the monitor placement without the dry-run flag.
$ ceph orch apply mon --placement="ceph-admin,ceph-node1,ceph-node2" Scheduled mon update...
A ceph orch apply mon command supersedes the previous mon placement. Include every monitor host that should remain in service.
- Wait for the new monitor daemon to report running.
$ ceph orch ps --daemon_type mon --refresh NAME HOST PORTS STATUS REFRESHED AGE VERSION mon.ceph-admin ceph-admin *:6789,3300 running 4s ago 14d 20.2.2 mon.ceph-node1 ceph-node1 *:6789,3300 running 4s ago 14d 20.2.2 mon.ceph-node2 ceph-node2 *:6789,3300 running 4s ago 1m 20.2.2
--refresh asks cephadm to update cached daemon state before printing the table. Wait until the new mon.ceph-node2 row shows running before checking quorum.
- Verify that the new monitor joined quorum.
$ ceph quorum_status --format json-pretty { "election_epoch": 42, "quorum": [ 0, 1, 2 ], "quorum_names": [ "ceph-admin", "ceph-node1", "ceph-node2" ], "quorum_leader_name": "ceph-admin", "monmap": { "epoch": 18, "mons": [ ##### snipped ##### ] } }The quorum_names list should include the new monitor hostname. If it does not, inspect the cephadm event stream and the monitor container on that host before changing placement again.
- Confirm final cluster health after quorum settles.
$ ceph -s cluster: id: 11111111-2222-3333-4444-555555555555 health: HEALTH_OK services: mon: 3 daemons, quorum ceph-admin,ceph-node1,ceph-node2 (age 1m) mgr: ceph-admin.abc123(active, since 2h) osd: 6 osds: 6 up, 6 in data: pools: 4 pools, 256 pgs objects: 3.42M objects, 8.1 TiB usage: 24 TiB used, 76 TiB / 100 TiB avail pgs: 256 active+cleanIf health changes to HEALTH_WARN or HEALTH_ERR, keep the monitor placement open until the named health checks explain the change.
Mohd Shakir Zakaria is a cloud architect with deep roots in software development and open-source advocacy. Certified in AWS, Red Hat, VMware, ITIL, and Linux, he specializes in designing and managing robust cloud and on-premises infrastructures.