ceph/doc/ops/manage/grow/mon.rst
Sage Weil 7178f1caa8 doc: document monitor cluster expansion/contraction
Pretty sure my rst syntax is wrong.

Signed-off-by: Sage Weil <sage@newdream.net>
2011-12-05 14:07:44 -08:00

78 lines
2.3 KiB
ReStructuredText

==============================
Resizing the monitor cluster
==============================
Adding a monitor
----------------
1) Initialize the new monitor's data directory with the ``ceph-mon
--mkfs`` command. You need to provide the new monitor with three
pieces of information:
- the cluster fsid
- one or more existing monitors to join
- the monitor authentication key ``mon.``
The simplest way to do this is probably::
$ ceph mon getmap -o /tmp/monmap
$ ceph auth export mon. -o /tmp/monkey
$ ceph-mon -i newname --mkfs --monmap /tmp/foo --keyring /tmp/monkey
2) Start the new monitor and it will automatically join the cluster::
$ ceph-mon -i newname
3) If you would like other nodes to be able to use this monitor during
their initial startup, you'll need to adjust ``ceph.conf`` to add a
section and ``mon addr`` for the new monitor, or add it to the
existing ``mon host`` list.
Removing a monitor from a healthy cluster
-----------------------------------------
If the cluster is healthy, you can do::
$ ceph mon remove $id
For example, if your cluster includes ``mon.a``, ``mon.b``, and ``mon.c``, then you can remove ``mon.c`` with::
$ ceph mon remove c
Removing a monitor from an unhealth/down cluster
------------------------------------------------
The mon cluster may not be up because you have lost too many nodes to
form a quorum.
1) On a surviving monitor node, find the most recent monmap::
$ ls $mon_data/monmap
1 2 accepted_pn last_committed latest
in this case it is 2.
2) Copy to a temporary location and modify the monmap to remove the
node(s) you don't want. Let's say the map has ``mon.a``, ``mon.b``,
and ``mon.c``, but only ``mon.a`` is surviving::
$ cp $mon_data/monmap/2 /tmp/foo
$ monmaptool /tmp/foo --rm b
$ monmaptool /tmp/foo --rm c
3) Make sure ceph-mon isn't running::
$ service ceph stop mon
4) Inject the modified map on any surviving nodes. For example, for
``mon.a``::
$ ceph-mon -i a --inject-monmap /tmp/foo # for each surviving monitor
5) Start the surviving monitor(s)::
$ service ceph start mon # on each node with a surviving monitor
6) Remove the old monitors from ``ceph.conf`` so that nobody tries to
connect to the old instances.