ceph/doc/ops/manage/grow/mon.rst
Sage Weil 2710bd8520 mon: update man page to document --mkfs stuff
Signed-off-by: Sage Weil <sage@newdream.net>
2011-12-19 14:02:10 -08:00

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.