注意
本文档适用于 Ceph 的开发版本。
常用设置
《硬件建议》一节提供了一些配置 Ceph 存储集群的硬件指南。单个Ceph 节点可以运行多个守护进程。例如,具有多个驱动器的单个节点通常为每个驱动器运行一个 ceph-osd。理想情况下,每个节点将分配给特定类型的进程。例如,某些节点可能运行 ceph-osd 守护进程,其他节点可能运行 ceph-mds 守护进程,还有一些节点可能运行 ceph-mon 守护进程。
每个节点都有一个名称。节点名称可以在其 host 设置中找到。监视器还指定网络地址和端口(即域名或 IP 地址),可以在 addr 设置中找到。基本配置文件通常只为每个监视器守护进程实例指定最少的设置。例如:
[global]
mon_initial_members = ceph1
mon_host = 10.0.0.1
重要
host 设置的值是节点的短名称。它不是 FQDN。它不是 IP 地址。要检索节点的名称,请在命令行中输入 hostname -s。除非您是手动部署 Ceph,否则除了初始监视器设置之外,不要使用 host 设置。使用 chef 或 cephadm 等部署工具时,不要在单个守护进程下指定 host 设置。此类工具旨在为您在集群地图中输入适当的值。
网络
有关配置用于 Ceph 的网络的更多信息,请参阅《网络配置参考》。
临时目录
某些操作会导致守护进程写入临时文件。这些文件根据 tmp_dir 配置定位。
- tmp_dir
“tmp” 目录的路径
- 类型:
str- 默认值:
/tmp- 另请参阅:
如果存在,$TMPDIR 环境变量用于初始化配置,但可以在命令行上覆盖。也可以使用常用的 ceph config API 为集群设置默认值。
守护进程创建的临时文件的模板由 tmp_file_template 配置控制。
- tmp_file_template
临时文件的模板文件名前缀。例如,临时文件可能由使用 --daemon-output-file 开关的“ceph tell”命令创建。
- 类型:
str
守护进程创建临时文件的一个示例是使用 --daemon-output-file=:tmp: 参数到 ceph tell 命令。
监视器
Ceph 生产集群通常至少配置三个Ceph Monitor 守护进程,以确保在监视器实例崩溃时可用性。至少三个Ceph Monitor 守护进程确保 Paxos 算法能够确定哪个版本的Ceph 集群地图是最新的。它通过咨询法定人数中的大多数 Ceph Monitor 来做出此决定。
注意
您可以使用单个监视器部署 Ceph,但如果实例失败,缺少其他监视器可能会中断数据服务可用性。
Ceph Monitors 通常监听端口 3300 用于新的 v2 协议,并监听端口 6789 用于旧的 v1 协议。
默认情况下,Ceph 希望将监视器数据存储在以下路径上:
/var/lib/ceph/mon/$cluster-$id
您或部署工具(例如 cephadm)必须创建相应的目录。在元变量完全表达且集群名为“ceph”的情况下,上述示例中指定的路径评估为:
/var/lib/ceph/mon/ceph-a
有关其他详细信息,请参阅《监视器配置参考》。
认证
Bobtail 版本中的新功能0.56
身份验证在 Ceph 配置文件的 [global] 部分显式启用或禁用,如下所示:
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
此外,您应该启用消息签名。有关详细信息,请参阅《CephX 配置参考》。
OSD
默认情况下,Ceph 希望将 Ceph OSD 守护进程的数据存储在以下路径上:
/var/lib/ceph/osd/$cluster-$id
您或部署工具(例如 cephadm)必须创建相应的目录。在元变量完全表达且集群名为“ceph”的情况下,上述示例中指定的路径评估为:
/var/lib/ceph/osd/ceph-0
您可以使用 osd_data 设置覆盖此路径。我们建议您不要更改默认位置。要在 OSD 主机上创建默认目录,请运行以下命令:
ssh {osd-host}
sudo mkdir /var/lib/ceph/osd/ceph-{osd-number}
osd_data 路径必须指向不与操作系统共享的设备。要使用操作系统和守护进程所在的设备之外的设备,请准备好用于 Ceph,并使用以下形式的命令将其挂载到您刚刚创建的目录中:
ssh {new-osd-host}
sudo mkfs -t {fstype} /dev/{disk}
sudo mount -o user_xattr /dev/{disk} /var/lib/ceph/osd/ceph-{osd-number}
我们建议在运行 mkfs 时使用 xfs 文件系统。(不建议使用 btrfs 和 ext4 文件系统,并且不再进行测试。)
有关其他配置详细信息,请参阅《OSD 配置参考》。
心跳
在运行时操作期间,Ceph OSD 守护进程会检查其他 Ceph OSD 守护进程,并将其发现报告给 Ceph Monitor。此过程不需要您提供任何设置。但是,如果您有网络延迟问题,您可能需要修改默认设置。
有关其他详细信息,请参阅《配置监视器/OSD 交互》。
日志/调试
您有时可能会遇到需要使用 Ceph 日志记录和调试功能的问题。有关日志轮换的详细信息,请参阅《调试和日志记录》。
ceph.conf 示例
请注意,自 Mimic 版本以来,监视器维护选项设置数据库:中央配置。节点本地的 ceph.conf 文件仍然受支持,但在大多数情况下只需要包含下面显示的前三行。在集群节点上维护完整的 ceph.conf 文件可能很繁琐,容易遗漏和出错,尤其是在守护进程容器化时。下面的文件作为参考示例提供。运行最新版本的集群最好主要通过中央配置进行管理,使用最小的 ceph.conf 文件,该文件仅定义如何到达监视器,因此很少需要修改。
[global]
fsid = {cluster-id}
mon_initial_members = {hostname}[, {hostname}]
mon_host = {ip-address}[, {ip-address}]
#All clusters have a front-side public network.
#If you have two network interfaces, you can configure a private / cluster
#network for RADOS object replication, heartbeats, backfill,
#recovery, etc.
public_network = {network}[, {network}]
#cluster_network = {network}[, {network}]
#Clusters require authentication by default.
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
#Choose reasonable number of replicas and placement groups.
osd_journal_size = {n}
osd_pool_default_size = {n} # Write an object n times.
osd_pool_default_min_size = {n} # Allow writing n copies in a degraded state.
osd_pool_default_pg_autoscale_mode = {mode} # on, off, or warn
# Only used if autoscaling is off or warn:
osd_pool_default_pg_num = {n}
#Choose a reasonable crush leaf type.
#0 for a 1-node cluster.
#1 for a multi node cluster in a single rack
#2 for a multi node, multi chassis cluster with multiple hosts in a chassis
#3 for a multi node cluster with hosts across racks, etc.
osd_crush_chooseleaf_type = {n}
集群命名(已弃用)
每个 Ceph 集群都有一个内部名称。此内部名称用作配置的一部分,也用作“日志文件”名称的一部分以及目录名称和挂载点名称的一部分。此名称默认为“ceph”。Ceph 的早期版本允许指定自定义名称,例如“ceph2”。此选项旨在方便在同一物理硬件上运行多个逻辑集群,但在实践中很少使用。不应再尝试自定义集群名称。旧文档可能会让读者错误地认为需要唯一的集群名称才能使用 rbd-mirror。它们不是必需的。
自定义集群名称现在被认为已弃用,并且部署它们的功能已从某些工具中删除,尽管现有的自定义名称部署继续运行。未来版本的 Ceph 可能会逐步删除运行和管理具有自定义名称的集群的功能,因此强烈建议使用默认名称“ceph”部署所有新集群。
一些 Ceph CLI 命令接受 --cluster(集群名称)选项。此选项仅为了向后兼容性而存在。新工具和部署不能依赖于适应此选项。
如果您需要在同一主机上允许多个集群共存,请使用 Cephadm,它使用容器来完全隔离每个集群。