mglantz.eda-ha
mglantz.eda-ha
Rola zapewniająca wysoką dostępność dla serwera Event Driven Ansible (EDA). Wymaga skonfigurowania dwóch lub więcej niezależnych serwerów EDA oraz umieszczenia przed nimi balancera obciążenia. Balancer obciążenia musi realizować aktywne-pasywne balansowanie pomiędzy serwerami EDA, co oznacza, że B otrzymuje ruch tylko wtedy, gdy A zawiedzie, itp.
Reguły działające na serwerze EDA uruchamiają playbooki dostępne jako job_templates w Twoich kontrolerach AAP. Tworząc playbooki, które wykonują Twoje działania - dodajesz tę rolę, jak pokazano w przykładzie, i uzależniasz zadania w playbookach od podanej zmiennej eda_activation typu boolean. Jeśli ta zmienna jest prawdziwa, oznacza to, że dany serwer EDA jest aktywny. Jeśli nie, oznacza to, że jest pasywny i nie powinny być wykonywane żadne zadania. Działania są podejmowane tylko wtedy, gdy serwer EDA jest "aktywowany", co oznacza, że to ten serwer, do którego kierowane jest obciążenie.
Przełączenie między aktywnym a pasywnym serwerem następuje w tempie, w jakim balancer obciążenia wykryje awarię, zazwyczaj w ciągu około jednej sekundy. Różnicą między serwerami EDA A i B oraz odpowiadającymi im kontrolerami AAP jest to, że zadania są wykonywane tylko wtedy, gdy są uruchamiane przez aktywny serwer EDA. Na stronie serwera EDA nie ma różnic w konfiguracji.
Po zapoznaniu się z poniższą dokumentacją oraz przeglądaniu pliku tasks/main.yml roli, poniższy obrazek będzie zrozumiały.
Zainstaluj rolę używając:
ansible-galaxy role install mglantz.eda-ha
Aby użyć tej roli w swoich playbookach, stwórz plik requirements.yml, który umieścisz w swoim katalogu ról. Plik requirements.yml musi zawierać:
---
- name: mglantz.eda-ha
Przykład tego znajduje się tutaj: https://github.com/mglantz/event-driven-ansible-demo/
Wymagania
Dwie lub więcej zainstalowanych instancji Red Hat Ansible Automation Platform 2.4 z kontrolerem EDA, lub być może https://github.com/ansible/eda-server (upstream eda-server nie był testowany).
Balancer obciążenia, skonfigurowany do aktywno-pasywnego balansowania obciążenia do zainstalowanych serwerów EDA.
Utwórz plik: /var/lib/ansible-automation-platform/eda/ui/static/media/detect.json na każdym serwerze EDA, w następujący sposób:
{
"install_id": "unikatowy_id, który wymyślisz, na przykład fqdn"
}
Kiedy rola ustala, który serwer EDA jest aktywny, a który pasywny, czyni to poprzez dopasowanie install_id, który znajduje, kontaktując się bezpośrednio z serwerem EDA i tym, który znajduje, przechodząc przez balancer obciążenia.
- Dostosowane playbooki do podejmowania działań, jak w sekcji
Przykładowy playbook
poniżej, które wykorzystują tę rolę.
Zmienne roli
# nazwa domeny balancera obciążenia przed serwerami EDA
load_balancer_fqdn: <string|fqdn balancera obciążenia>
# nazwa domeny serwera eda, sugestia, jeśli AAP, ustaw w job_template
eda_fqdn: <string|fqdn serwera eda>
# czy mamy uwierzytelnić certyfikat https. jeśli ustawione na true, wszystkie serwery EDA muszą mieć ważne certyfikaty
# obejmuje również połączenie przez balancer obciążenia
validate_eda_tls_cert: <bool|true/false>
Zależności
Ansible 2.9 lub 2.14.
Przykładowy playbook
Przykład użycia roli. W playbookach podejmujących działania, które są uruchamiane przez zdarzenia EDA, dostosuj je w następujący sposób:
---
# Poniższy play musi być na początku twoich playbooków.
# Ma sens ustawić zmienną eda_fqdn na poziomie job_template
- name: Wykryj, który serwer EDA jest aktywny i ustaw eda_activation odpowiednio
hosts: localhost
roles:
- { role: mglantz.eda-ha, load_balancer_fqdn: "loadbalancer.sudo.net", eda_fqdn: "eda.sudo.net" }
- name: Strona działa
hosts: all
vars:
# Poniższa zmienna musi być dodana do play, który wykonuje rzeczywistą akcję
eda_activation: "{{ hostvars['localhost']['eda_activation'] }}"
gather_facts: false
tasks:
- debug:
msg: "Wszystko działa prawidłowo"
# Dodaj poniższe wyrażenie warunkowe dla zadania, które chcesz kontrolować
when: eda_activation
# Lub podobnie dla bloku
- block:
- name: Zrób coś innego
ansible.builtin.debug:
msg: "Wyimaginowana inna rzecz"
- name: Zrób też to
ansible.builtin.debug:
msg: "Też ta rzecz (wyimaginowana)"
when: eda_activation
Licencja
GPL 3.0
Informacje o autorze
- Magnus Glantz, sudo@redhat.com, 2023
- Roberto Nunez, rnunez@redhat.com, 2023
Role which adds HA capability to an EDA server setup
ansible-galaxy install mglantz.eda-ha