mirror of
https://github.com/ceph/ceph
synced 2024-12-12 06:28:31 +00:00
266aa66aa9
doc: Fixed a number of typos in documentation Reviewed-by: Kefu Chai <kchai@redhat.com>
121 lines
4.3 KiB
ReStructuredText
121 lines
4.3 KiB
ReStructuredText
Cephadm Concepts
|
|
================
|
|
|
|
.. _cephadm-fqdn:
|
|
|
|
Fully qualified domain names vs bare host names
|
|
-----------------------------------------------
|
|
|
|
cephadm has very minimal requirements when it comes to resolving host
|
|
names etc. When cephadm initiates an ssh connection to a remote host,
|
|
the host name can be resolved in four different ways:
|
|
|
|
- a custom ssh config resolving the name to an IP
|
|
- via an externally maintained ``/etc/hosts``
|
|
- via explicitly providing an IP address to cephadm: ``ceph orch host add <hostname> <IP>``
|
|
- automatic name resolution via DNS.
|
|
|
|
Ceph itself uses the command ``hostname`` to determine the name of the
|
|
current host.
|
|
|
|
.. note::
|
|
|
|
cephadm demands that the name of the host given via ``ceph orch host add``
|
|
equals the output of ``hostname`` on remote hosts.
|
|
|
|
Otherwise cephadm can't be sure, the host names returned by
|
|
``ceph * metadata`` match the hosts known to cephadm. This might result
|
|
in a :ref:`cephadm-stray-host` warning.
|
|
|
|
When configuring new hosts, there are two **valid** ways to set the
|
|
``hostname`` of a host:
|
|
|
|
1. Using the bare host name. In this case:
|
|
|
|
- ``hostname`` returns the bare host name.
|
|
- ``hostname -f`` returns the FQDN.
|
|
|
|
2. Using the fully qualified domain name as the host name. In this case:
|
|
|
|
- ``hostname`` returns the FQDN
|
|
- ``hostname -s`` return the bare host name
|
|
|
|
Note that ``man hostname`` recommends ``hostname`` to return the bare
|
|
host name:
|
|
|
|
The FQDN (Fully Qualified Domain Name) of the system is the
|
|
name that the resolver(3) returns for the host name, such as,
|
|
ursula.example.com. It is usually the hostname followed by the DNS
|
|
domain name (the part after the first dot). You can check the FQDN
|
|
using ``hostname --fqdn`` or the domain name using ``dnsdomainname``.
|
|
|
|
.. code-block:: none
|
|
|
|
You cannot change the FQDN with hostname or dnsdomainname.
|
|
|
|
The recommended method of setting the FQDN is to make the hostname
|
|
be an alias for the fully qualified name using /etc/hosts, DNS, or
|
|
NIS. For example, if the hostname was "ursula", one might have
|
|
a line in /etc/hosts which reads
|
|
|
|
127.0.1.1 ursula.example.com ursula
|
|
|
|
Which means, ``man hostname`` recommends ``hostname`` to return the bare
|
|
host name. This in turn means that Ceph will return the bare host names
|
|
when executing ``ceph * metadata``. This in turn means cephadm also
|
|
requires the bare host name when adding a host to the cluster:
|
|
``ceph orch host add <bare-name>``.
|
|
|
|
..
|
|
TODO: This chapter needs to provide way for users to configure
|
|
Grafana in the dashboard, as this is right no very hard to do.
|
|
|
|
Cephadm Scheduler
|
|
-----------------
|
|
|
|
Cephadm uses a declarative state to define the layout of the cluster. This
|
|
state consists of a list of service specifications containing placement
|
|
specifications (See :ref:`orchestrator-cli-service-spec` ).
|
|
|
|
Cephadm constantly compares list of actually running daemons in the cluster
|
|
with the desired service specifications and will either add or remove new
|
|
daemons.
|
|
|
|
First, cephadm will select a list of candidate hosts. It first looks for
|
|
explicit host names and will select those. In case there are no explicit hosts
|
|
defined, cephadm looks for a label specification. If there is no label defined
|
|
in the specification, cephadm will select hosts based on a host pattern. If
|
|
there is no pattern defined, cepham will finally select all known hosts as
|
|
candidates.
|
|
|
|
Then, cephadm will consider existing daemons of this services and will try to
|
|
avoid moving any daemons.
|
|
|
|
Cephadm supports the deployment of a specific amount of services. Let's
|
|
consider a service specification like so:
|
|
|
|
.. code-block:: yaml
|
|
|
|
service_type: mds
|
|
service_name: myfs
|
|
placement:
|
|
count: 3
|
|
label: myfs
|
|
|
|
This instructs cephadm to deploy three daemons on hosts labeled with
|
|
``myfs`` across the cluster.
|
|
|
|
Then, in case there are less than three daemons deployed on the candidate
|
|
hosts, cephadm will then randomly choose hosts for deploying new daemons.
|
|
|
|
In case there are more than three daemons deployed, cephadm will remove
|
|
existing daemons.
|
|
|
|
Finally, cephadm will remove daemons on hosts that are outside of the list of
|
|
candidate hosts.
|
|
|
|
However, there is a special cases that cephadm needs to consider.
|
|
|
|
In case the are fewer hosts selected by the placement specification than
|
|
demanded by ``count``, cephadm will only deploy on selected hosts.
|