我现在正在学习 Ceph 课程(packtpub 的 ceph 学习路径)。课程还不错,但有很多错误,而且并不总是最准确的。课程要求您使用 ceph-ansible 来完成大部分工作。您首先要创建一个 3 节点集群。
因此,的起始值/etc/ansible/hosts
为:
[mons]
ceph-node1
ceph-node2
ceph-node3
[osds]
ceph-node1
ceph-node2
ceph-node3
[clients]
client-node1
现在,当前部分让您创建第二个 3 节点集群作为远程备份。
为此,课程要求您将文件修改/etc/ansible/hosts
为以下内容:
#Primary site (ceph-node1):
[mons]
ceph-node1
ceph-node2
ceph-node3
[osds]
ceph-node1
ceph-node2
ceph-node3
[clients]
client-node1
#Secondary site (ceph-node5):
[mons]
ceph-node5
ceph-node6
ceph-node7
[osds]
ceph-node5
ceph-node6
ceph-node7
ceph-ansible 的安装是通过 ceph-node5 完成的,使用不同的 all.yml 文件,表示不同的集群名称。我想了解的是,这将如何向 ceph-ansible 表明有两个独立的集群。如果 /etc/ansible/hosts 文件是 .ini 格式(ansible 主机文件也是这样),则任何以 # 开头的行都应解析为注释。
那么,ceph-node5 是否会看到节点 1、2、3 上的其他安装并将它们作为单独的集群忽略?毕竟,ceph-node5 有自己的all.yml
指令,即主机应该是备份集群的一部分。它会尝试将 1、2、3 添加为节点吗?
我正在处理的文本在细节上确实很少,并且尝试深入研究 ceph-ansible github 页面也没有特别的帮助。
我只是想了解其工作原理。如能提供任何帮助,我将不胜感激,谢谢!
答案1
一个清单中重复的组名是没有意义的。此外,您可以将清单文件存储在不同的地方。
考虑以下 YAML 格式inventory/siteA.yml
:
---
all:
vars:
datacenter: a
children:
cephnodes:
hosts:
ceph-node1:
ceph-node2:
ceph-node3:
osds:
children:
cephnodes
mons:
children:
cephnodes
clients:
children:
client-node1:
因为每个节点都有一个 osd 和一个 mon,所以我做了 DRY 的事情并通过子组制作了一个引用列表。
inventory/siteB.yml
3 个不同节点自然就是同一件事。
如果您希望在一个游戏中定位多个库存,则可以将它们的目录指定为 inventory: ansible-playbook -i inventory/
。osds
然后将定位 6 个节点。但是,如果您需要在一个游戏中分别定位 A 和 B 站点,您可能需要稍微调整一下组的结构以区分它们。