mirror of
https://github.com/ceph/ceph
synced 2024-12-21 10:54:42 +00:00
2710bd8520
Signed-off-by: Sage Weil <sage@newdream.net>
87 lines
3.0 KiB
ReStructuredText
87 lines
3.0 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. This can come from a monmap (``--monmap
|
|
</path/to/monmap>``) for explicitly via ``--fsid <fsid>``.
|
|
- one or more existing monitors to join. This can come via ``-m
|
|
<host1,host2,...>``, a monmap (``--monmap </some/path>``), or
|
|
``[mon.foo]`` sections with ``mon addr`` fields in *ceph.conf*.
|
|
- the monitor authentication key ``mon.``. This should be passed
|
|
in explicitly via a keyring (``--keyring </some/path>``).
|
|
|
|
Any combination of the above arguments that provide the four needed
|
|
pieces of information will work. The simplest way to do this is
|
|
usually::
|
|
|
|
$ 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.
|
|
The daemon needs to know which address to bind to, either via
|
|
``--public-addr <ip:port>`` or by setting ``mon addr`` in the
|
|
appropriate section of *ceph.conf*. For example::
|
|
|
|
$ ceph-mon -i newname --public-addr <ip:port>
|
|
|
|
#. 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.
|