注意
本文档适用于 Ceph 的开发版本。
主机管理
列出主机
运行以下形式的命令来列出与集群关联的主机
ceph orch host ls [--format yaml] [--host-pattern <name>] [--label <label>] [--host-status <status>] [--detail]
在此类命令中,参数“host-pattern”、“label”和“host-status”是可选的,用于过滤。
“host-pattern”是一个与主机名匹配的正则表达式,仅返回匹配的主机。
“label”仅返回具有指定标签的主机。
“host-status”仅返回具有指定状态的主机(当前为“offline”或“maintenance”)。
这些过滤标志的任何组合都是有效的。可以同时按名称、标签和状态进行过滤,也可以按名称、标签和状态的任何适当子集进行过滤。
“detail”参数为基于 cephadm 的集群提供更多与主机相关的信息。例如
ceph orch host ls --detail
HOSTNAME ADDRESS LABELS STATUS VENDOR/MODEL CPU HDD SSD NIC
ceph-master 192.168.122.73 _admin QEMU (Standard PC (Q35 + ICH9, 2009)) 4C/4T 4/1.6TB - 1
1 hosts in cluster
添加主机
主机必须安装这些 要求。未满足所有必要要求的主机将无法添加到集群中。
要将每个新主机添加到集群,请执行两个步骤
将集群的公共 SSH 密钥安装到新主机的 root 用户的
authorized_keys文件中ssh-copy-id -f -i /etc/ceph/ceph.pub root@*<new-host>*例如
ssh-copy-id -f -i /etc/ceph/ceph.pub root@host2 ssh-copy-id -f -i /etc/ceph/ceph.pub root@host3
通知 Ceph 新节点是集群的一部分
ceph orch host add *<newhost>* [*<ip>*] [*<label1> ...*]例如
ceph orch host add host2 10.10.0.102 ceph orch host add host3 10.10.0.103
最好显式提供主机 IP 地址。如果未提供地址,则将立即通过 DNS 解析主机名并使用结果。
还可以包含一个或多个标签,以立即标记新主机。例如,默认情况下,
_admin标签将使 cephadm 在/etc/ceph中维护ceph.conf文件和client.admin密钥环文件副本ceph orch host add host4 10.10.0.104 --labels _admin
删除主机
从主机上删除所有守护程序后,可以安全地将其从集群中删除。
要从主机上排空所有守护程序,请运行以下形式的命令
ceph orch host drain *<host>*
将 _no_schedule 和 _no_conf_keyring 标签应用于主机。请参阅 特殊主机标签。
如果要排空守护程序但保留主机上受管的 ceph.conf 和密钥环文件,可以将 --keep-conf-keyring 标志传递给排空命令。
ceph orch host drain *<host>* --keep-conf-keyring
这将把 _no_schedule 标签应用于主机,但不会应用 _no_conf_keyring 标签。
主机上的所有 OSD 都将安排删除。可以使用以下命令检查 OSD 删除操作的进度
ceph orch osd rm status
有关 OSD 删除的更多详细信息,请参阅 删除 OSD。
orch host drain 命令还支持 --zap-osd-devices 标志。在排空主机时设置此标志将导致 cephadm 擦除作为排空过程一部分正在删除的 OSD 的设备
ceph orch host drain *<host>* --zap-osd-devices
使用以下命令确定主机上是否仍有任何守护程序
ceph orch ps <host>
从主机中删除所有守护程序后,运行以下命令将主机从集群中删除
ceph orch host rm <host>
离线主机移除
如果主机离线且无法恢复,可以通过运行以下形式的命令将其从集群中删除
ceph orch host rm <host> --offline --force
警告
这可能会导致数据丢失。此命令通过对每个 OSD 调用 osd purge-actual 来强制清除集群中的 OSD。仍然包含此主机的任何服务规范都应手动更新。
主机标签
orchestrator 支持为主机分配标签。标签是自由形式的,本身没有特定含义,每个主机可以有多个标签。它们可用于指定守护程序的放置位置。请参阅 按标签放置
使用 --labels 标志添加主机时可以添加标签
ceph orch host add my_hostname --labels=my_label1
ceph orch host add my_hostname --labels=my_label1,my_label2
要为现有主机添加标签,请运行
ceph orch host label add my_hostname my_label
要删除标签,请运行
ceph orch host label rm my_hostname my_label
特殊主机标签
以下主机标签对 cephadm 具有特殊含义。所有标签都以 _ 开头。
_no_schedule:不要在此主机上调度或部署守护程序。此标签可防止 cephadm 在此主机上部署守护程序。如果将其添加到已包含 Ceph 守护程序的现有主机,它将导致 cephadm 将这些守护程序移动到其他位置(OSD 除外,OSD 不会自动删除)。
_no_conf_keyring:不要在此主机上部署配置文件或密钥环。此标签与
_no_schedule效果相同,但不是作用于守护程序,而是作用于由 cephadm 管理的客户端密钥环和 ceph 配置文件_no_autotune_memory:不要在此主机上自动调优内存。即使此主机上的一个或多个守护程序启用了
osd_memory_target_autotune或类似选项,此标签也会阻止调优守护程序内存。_admin:将 client.admin 和 ceph.conf 分发到此主机。默认情况下,
_admin标签应用于集群中的第一个主机(最初运行引导程序的位置),并通过ceph orch client-keyring ...函数将client.admin密钥分发到该主机。将此标签添加到其他主机通常会导致 cephadm 在/etc/ceph中部署配置和密钥环文件。从版本 16.2.10 (Pacific) 和 17.2.1 (Quincy) 开始,除了默认位置/etc/ceph/之外,cephadm 还在/var/lib/ceph/<fsid>/config目录中存储配置和密钥环文件。
维护模式
将主机置于维护模式会停止主机上的所有 Ceph 守护程序。运行以下形式的命令将主机置于维护模式或使主机退出维护模式
ceph orch host maintenance enter <hostname> [--force] [--yes-i-really-mean-it]
ceph orch host maintenance exit <hostname> [--force] [--offline]
将
--force标志添加到enter命令允许用户绕过警告(但不包括警报)。将
--yes-i-really-mean-it标志添加到enter命令会绕过所有安全检查,并尝试强制主机进入维护模式。将
--force和--offline标志添加到exit命令会导致 cephadm 将处于维护模式且离线的主机标记为不再处于维护模式。请注意,如果主机上线,主机上的 Ceph 守护程序将保持停止状态。exit命令的--force和--offline标志旨在用于在通过运行ceph orch host rm命令从 cephadm 管理中删除之前,处于维护模式且永久离线的主机上运行。
警告
使用 --yes-i-really-mean-it 标志强制主机进入维护模式可能会导致数据可用性丢失、由于运行的监视器过少而导致 mon 仲裁崩溃、管理器模块命令无响应(例如 ceph orch . . . 命令)以及其他问题。仅当您绝对确定自己知道正在做什么时才使用此标志。
另请参阅 完全限定域名与裸主机名
重新扫描主机设备
某些服务器和外部机箱可能不会向内核注册设备移除或插入。在这种情况下,您需要对相应的主机执行设备重新扫描。重新扫描通常不会中断,可以使用以下 CLI 命令执行
ceph orch host rescan <hostname> [--with-summary]
with-summary 标志提供了发现和扫描的 HBA 数量以及任何失败的 HBA 的细分
ceph orch host rescan rh9-ceph1 --with-summary
Ok. 2 adapters detected: 2 rescanned, 0 skipped, 0 failed (0.32s)
一次创建多个主机
通过提交多文档 YAML 文件,可以使用 ceph orch apply -i 一次添加许多主机
service_type: host
hostname: node-00
addr: 192.168.0.10
labels:
- example1
- example2
---
service_type: host
hostname: node-01
addr: 192.168.0.11
labels:
- grafana
---
service_type: host
hostname: node-02
addr: 192.168.0.12
这可以与 服务规范 结合使用,以创建一个集群规范文件,通过一个命令部署整个集群。另请参阅 cephadm bootstrap --apply-spec 以在引导期间执行此操作。集群 SSH 密钥必须在添加主机之前复制到主机。
设置主机的初始 CRUSH 位置
主机可以包含一个 location 标识符,该标识符将指示 cephadm 在指定层次结构中创建新的 CRUSH 主机存储桶。执行此操作时,您可以指定树的多个元素(例如,如果您想确保将正在添加的主机所在的机架也添加到默认存储桶中),例如
service_type: host
hostname: node-00
addr: 192.168.0.10
location:
root: default
rack: rack1
注意
location 属性仅影响初始 CRUSH 位置。对 location 属性的后续更改将被忽略。除非在 orch host rm 命令中提供了 --rm-crush-entry 标志,否则删除主机不会删除关联的 CRUSH 存储桶。
另请参阅 类型和存储桶。
从 CRUSH 映射中删除主机
ceph orch host rm 命令支持从 CRUSH 映射中删除关联的主机存储桶。这是通过提供 --rm-crush-entry 标志来完成的。
ceph orch host rm host1 --rm-crush-entry
指定此标志后,cephadm 将尝试在主机移除过程中从 CRUSH 映射中移除主机存储桶。请注意,如果移除失败,cephadm 将报告失败,并且主机将保留在 cephadm 控制之下。
注意
如果主机上部署了 OSD,则从 CRUSH 映射中移除将失败。如果您还想移除主机的所有 OSD,请首先使用 ceph orch host drain 命令执行此操作。OSD 移除后,您可以使用 --rm-crush-entry 标志指示 cephadm 连同主机一起移除 CRUSH 存储桶。
操作系统调优配置文件
Cephadm 可用于管理操作系统调优配置文件,这些配置文件将 sysctl 设置应用于一组主机。
为此,请创建格式如下的 YAML 规范文件
profile_name: 23-mon-host-profile
placement:
hosts:
- mon-host-01
- mon-host-02
settings:
fs.file-max: 1000000
vm.swappiness: '13'
使用以下命令应用调优配置文件
ceph orch tuned-profile apply -i <tuned-profile-file-name>
此配置文件将写入 /etc/sysctl.d/ 下的每个主机上的文件中,该文件在 placement 块中指定,然后 sysctl --system 在主机上运行。
注意
配置文件写入 /etc/sysctl.d/ 中的确切文件名是 <profile-name>-cephadm-tuned-profile.conf,其中 <profile-name> 是您在 YAML 规范中指定的 profile_name 设置。我们建议按照通常的 sysctl.d NN-xxxxx 约定命名这些配置文件。由于 sysctl 设置按字典顺序应用(按指定设置的文件名排序),因此您可能需要仔细选择规范中的 profile_name,以便它在其他 conf 文件之前或之后应用。仔细选择可确保此处提供的值按需覆盖或不覆盖其他 sysctl.d 文件中的值。
注意
这些设置仅在主机级别应用,不特定于任何特定的守护程序或容器。
注意
当传递 --no-overwrite 选项时,应用调优配置文件是幂等的。此外,如果传递 --no-overwrite 选项,则不会覆盖具有相同名称的现有配置文件。
查看配置文件
运行以下命令查看 cephadm 当前管理的所有配置文件
ceph orch tuned-profile ls
注意
要修改和重新应用配置文件,请将 --format yaml 传递给 tuned-profile ls 命令。tuned-profile ls --format yaml 命令以易于复制和重新应用的格式显示配置文件。
删除配置文件
要删除以前应用的配置文件,请运行此命令
ceph orch tuned-profile rm <profile-name>
删除配置文件后,cephadm 会清理先前写入 /etc/sysctl.d 的文件。
修改配置文件
可以通过重新应用与要修改的配置文件同名的 YAML 规范来修改配置文件,但可以使用以下命令调整现有配置文件中的设置。
要在现有配置文件中添加或修改设置
ceph orch tuned-profile add-setting <profile-name> <setting-name> <value>
要从现有配置文件中删除设置
ceph orch tuned-profile rm-setting <profile-name> <setting-name>
注意
修改放置需要重新应用同名的配置文件。请记住,配置文件是按其名称跟踪的,因此当应用与现有配置文件同名的配置文件时,它会覆盖旧配置文件,除非传递了 --no-overwrite 标志。
SSH 配置
Cephadm 使用 SSH 连接到远程主机。SSH 使用密钥以安全的方式与这些主机进行身份验证。
默认行为
Cephadm 在监视器中存储一个 SSH 密钥,用于连接到远程主机。引导集群时,此 SSH 密钥会自动生成,无需额外配置。
可以使用以下命令生成新 SSH 密钥
ceph cephadm generate-key
可以使用以下命令检索 SSH 密钥的公共部分
ceph cephadm get-pub-key
可以使用以下命令删除当前存储的 SSH 密钥
ceph cephadm clear-key
您可以通过以下方式直接导入现有密钥来使用它
ceph config-key set mgr/cephadm/ssh_identity_key -i <key>
ceph config-key set mgr/cephadm/ssh_identity_pub -i <pub>
然后需要使用以下命令重新启动 mgr 守护程序以重新加载配置
ceph mgr fail
配置不同的 SSH 用户
Cephadm 必须能够以具有足够权限下载容器映像、启动容器和执行命令而无需提示输入密码的用户身份登录到所有 Ceph 集群节点。如果您不想使用“root”用户(cephadm 中的默认选项),则必须向 cephadm 提供将用于执行所有 cephadm 操作的用户的名称。使用命令
ceph cephadm set-user <user>
在此之前,需要将集群 SSH 密钥添加到此用户的 authorized_keys 文件中,并且非 root 用户必须具有无密码 sudo 访问权限。
自定义 SSH 配置
Cephadm 生成一个适当的 ssh_config 文件,用于连接到远程主机。此配置类似于
Host *
User root
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
有两种方法可以为您的环境自定义此配置
导入将由监视器存储的自定义配置文件,使用
ceph cephadm set-ssh-config -i <ssh_config_file>要删除自定义 SSH 配置并恢复为默认行为
ceph cephadm clear-ssh-config您可以使用以下命令配置 SSH 配置文件的文件位置
ceph config set mgr mgr/cephadm/ssh_config_file <path>我们不建议使用此方法。路径名必须对任何 mgr 守护程序可见,并且 cephadm 将所有守护程序作为容器运行。这意味着该文件必须放置在用于部署的自定义容器映像中,或者手动分发到 mgr 数据目录(主机上的
/var/lib/ceph/<cluster-fsid>/mgr.<id>,在容器内可见/var/lib/ceph/mgr/ceph-<id>)。
为集群设置 CA 签名密钥
Cephadm 还支持使用 CA 签名密钥进行跨集群节点的 SSH 身份验证。在此设置中,我们不需要私钥和公钥,而是需要通过使用 CA 密钥对私钥进行签名而创建的私钥和证书。有关使用 CA 签名密钥设置节点进行身份验证的更多信息,请参阅 使用 CA 签名 SSH 密钥部署。获取私钥和签名证书后,可以通过运行以下命令将其设置为 cephadm 使用
ceph config-key set mgr/cephadm/ssh_identity_key -i <private-key-file>
ceph config-key set mgr/cephadm/ssh_identity_cert -i <signed-cert-file>
完全限定域名与裸主机名
注意
cephadm 要求通过 ceph orch host add 给定的主机名等于远程主机上 hostname 的输出。
否则 cephadm 无法确定 ceph * metadata 返回的名称是否与 cephadm 知道的主机匹配。这可能会导致 CEPHADM_STRAY_HOST 警告。
配置新主机时,有两种有效方法设置主机的 hostname
使用裸主机名。在这种情况下
hostname返回裸主机名。hostname -f返回 FQDN。
使用完全限定域名作为主机名。在这种情况下
hostname返回 FQDNhostname -s返回裸主机名
请注意,man hostname 建议 hostname 返回裸主机名
系统的 FQDN(完全限定域名)是解析器(3)为 hostname 返回的名称,例如
ursula.example.com。它通常是短主机名后跟 DNS 域名(第一个点之后的部分)。您可以使用hostname --fqdn检查 FQDN,或使用dnsdomainname检查域名。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
这意味着,man hostname 建议 hostname 返回裸主机名。这反过来意味着 Ceph 在执行 ceph * metadata 时将返回裸主机名。这反过来意味着 cephadm 在向集群添加主机时也需要裸主机名:ceph orch host add <bare-name>。