mirror of
https://github.com/ceph/ceph
synced 2024-12-27 14:03:25 +00:00
251f667ef8
* refs/pull/25009/head: librbd: stringify locker name with get_legacy_str() osdc/Objecter: fix list_watchers addr rendering to match legacy test/crimson: disable unittest_seastar_messenger test msg/msg_types: encode entity_addr_t TYPE_ANY as TYPE_LEGACY for pre-nautilus client: make blacklist detection handle TYPE_ANY entries mon/OSDMonitor: maintain compat output for 'blacklist ls' client: maintain compat for {inst,addr}_str in status dump qa/tasks/ceph_manager: compare osd flush seq #'s as ints qa/suites/fs: make use of simple.yaml where appropriate qa/msgr: move msgr factet into generic re-usable dir crimson: fix monmap build for seastar doc/start/ceph.conf: trim the sample ceph.conf file doc/rados/operations: only describe --public-{addr,network} method for adding mons PendingReleaseNotes: deprecate 'mon addr' doc: fix some 'mon addr' references doc/rados/configuration: fix some 'mon addr' references doc/rados/configuration/network-config-ref: revise network docs somewhat doc/rados/configuration/network-config-ref: remove totally obsolete section qa/suites/rados: replace mon_seesaw.py task with a small bash script qa/suites/fs/upgrade: don't bind to v2 addrs qa/tasks/mon_thrash: avoid 'mon addr' in mon section mon/MonClient: disable ms_bind_msgr2 if NAUTILUS feature not set osd/OSDMap: maintain compat addr fields msg/msg_types: add get_legacy_str() mds/MDSMap.h: maintain compat addr field mon/MgrMap: maintain compat active_addr field mon/MonClient: reconnect to mon if it's addrvec appears to have changed qa/tasks/ceph.conf.template: increase mon_mgr_mkfs_grace msg/async/ProtocolV2: fill in IP for all peer_addrs msg/async: print all addrs on debug lines mon/MonMap: no noname- mon name prefix when for_mkfs ceph-monstore-tool: print initial monmap msg/async/ProtocolV2: advertise ourselves as a v2 addr when using v2 protocol msg/async: assert existing protocol matches current protocol msg/async: add missing modelines mon/MonMap: add missing modeline vstart.sh: put mon addrs in mon_host, not 'mon addr' msg/async: better debug around conn map lookups and updates mon/MonClient: dump initial monmap at debug level 10 qa/standalone/osd/osd-fast-mark-down: use v1 addr w/ simplemessenger qa/tasks/ceph: set initial monmap features with using addrvec addrs monmaptool: add --enable-all-features option qa/tasks/ceph: only use monmaptool --addv if addr has [,:v] qa/tasks/ceph_manager: make get_mon_status use mon addr qa/tasks/ceph: keep mon addrs in ctx namespace mon/OSDMonitor: log all osd addrs on boot msg/simple: behave when v2 and v1 addrs are present at target mon/MonClient: warn if global_id changes msg/Connection: add warning/note on get_peer_global_id mds/MDSDaemon: clean up handle_mds_map debug output a bit qa/suites/rados/upgrade: debug mds mds/MDSRank: improve is_stale_message to handle addrvecs msg/async: make loopback detect when sending to one of our many addrs qa/suites/rados/upgrade: no aggressive pg num changes mon/OSDMonitor: require nautilus mons for require_osd_release=nautilus mon/OSDMonitor: require mimic mons for require_osd_release=mimic qa/suites/rados/thrash-old-clients: use legacy addr syntax in ceph.conf msg/async: preserve peer features when replacing a connection qa/tasks/ceph.py: move methods from teuthology.git into ceph.py directly; support mon bind * options mon/MonMap: adjust build_initial behavior for mkfs vs probe mon/MonMap: improve ambiguous addr behavior qa/suites/rados/upgrade: spread mons a bit qa/rados/thrash-old-clients: keep mons on separate hosts qa/standalone/mon/misc.sh: tweak test to be more robust qa/tasks/mon_seesaw: expect v1/v2 prefix in addr osd/OSDMap: fix is_blacklisted() check to assume type ANY mon/OSDMonitor: use ANY addr type for blacklisting mon/msg_types: TYPE_V1ORV2 -> TYPE_ANY qa/workunits/cephtool: fix blacklist test qa/suites/upgrade: install old version with only v1 addrs common/options: by default, bind to both msgr v1 and v2 addresses vstart.sh: add --msgr1, --msgr2, --msgr21 options msg/async/ProtocolV2: be flexible with server identity check msg/msg_types: fix entity_addrvec_t::parse() with null end arg qa/suites/rados/basic/msgr: no msgr2 addrs in initial monmaps qa/tasks/ceph: add 'mon_bind_addrvec' and 'mon_bind_msgr2' options monmaptool: add --addv argument to pass in addrvec directly qa/suites/rados/basic/msgr: do not use msgr2 with simplemessenger qa/suites/rados/basic/msgr: async is not experimental messages/MOSDBoot: fix compat with pre-nautilus mon/MonMap: allow v1 or v2 to be explicitly specified along with part msg/msg_types: allow parsing of IPs without assuming v1 vs v2 msg/msg_types: default parse to v2 addrs msg: standarize on v1: and v2: prefixes for *all* entity_addr_t's vstart.sh: use msgr2 by default mon/MonMap: remove get_addr() methods ceph-mon: adjust startup/bind/join sequence to use addrs mon: use MonMap::get_addrs() (instead of get_addr()) mon/MonClient: change pending_cons to addrvec-based map mon/MonMap: fix set_addr() caller, kill wrapper mon/MonMap: remove addr-based add() monmaptool: fix --add to do either legacy or msgr2+legacy monmaptool: clean up iterator use a bit mon/MonMap: handle ambiguous mon addrs by trying both legacy and msgr mon/MonMap: take addrvec for set_initial_members mon/MonMap: use addrvecs for test instances mon: pass addrvec via MMonJoin mon/MonmapMonitor: fix 'mon add' to populate addrvec mon/MonMap: addr -> addrvec msg/async/ProtocolV2: only update socket_addr if we learned our addr osd: go active even if mon only accepted our v1 addr test/msgr: add test for msgr2 protocol msg/async/ProtocolV2: share socket_addr and all addrs during handshake msg/async: print socket_addr for the connection msg/async: msgr2 protocol placeholder msg/async: move ProtocolV1 class to its own source file msg/async: keep listen addr in ServerSocket, pass to new connections msg/async/AsyncMessenger: fix set_addr_unknowns Reviewed-by: Josh Durgin <jdurgin@redhat.com>
259 lines
8.4 KiB
ReStructuredText
259 lines
8.4 KiB
ReStructuredText
|
|
.. _ceph-conf-common-settings:
|
|
|
|
Common Settings
|
|
===============
|
|
|
|
The `Hardware Recommendations`_ section provides some hardware guidelines for
|
|
configuring a Ceph Storage Cluster. It is possible for a single :term:`Ceph
|
|
Node` to run multiple daemons. For example, a single node with multiple drives
|
|
may run one ``ceph-osd`` for each drive. Ideally, you will have a node for a
|
|
particular type of process. For example, some nodes may run ``ceph-osd``
|
|
daemons, other nodes may run ``ceph-mds`` daemons, and still other nodes may
|
|
run ``ceph-mon`` daemons.
|
|
|
|
Each node has a name identified by the ``host`` setting. Monitors also specify
|
|
a network address and port (i.e., domain name or IP address) identified by the
|
|
``addr`` setting. A basic configuration file will typically specify only
|
|
minimal settings for each instance of monitor daemons. For example:
|
|
|
|
.. code-block:: ini
|
|
|
|
[global]
|
|
mon_initial_members = ceph1
|
|
mon_host = 10.0.0.1
|
|
|
|
|
|
.. important:: The ``host`` setting is the short name of the node (i.e., not
|
|
an fqdn). It is **NOT** an IP address either. Enter ``hostname -s`` on
|
|
the command line to retrieve the name of the node. Do not use ``host``
|
|
settings for anything other than initial monitors unless you are deploying
|
|
Ceph manually. You **MUST NOT** specify ``host`` under individual daemons
|
|
when using deployment tools like ``chef`` or ``ceph-deploy``, as those tools
|
|
will enter the appropriate values for you in the cluster map.
|
|
|
|
|
|
.. _ceph-network-config:
|
|
|
|
Networks
|
|
========
|
|
|
|
See the `Network Configuration Reference`_ for a detailed discussion about
|
|
configuring a network for use with Ceph.
|
|
|
|
|
|
Monitors
|
|
========
|
|
|
|
Ceph production clusters typically deploy with a minimum 3 :term:`Ceph Monitor`
|
|
daemons to ensure high availability should a monitor instance crash. At least
|
|
three (3) monitors ensures that the Paxos algorithm can determine which version
|
|
of the :term:`Ceph Cluster Map` is the most recent from a majority of Ceph
|
|
Monitors in the quorum.
|
|
|
|
.. note:: You may deploy Ceph with a single monitor, but if the instance fails,
|
|
the lack of other monitors may interrupt data service availability.
|
|
|
|
Ceph Monitors normally listen on port ``3300`` for the new v2 protocol, and ``6789`` for the old v1 protocol.
|
|
|
|
By default, Ceph expects that you will store a monitor's data under the
|
|
following path::
|
|
|
|
/var/lib/ceph/mon/$cluster-$id
|
|
|
|
You or a deployment tool (e.g., ``ceph-deploy``) must create the corresponding
|
|
directory. With metavariables fully expressed and a cluster named "ceph", the
|
|
foregoing directory would evaluate to::
|
|
|
|
/var/lib/ceph/mon/ceph-a
|
|
|
|
For additional details, see the `Monitor Config Reference`_.
|
|
|
|
.. _Monitor Config Reference: ../mon-config-ref
|
|
|
|
|
|
.. _ceph-osd-config:
|
|
|
|
|
|
Authentication
|
|
==============
|
|
|
|
.. versionadded:: Bobtail 0.56
|
|
|
|
For Bobtail (v 0.56) and beyond, you should expressly enable or disable
|
|
authentication in the ``[global]`` section of your Ceph configuration file. ::
|
|
|
|
auth cluster required = cephx
|
|
auth service required = cephx
|
|
auth client required = cephx
|
|
|
|
Additionally, you should enable message signing. See `Cephx Config Reference`_ for details.
|
|
|
|
.. important:: When upgrading, we recommend expressly disabling authentication
|
|
first, then perform the upgrade. Once the upgrade is complete, re-enable
|
|
authentication.
|
|
|
|
.. _Cephx Config Reference: ../auth-config-ref
|
|
|
|
|
|
.. _ceph-monitor-config:
|
|
|
|
|
|
OSDs
|
|
====
|
|
|
|
Ceph production clusters typically deploy :term:`Ceph OSD Daemons` where one node
|
|
has one OSD daemon running a filestore on one storage drive. A typical
|
|
deployment specifies a journal size. For example:
|
|
|
|
.. code-block:: ini
|
|
|
|
[osd]
|
|
osd journal size = 10000
|
|
|
|
[osd.0]
|
|
host = {hostname} #manual deployments only.
|
|
|
|
|
|
By default, Ceph expects that you will store a Ceph OSD Daemon's data with the
|
|
following path::
|
|
|
|
/var/lib/ceph/osd/$cluster-$id
|
|
|
|
You or a deployment tool (e.g., ``ceph-deploy``) must create the corresponding
|
|
directory. With metavariables fully expressed and a cluster named "ceph", the
|
|
foregoing directory would evaluate to::
|
|
|
|
/var/lib/ceph/osd/ceph-0
|
|
|
|
You may override this path using the ``osd data`` setting. We don't recommend
|
|
changing the default location. Create the default directory on your OSD host.
|
|
|
|
::
|
|
|
|
ssh {osd-host}
|
|
sudo mkdir /var/lib/ceph/osd/ceph-{osd-number}
|
|
|
|
The ``osd data`` path ideally leads to a mount point with a hard disk that is
|
|
separate from the hard disk storing and running the operating system and
|
|
daemons. If the OSD is for a disk other than the OS disk, prepare it for
|
|
use with Ceph, and mount it to the directory you just created::
|
|
|
|
ssh {new-osd-host}
|
|
sudo mkfs -t {fstype} /dev/{disk}
|
|
sudo mount -o user_xattr /dev/{hdd} /var/lib/ceph/osd/ceph-{osd-number}
|
|
|
|
We recommend using the ``xfs`` file system when running
|
|
:command:`mkfs`. (``btrfs`` and ``ext4`` are not recommended and no
|
|
longer tested.)
|
|
|
|
See the `OSD Config Reference`_ for additional configuration details.
|
|
|
|
|
|
Heartbeats
|
|
==========
|
|
|
|
During runtime operations, Ceph OSD Daemons check up on other Ceph OSD Daemons
|
|
and report their findings to the Ceph Monitor. You do not have to provide any
|
|
settings. However, if you have network latency issues, you may wish to modify
|
|
the settings.
|
|
|
|
See `Configuring Monitor/OSD Interaction`_ for additional details.
|
|
|
|
|
|
.. _ceph-logging-and-debugging:
|
|
|
|
Logs / Debugging
|
|
================
|
|
|
|
Sometimes you may encounter issues with Ceph that require
|
|
modifying logging output and using Ceph's debugging. See `Debugging and
|
|
Logging`_ for details on log rotation.
|
|
|
|
.. _Debugging and Logging: ../../troubleshooting/log-and-debug
|
|
|
|
|
|
Example ceph.conf
|
|
=================
|
|
|
|
.. literalinclude:: demo-ceph.conf
|
|
:language: ini
|
|
|
|
.. _ceph-runtime-config:
|
|
|
|
|
|
|
|
Running Multiple Clusters
|
|
=========================
|
|
|
|
With Ceph, you can run multiple Ceph Storage Clusters on the same hardware.
|
|
Running multiple clusters provides a higher level of isolation compared to
|
|
using different pools on the same cluster with different CRUSH rules. A
|
|
separate cluster will have separate monitor, OSD and metadata server processes.
|
|
When running Ceph with default settings, the default cluster name is ``ceph``,
|
|
which means you would save your Ceph configuration file with the file name
|
|
``ceph.conf`` in the ``/etc/ceph`` default directory.
|
|
|
|
See `Create a Cluster`_ for details.
|
|
|
|
.. _Create a Cluster: ../../deployment/ceph-deploy-new
|
|
|
|
When you run multiple clusters, you must name your cluster and save the Ceph
|
|
configuration file with the name of the cluster. For example, a cluster named
|
|
``openstack`` will have a Ceph configuration file with the file name
|
|
``openstack.conf`` in the ``/etc/ceph`` default directory.
|
|
|
|
.. important:: Cluster names must consist of letters a-z and digits 0-9 only.
|
|
|
|
Separate clusters imply separate data disks and journals, which are not shared
|
|
between clusters. Referring to `Metavariables`_, the ``$cluster`` metavariable
|
|
evaluates to the cluster name (i.e., ``openstack`` in the foregoing example).
|
|
Various settings use the ``$cluster`` metavariable, including:
|
|
|
|
.. _Metavariables: ../ceph-conf#Metavariables
|
|
|
|
- ``keyring``
|
|
- ``admin socket``
|
|
- ``log file``
|
|
- ``pid file``
|
|
- ``mon data``
|
|
- ``mon cluster log file``
|
|
- ``osd data``
|
|
- ``osd journal``
|
|
- ``mds data``
|
|
- ``rgw data``
|
|
|
|
See `General Settings`_, `OSD Settings`_, `Monitor Settings`_, `MDS Settings`_,
|
|
`RGW Settings`_ and `Log Settings`_ for relevant path defaults that use the
|
|
``$cluster`` metavariable.
|
|
|
|
.. _General Settings: ../general-config-ref
|
|
.. _OSD Settings: ../osd-config-ref
|
|
.. _Monitor Settings: ../mon-config-ref
|
|
.. _MDS Settings: ../../../cephfs/mds-config-ref
|
|
.. _RGW Settings: ../../../radosgw/config-ref/
|
|
.. _Log Settings: ../../troubleshooting/log-and-debug
|
|
|
|
|
|
When creating default directories or files, you should use the cluster
|
|
name at the appropriate places in the path. For example::
|
|
|
|
sudo mkdir /var/lib/ceph/osd/openstack-0
|
|
sudo mkdir /var/lib/ceph/mon/openstack-a
|
|
|
|
.. important:: When running monitors on the same host, you should use
|
|
different ports. By default, monitors use port 6789. If you already
|
|
have monitors using port 6789, use a different port for your other cluster(s).
|
|
|
|
To invoke a cluster other than the default ``ceph`` cluster, use the
|
|
``-c {filename}.conf`` option with the ``ceph`` command. For example::
|
|
|
|
ceph -c {cluster-name}.conf health
|
|
ceph -c openstack.conf health
|
|
|
|
|
|
.. _Hardware Recommendations: ../../../start/hardware-recommendations
|
|
.. _Network Configuration Reference: ../network-config-ref
|
|
.. _OSD Config Reference: ../osd-config-ref
|
|
.. _Configuring Monitor/OSD Interaction: ../mon-osd-interaction
|