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żytkownikapostgresql_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 wpostgresql_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
Ansible role to deploy postgresql software with replication
ansible-galaxy install enix.postgresql_replication