2017-06-03 36 views
0

我建立了一个测试集群,并按照documentationCeph配置文件和ceph-deploy

我用命令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

回答

0

这里有多个问题。

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

2)被创建并且被添加,MON地图被更新以便MON自己已经知道哪个其他MON需要具有法定数量。所以MON不指望ceph.conf来获得仲裁信息,而是改变运行时配置。 3)ceph只部署一个python脚本来为你准备和运行ceph命令。如果你阅读详细的ceph-deploy使用例如ceph-disk zap准备激活。 一旦你准备好osd,并激活,一旦它格式化为ceph分区,udev就知道在哪里挂载。然后systemd ceph-osd.server将在启动时激活ceph-osd。这就是为什么它不需要ceph.conf中的所有OSD信息