Назад | Перейти на главную страницу

Указание нескольких кластеров с помощью ceph-ansible

Я прорабатываю курс 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 отдельно в одной игре, вы можете немного реструктурировать группы, чтобы различать их.