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. Zobacz przegląd architektury na GitHubie, jeśli nie działa

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

O projekcie

Role which adds HA capability to an EDA server setup

Zainstaluj
ansible-galaxy install mglantz.eda-ha
Licencja
gpl-3.0
Pobrania
482
Właściciel
Principal Specialist Solution Architect at Red Hat