mirror of
https://github.com/ceph/ceph
synced 2024-12-22 03:22:00 +00:00
3f3913c9e7
Signed-off-by: Sage Weil <sage@newdream.net>
78 lines
2.4 KiB
ReStructuredText
78 lines
2.4 KiB
ReStructuredText
==============================
|
|
Resizing the monitor cluster
|
|
==============================
|
|
|
|
Adding a monitor
|
|
----------------
|
|
|
|
#. 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 # provides fsid and existing monitor addrs
|
|
$ ceph auth export mon. -o /tmp/monkey # mon. auth key
|
|
$ ceph-mon -i newname --mkfs --monmap /tmp/monmap --keyring /tmp/monkey
|
|
|
|
#. Start the new monitor and it will automatically join the cluster::
|
|
|
|
$ ceph-mon -i newname
|
|
|
|
#. 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 unhealthy or down cluster
|
|
----------------------------------------------------
|
|
|
|
The mon cluster may not be up because you have lost too many nodes to
|
|
form a quorum.
|
|
|
|
#) 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.
|
|
|
|
#) 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.
|