Я прорабатываю курс Ceph прямо сейчас (путь обучения ceph от packtpub). Курс нормальный, но в нем много ошибок, и он не всегда самый точный. Курс предполагает, что вы используете 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, каковыми являются доступные хост-файлы, любые строки, начинающиеся с символа #, следует анализировать как комментарии.
Итак, видит ли ceph-node5 другие установки на узлах 1,2,3 и игнорирует их как отдельный кластер? Ведь у ceph-node5 есть свой all.yml
с указанием, что хосты должны быть частью резервного кластера. Будет ли он пытаться добавить 1,2,3 в качестве узлов?
Текст, с которым я работаю, действительно скуден по деталям, и попытки покопаться на странице github с поддержкой ceph не были особенно полезны.
Я просто пытаюсь понять механику того, как это работает. Любая помощь будет оценена, спасибо!
Повторение названий групп в одном инвентаре не имеет смысла. Кроме того, вы можете хранить файлы инвентаря в разных местах.
Рассмотрим этот формат 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, я сделал СУХОЙ и сделал этот список одним списком через дочерние группы.
inventory/siteB.yml
естественно было бы то же самое с 3 разными узлами.
Если вы хотите настроить таргетинг на несколько инвентаря для одной игры, вы можете указать их каталог как инвентарь: ansible-playbook -i inventory/
. osds
затем будет нацелен на 6 узлов. Однако, если вам нужно настроить таргетинг на сайты A и B отдельно в одной игре, вы можете немного реструктурировать группы, чтобы различать их.