注意
本文档适用于 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_networkceph 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 守护程序发出重新部署命令之前,该标志可能不会被设置。