Ceph 配置文件和 ceph-deploy

Ceph configuration file and ceph-deploy

我搭建了一个测试集群,按照documentation.

我使用命令 ceph-deploy new node1 创建了集群。之后,ceph配置文件出现在当前目录中,其中包含有关主机名node1节点上的监视器的信息。然后我在集群中添加了两个OSD。

所以现在我的集群有 1 个监视器和 2 个 OSD。 ceph status 命令表示状态为 HEALTH_OK.

按照所有相同的文档,我转到 "Expanding your cluster" 部分并使用命令 ceph-deploy mon add node2ceph-deploy mon add node3 添加了两个新监视器。现在我在法定人数和状态 HEALTH_OK 中拥有三个监视器的集群,但对我来说有一点差异。 ceph.conf 还是一样。它只包含有关一台显示器的旧信息。为什么 ceph-deploy mon add {node-name} 命令没有更新配置文件?主要问题是为什么 ceph status 使用 3 个监视器显示有关新集群状态的正确信息,而 ceph.conf 不包含此信息。真正的配置文件在哪里,为什么 ceph-deploy 知道但我不知道?

而且即使在重新启动后它也能正常工作。所有 ceph 守护进程启动,读取不正确 ceph.conf(我用 strace 检查了这一点)并且忽略了这一点,在新配置下工作正常。

还有最后一个问题。为什么 ceph-deploy osd activate {ceph-node}:/path/to/directory 命令也没有更新配置文件?毕竟我们现在有这么聪明的 ceph-deploy 为什么还需要 ceph.conf 文件呢?

您在这里有多个问题。

1) ceph.conf 不需要所有节点都完全相同到 运行。例如。 OSD 只需要他们关心的 osd 配置,MON 只需要配置 mon 关心(除非你 运行 一切都在同一个节点上,这也不推荐)所以也许你的 MON1 有 MON1 MON2 有 MON2 MON3 有 MON3

2) 当创建并添加 MON 时,MON 映射正在更新,因此 MON 本身已经知道其他 MON 需要拥有法定人数。所以 MON 并不指望 ceph.conf 获取法定人数信息,而是更改 运行 时间配置。

3) ceph-deploy 只是一个 python 脚本来为你准备和 运行 ceph 命令。如果您阅读了 ceph-deploy 的详细信息,请使用例如ceph-disk zap 准备激活。 一旦您准备好并激活了 osd,一旦它被格式化为 ceph 分区,udev 就知道挂载到哪里了。然后 systemd ceph-osd.server 将在启动时激活 ceph-osd。这就是为什么它根本不需要 ceph.conf 中的 OSD 信息