注意

本文档适用于 Ceph 的开发版本。

MON 服务

部署额外的监视器

一个典型的 Ceph 集群有三个或五个监视器守护程序,分布在不同的主机上。如果集群中有五个或更多节点,我们建议部署五个监视器。

随着集群的增长,Ceph 会自动部署监视器守护程序,随着集群的缩小,Ceph 会自动缩减监视器守护程序。这种自动增长和缩小的顺利执行取决于正确的子网配置。

cephadm 引导过程将集群中的第一个监视器守护程序分配给特定的子网。cephadm 将该子网指定为集群的默认子网。除非指示 cephadm 执行其他操作,否则新的监视器守护程序将默认分配给该子网。

如果集群中的所有 Ceph 监视器守护程序都在同一个子网中,则无需手动管理 Ceph 监视器守护程序。cephadm 将根据需要在向集群添加新主机时自动向子网添加多达五个监视器。

默认情况下,cephadm 将在任意主机上部署 5 个守护程序。有关指定守护程序放置位置的详细信息,请参阅守护程序放置

为监视器指定特定子网

要为 Ceph 监视器守护程序指定特定的 IP 子网,请使用以下形式的命令,包括 CIDR 格式的子网地址(例如,10.1.2.0/24

ceph config set mon public_network *<mon-cidr-network>*

例如

ceph config set mon public_network 10.1.2.0/24

Cephadm 仅在具有指定子网中 IP 地址的主机上部署新的监视器守护程序。

您还可以通过使用网络列表来指定两个公共网络

ceph config set mon public_network *<mon-cidr-network1>,<mon-cidr-network2>*

例如

ceph config set mon public_network 10.1.2.0/24,192.168.0.1/24

在特定网络上部署监视器

您可以明确指定每个监视器的 IP 地址或 CIDR 网络,并控制每个监视器的放置位置。要禁用自动监视器部署,请运行此命令

ceph orch apply mon --unmanaged

部署每个额外的监视器

ceph orch daemon add mon *<host1:ip-or-network1>

例如,要在 newhost1 上使用 IP 地址 10.1.2.123 部署第二个监视器,并在网络 10.1.2.0/24 中的 newhost2 上部署第三个监视器,请运行以下命令

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

现在,启用守护程序的自动放置

ceph orch apply mon --placement="newhost1,newhost2,newhost3" --dry-run

有关指定守护程序放置位置的详细信息,请参阅守护程序放置

最后通过删除 --dry-run 应用此新放置

ceph orch apply mon --placement="newhost1,newhost2,newhost3"

将监视器移动到不同的网络

要将监视器移动到新网络,请在新网络上部署新的监视器,然后从旧网络中删除监视器。不建议手动修改和注入 monmap

首先,禁用守护程序的自动放置

ceph orch apply mon --unmanaged

部署每个额外的监视器

ceph orch daemon add mon *<newhost1:ip-or-network1>*

例如,要在 newhost1 上使用 IP 地址 10.1.2.123 部署第二个监视器,并在网络 10.1.2.0/24 中的 newhost2 上部署第三个监视器,请运行以下命令

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

随后从旧网络中删除监视器

ceph orch daemon rm *mon.<oldhost1>*

更新 public_network

ceph config set mon public_network *<mon-cidr-network>*

例如

ceph config set mon public_network 10.1.2.0/24

现在,启用守护程序的自动放置

ceph orch apply mon --placement="newhost1,newhost2,newhost3" --dry-run

有关指定守护程序放置位置的详细信息,请参阅守护程序放置

最后通过删除 --dry-run 应用此新放置

ceph orch apply mon --placement="newhost1,newhost2,newhost3"

为监视器设置 Crush 位置

Cephadm 支持使用 mon 服务规范为 mon 守护程序设置 CRUSH 位置。CRUSH 位置按主机名设置。当 cephadm 在与 CRUSH 位置中指定的主机名匹配的主机上部署 mon 时,它将添加 --set-crush-location <CRUSH-location>,其中 CRUSH 位置是该主机 CRUSH 位置列表中的第一个条目。如果为一个主机设置了多个 CRUSH 位置,cephadm 将尝试使用“ceph mon set_location”命令设置额外的 CRUSH 位置。

注意

在规范中设置 CRUSH 位置是替换 tiebreaker mon 守护程序的推荐方法,因为它们在添加时需要设置位置。

注意

Tiebreaker mon 守护程序是 stretch mode 集群的一部分。有关 stretch mode 集群的更多信息,请参阅Stretch Clusters

设置 CRUSH 位置的示例语法

service_type: mon
service_name: mon
placement:
  count: 5
spec:
  crush_locations:
    host1:
    - datacenter=a
    host2:
    - datacenter=b
    - rack=2
    host3:
    - datacenter=a

注意

有时,根据 mon 守护程序被接纳到 mon 仲裁的时间,当指定多个位置时,cephadm 可能无法为某些 mon 守护程序设置 CRUSH 位置。在这种情况下,建议的操作是重新应用相同的 mon 规范以重新触发服务操作。

注意

Mon 守护程序只会在 cephadm 实际部署它们时设置 --set-crush-location 标志。这意味着如果应用了包含已部署 mon 的 CRUSH 位置的规范,则在为该 mon 守护程序发出重新部署命令之前,该标志可能不会被设置。

延伸阅读

由 Ceph 基金会为您呈现

Ceph 文档是由非营利性 Ceph 基金会 资助和托管的社区资源。如果您希望支持这项工作和我们的其他努力,请考虑 立即加入