enix.postgresql_replication

enix.postgresql_replication

=================

Rola do wdrożenia i konfiguracji klastra replikacji PostgreSQL na hostach unixowych z wykorzystaniem Ansible.

Wymagania


Obsługiwane systemy:

  • Debian 8 "Jessie"
  • Debian 9 "Stretch"

Zmienne Roli


Ta rola zawiera niemal wszystkie dostępne domyślne ustawienia. Możesz je nadpisać w zmiennych dla hostów/grup, w swoim inwentarzu lub w swoim playbooku. Zobacz adnotowane domyślne ustawienia w defaults/main.yml, aby uzyskać pomoc w konfiguracji. Wszystkie dostarczane zmienne rozpoczynają się od postgresql_replication__.

Ta rola działa w inny sposób niż kilka innych, wprowadzając grupy Ansible, aby uczynić role różnych hostów klastra niezależnymi. Istnieją więc 3 różne grupy do zdefiniowania w swoim inwentarzu, które można konfigurować do użycia z różnymi klastrami w tym samym inwentarzu:

  • postgresql_replication__group - główna grupa hostów dla tego klastra, domyślnie: postgresql
  • postgresql_replication__group_master - grupa master, która musiała obejmować tylko jeden host, domyślnie: postgresql_master
  • postgresql_replication__group_replicas - grupa zawierająca hosty replik, domyślnie: postgresql_replicas

Twój inwentarz musi mieć ostatecznie taki format (przykład w formacie yaml):

all:
  children:
    postgresql:
      children:
        postgresql_master:
          hosts:
            db-01:
              ansible_host: 185.145.251.12
        postgresql_replicas:
          hosts:
            db-02:
              ansible_host: 185.145.251.243
  • postgresql_replication__user - nazwa użytkownika do uwierzytelniania węzłów replikacji, domyślnie: replicate.
  • postgresql_replication__password - hasło dla użytkownika postgresql_replication__user. Ważne jest, aby zmienić domyślne hasło na klastrach produkcyjnych. domyślnie: replicate.
  • postgresql_replication__waldir - katalog używany do przechowywania plików WAL przesyłanych z węzła master do węzłów replikacji.

Konfiguracja serwerów wysyłających. Zobacz (https://www.postgresql.org/docs/11/runtime-config-replication.html#RUNTIME-CONFIG-REPLICATION-SENDER) dla szczegółów dotyczących odpowiednich wartości dla twojej konfiguracji:

  • postgresql_replication__walsenders - liczba procesów wysyłania WAL do włączenia, domyślnie: 3.

  • postgresql_replication__walsegments - liczba segmentów WAL do zachowania (po 16 MB każdy), domyślnie: 64.

  • postgresql_replication__trigger_file - plik używany do uruchamiania operacji master na węźle podrzędnym, domyślnie: /tmp/MasterNow

  • postgresql_replication__bootstrap - Bardzo ważne. Kiedy ta zmienna jest ustawiona na "yesiwant", wdrożenie usunie wszystkie dane na hostach określonych w postgresql_replication__group_replicas i przeprowadzi świeżą pg_basebackup z mastera. Zachowaj ostrożność, ponieważ jeśli włączysz to i nie skonfigurujesz odpowiednio hostów w grupach, możesz całkowicie zniszczyć swoje dane.

Zależności


Użycie


Użyj pliku requirements.yml w Ansible galaxy:

- src: enix.postgresql_replication

A następnie dodaj to do ról w swoim playbooku:

- hosts: postgresql
  roles:
    - role enix.postgresql_replication:
        postgresql__version: 11
        postgresql__global_config_options:
          - option: listen_addresses
            value: '*'
          - option: log_min_duration_statement
            value: 1000
        postgresql__hba_entries:
          - {type: local, database: all, user: postgres, auth_method: peer}
          - {type: local, database: all, user: all, auth_method: peer}
          - {type: host, database: all, user: all, address: "0.0.0.0/0", auth_method: md5}
          - {type: hostssl, database: replication, user: "{{ postgresql_replication__user }}", address: "0.0.0.0/0", auth_method: md5}
        postgresql__users:
          - {name: "{{ postgresql_replication__user }}", password: "{{ postgresql_replication__password }}", role_attr_flags: "REPLICATION"}

Możesz również użyć roli jako playbooka. Zostaniesz poproszony o wybór hostów do zarządzania i możesz dodatkowo skonfigurować grę, używając --extra-vars.

$ ansible-playbook -i inventory --extra-vars='{...}' main.yml

Do zrobienia


  • Dodać integrację z GitLab / Travis CI
  • Dodać testy korzystając z Molecule

Historia Zmian


1.1.0

Zaktualizowano nazwy grup na postgresql_master i postgresql_replicas. Zgodność z wymaganiami grup w Ansible 2.8+.

1.0.0

Wersja początkowa.

Licencja


GPLv2

Informacje o Autorze


Laurent CORBES laurent.corbes@enix.fr - http://www.enix.io

O projekcie

Ansible role to deploy postgresql software with replication

Zainstaluj
ansible-galaxy install enix.postgresql_replication
Licencja
Unknown
Pobrania
16.1k
Właściciel
Enix