eda-ha

mglantz.eda-ha

Роль, обеспечивающая высокую доступность для сервера Ansible на основе событий (EDA). Для этого нужно настроить два или более независимых сервера EDA и установить перед ними балансировщик нагрузки. Балансировщик нагрузки должен выполнять активное-пассивное распределение между вашими серверами EDA, что означает, что сервер B получает трафик только в случае сбоя сервера A и так далее.

Правила, работающие на сервере EDA, запускают playbooks, которые представлены как job_templates в ваших контроллерах AAP. Когда вы создаете playbooks, которые выполняют ваши действия, вы включаете эту роль, как показано в примере, и завязываете задачи в playbooks на предоставленную булевую переменную eda_activation. Если эта переменная истинна, это означает, что соответствующий сервер EDA активен; если нет — это значит, что он пассивен, и задачи не должны выполняться. Таким образом, действия выполняются только тогда, когда сервер EDA "активирован", то есть тот, на который происходит балансировка нагрузки.

Переключение между активным и пассивным режимами будет происходить с той скоростью, с которой балансировщик нагрузки обнаруживает сбой, обычно около одной секунды. Единственное различие между серверами EDA A и B и соответствующими контроллерами AAP заключается в том, что задачи выполняются только при активации с активного сервера EDA. Конфигурация на стороне сервера EDA не отличается.

После того, как вы ознакомитесь с приведенной ниже документацией и посмотрите файл tasks/main.yml роли, изображение ниже станет понятным. Смотрите архитектурный обзор на GitHub, если изображение не отображается

Установите роль с помощью:

ansible-galaxy role install mglantz.eda-ha

Чтобы использовать эту роль в ваших playbooks, создайте файл requirements.yml, который поместите в директорию с вашими ролями. Файл requirements.yml должен содержать:

---    
- name: mglantz.eda-ha

Пример этого можно увидеть здесь: https://github.com/mglantz/event-driven-ansible-demo/

Требования

  • Две или более установленных экземпляра Red Hat Ansible Automation Platform 2.4 с контроллером EDA или, возможно, https://github.com/ansible/eda-server (хотя тестирование исходного eda-server не проводилось).

  • Балансировщик нагрузки, настроенный на активное-пассивное распределение нагрузки к установленным серверам EDA.

  • Создайте файл: /var/lib/ansible-automation-platform/eda/ui/static/media/detect.json на каждом сервере EDA, следующим образом:

{
   "install_id": "уникальный_id_который_вы_выдумали_возможно_fqdn"
}

Когда роль определяет, какой сервер EDA активен, а какие пассивны, она делает это, сопоставляя install_id, который она находит, когда напрямую обращается к серверу EDA, и тот, который она находит, когда идет через балансировщик нагрузки.

  • Настроенные playbooks для выполнения действий, как в разделе Пример Playbook ниже, которые пользуются этой ролью.

Переменные роли

# доменное имя балансировщика нагрузки перед серверами EDA
load_balancer_fqdn: <строка|fqdn балансировщика нагрузки> 

# доменное имя сервера EDA, предложение, если AAP, установить в job_template
eda_fqdn: <строка|fqdn сервера eda>

# если мы должны проверить сертификат https. если установлено в true, все серверы EDA должны иметь действительные сертификаты
# включает соединение через балансировщик нагрузки
validate_eda_tls_cert: <булев|true/false>

Зависимости

Ansible 2.9 или 2.14.

Пример Playbook

Пример того, как использовать эту роль. В playbooks, выполняющих действия, те, которые вызываются событиями EDA, измените их следующим образом:

---
# Ниже play должен быть в начале ваших playbooks.
# Имеет смысл установить переменную eda_fqdn на уровне job_template
- name: Определить, какой сервер EDA активен, и установить eda_activation соответственно
  hosts: localhost
  roles:
    - { role: mglantz.eda-ha, load_balancer_fqdn: "loadbalancer.sudo.net", eda_fqdn: "eda.sudo.net" }

- name: Сайт работает
  hosts: all
  vars:
# Ниже переменная должна быть добавлена в play, который выполняет ваши реальные действия
    eda_activation: "{{ hostvars['localhost']['eda_activation'] }}"
  gather_facts: false
  tasks:
    - debug:
        msg: "Все работает хорошо"
# Добавьте ниже условие для задачи, которую вы хотите контролировать
      when: eda_activation

# Или аналогично для блока
    - block: 
      - name: Сделать что-то еще
        ansible.builtin.debug:
          msg: "Воображаемое что-то еще"
      - name: Также сделай это
        ansible.builtin.debug:
          msg: "Также это (воображаемое)"
      when: eda_activation

Лицензия

GPL 3.0

Информация об авторах

О проекте

Role which adds HA capability to an EDA server setup

Установить
ansible-galaxy install mglantz/eda-ha
Лицензия
gpl-3.0
Загрузки
469
Владелец
Principal Specialist Solution Architect at Red Hat