If all of the ceph monitor daemons in your cluster are in the same subnet,
manual administration of the ceph monitor daemons is not necessary.
``cephadm`` will automatically add up to five monitors to the subnet, as
-needed, as new hosts are added to the cluster.
+needed, as new hosts are added to the cluster.
+
+By default, cephadm will deploy 5 daemons on arbitrary hosts. See
+:ref:`orchestrator-cli-placement-spec` for details of specifying
+the placement of daemons.
Designating a Particular Subnet for Monitors
--------------------------------------------
Cephadm deploys new monitor daemons only on hosts that have IP addresses in
the designated subnet.
-Changing the number of monitors from the default
-------------------------------------------------
-
-If you want to adjust the default of 5 monitors, run this command:
+You can also specify two public networks by using a list of networks:
.. prompt:: bash #
- ceph orch apply mon *<number-of-monitors>*
+ ceph config set mon public_network *<mon-cidr-network1>,<mon-cidr-network2>*
-Deploying monitors only to specific hosts
------------------------------------------
-
-To deploy monitors on a specific set of hosts, run this command:
+ For example:
.. prompt:: bash #
- ceph orch apply mon *<host1,host2,host3,...>*
+ ceph config set mon public_network 10.1.2.0/24,192.168.0.1/24
- Be sure to include the first (bootstrap) host in this list.
-Using Host Labels
------------------
+Deploying Monitors on a Particular Network
+------------------------------------------
+
+You can explicitly specify the IP address or CIDR network for each monitor and
+control where each monitor is placed. To disable automated monitor deployment,
+run this command:
-You can control which hosts the monitors run on by making use of host labels.
-To set the ``mon`` label to the appropriate hosts, run this command:
-
.. prompt:: bash #
- ceph orch host label add *<hostname>* mon
+ ceph orch apply mon --unmanaged
- To view the current hosts and labels, run this command:
+ To deploy each additional monitor:
.. prompt:: bash #
- ceph orch host ls
+ ceph orch daemon add mon *<host1:ip-or-network1>
- For example:
+ For example, to deploy a second monitor on ``newhost1`` using an IP
+ address ``10.1.2.123`` and a third monitor on ``newhost2`` in
+ network ``10.1.2.0/24``, run the following commands:
.. prompt:: bash #
- ceph orch host label add host1 mon
- ceph orch host label add host2 mon
- ceph orch host label add host3 mon
- ceph orch host ls
+ ceph orch apply mon --unmanaged
+ ceph orch daemon add mon newhost1:10.1.2.123
+ ceph orch daemon add mon newhost2:10.1.2.0/24
+
+ Now, enable automatic placement of Daemons
+
+ .. prompt:: bash #
- .. code-block:: bash
+ ceph orch apply mon --placement="newhost1,newhost2,newhost3" --dry-run
- HOST ADDR LABELS STATUS
- host1 mon
- host2 mon
- host3 mon
- host4
- host5
+ See :ref:`orchestrator-cli-placement-spec` for details of specifying
+ the placement of daemons.
- Tell cephadm to deploy monitors based on the label by running this command:
+ Finally apply this new placement by dropping ``--dry-run``
.. prompt:: bash #
- ceph orch apply mon label:mon
+ ceph orch apply mon --placement="newhost1,newhost2,newhost3"
-See also :ref:`host labels <orchestrator-host-labels>`.
-Deploying Monitors on a Particular Network
-------------------------------------------
+Moving Monitors to a Different Network
+--------------------------------------
-You can explicitly specify the IP address or CIDR network for each monitor and
-control where each monitor is placed. To disable automated monitor deployment,
-run this command:
+To move Monitors to a new network, deploy new monitors on the new network and
+subsequently remove monitors from the old network. It is not advised to
+modify and inject the ``monmap`` manually.
+
+First, disable the automated placement of daemons:
.. prompt:: bash #
ceph orch apply mon --unmanaged
- To deploy each additional monitor:
+To deploy each additional monitor:
.. prompt:: bash #
- ceph orch daemon add mon *<host1:ip-or-network1> [<host1:ip-or-network-2>...]*
+ ceph orch daemon add mon *<newhost1:ip-or-network1>*
- For example, to deploy a second monitor on ``newhost1`` using an IP
- address ``10.1.2.123`` and a third monitor on ``newhost2`` in
- network ``10.1.2.0/24``, run the following commands:
+For example, to deploy a second monitor on ``newhost1`` using an IP
+address ``10.1.2.123`` and a third monitor on ``newhost2`` in
+network ``10.1.2.0/24``, run the following commands:
.. prompt:: bash #
ceph orch daemon add mon newhost1:10.1.2.123
ceph orch daemon add mon newhost2:10.1.2.0/24
- .. note::
- The **apply** command can be confusing. For this reason, we recommend using
- YAML specifications.
-
- Each ``ceph orch apply mon`` command supersedes the one before it.
- This means that you must use the proper comma-separated list-based
- syntax when you want to apply monitors to more than one host.
- If you do not use the proper syntax, you will clobber your work
- as you go.
-
- For example:
-
- .. prompt:: bash #
-
- ceph orch apply mon host1
- ceph orch apply mon host2
- ceph orch apply mon host3
-
- This results in only one host having a monitor applied to it: host 3.
-
- (The first command creates a monitor on host1. Then the second command
- clobbers the monitor on host1 and creates a monitor on host2. Then the
- third command clobbers the monitor on host2 and creates a monitor on
- host3. In this scenario, at this point, there is a monitor ONLY on
- host3.)
-
- To make certain that a monitor is applied to each of these three hosts,
- run a command like this:
-
- .. prompt:: bash #
-
- ceph orch apply mon "host1,host2,host3"
-
- There is another way to apply monitors to multiple hosts: a ``yaml`` file
- can be used. Instead of using the "ceph orch apply mon" commands, run a
- command of this form:
-
- .. prompt:: bash #
-
- ceph orch apply -i file.yaml
-
- Here is a sample **file.yaml** file::
-
- service_type: mon
- placement:
- hosts:
- - host1
- - host2
- - host3
+ Subsequently remove monitors from the old network:
+
+ .. prompt:: bash #
+
+ ceph orch daemon rm *mon.<oldhost1>*
+
+ Update the ``public_network``:
+
+ .. prompt:: bash #
+
+ ceph config set mon public_network *<mon-cidr-network>*
+
+ For example:
+
+ .. prompt:: bash #
+
+ ceph config set mon public_network 10.1.2.0/24
+
+ Now, enable automatic placement of Daemons
+
+ .. prompt:: bash #
+
+ ceph orch apply mon --placement="newhost1,newhost2,newhost3" --dry-run
+
+ See :ref:`orchestrator-cli-placement-spec` for details of specifying
+ the placement of daemons.
+
+ Finally apply this new placement by dropping ``--dry-run``
+
+ .. prompt:: bash #
+
+ ceph orch apply mon --placement="newhost1,newhost2,newhost3"