Ceph配置文件和ceph-deploy

时间:2017-06-03 16:19:25

标签: ceph

我设置了一个测试群集并按照documentation

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

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

遵循所有相同的文档,我转到“扩展您的群集”部分,并添加了两个带有命令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.conf,为什么我们需要ceph-deploy文件?

1 个答案:

答案 0 :(得分:0)

这里有多个问题。

1)对于要运行的所有节点,ceph.conf并不需要完全相同。例如。 OSD只需要他们关心的osd配置,MON只需要配置mon care(除非你在同一节点上运行所有内容也不建议)所以也许你的MON1有MON1 MON2有MON2 MON3有MON3

2)当MON被创建然后添加时,MON地图正在更新,因此MON本身已经知道哪个其他MON需要具有法定人数。所以MON并不指望ceph.conf获取仲裁信息,而是改变运行时配置。

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