Patroni - управление: различия между версиями
Vix (обсуждение | вклад) (Новая страница: «* Перезапуск конфигурации на ноде: patronictl -c /etc/patroni/config.yml restart имя-кластера имя-хоста (на котором перезапускаем) * Вывести конфиг patroni: patronictl -c /etc/patroni/config.yml show-config * Редактировать конфиг patroni: patronictl -c /etc/patroni/config.yml edit-config * Посмотреть состояние кластера patroni:...») |
Vix (обсуждение | вклад) |
||
(не показано 12 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
=='''БАЗОВЫЕ ОПЕРАЦИИ'''== | |||
* Перезапуск конфигурации на ноде: | * Перезапуск конфигурации на ноде: | ||
patronictl -c /etc/patroni/config.yml restart имя-кластера имя-хоста (на котором перезапускаем) | patronictl -c /etc/patroni/config.yml restart имя-кластера имя-хоста (на котором перезапускаем) | ||
Строка 7: | Строка 8: | ||
* Посмотреть состояние кластера patroni: | * Посмотреть состояние кластера patroni: | ||
patronictl -c /etc/patroni/config.yml list | patronictl -c /etc/patroni/config.yml list | ||
=='''РЕГЛАМЕНТНЫЕ ОПЕРАЦИИ'''== | |||
* '''Сменить Лидера для изменений настроек или иное:''' | |||
patronictl -c /etc/patroni/config.yml failover | |||
* - будет предложен список кандидатов, кто будет лидером, нужно ввести полное имя как в списке. | |||
<hr> | |||
* '''Изменение конфигурации Patroni''':<br> | |||
В '''Patroni''' есть 2 секции в конфигурации, первая отвечает за поведение самого '''patroni''',<br> | |||
вторая это настройки '''Postgresql'''.<br> | |||
Секции:<br> | |||
'''bootstrap''' - (параметры при запуске Postgresql) | |||
* Пример такого параметра в файле: /etc/patroni/config.yaml | |||
... | |||
'''bootstrap:''' | |||
dcs: | |||
ttl: 100 | |||
loop_wait: 10 | |||
maximum_lag_on_failover: 1048576 | |||
master_start_timeout: 5 | |||
postgresql: | |||
use_pg_rewind: true | |||
use_slots: true | |||
parameters: | |||
max_connections: '260' | |||
wal_level: 'replica' | |||
wal_keep_segments: 1000 | |||
max_replication_slots: 5 | |||
max_wal_senders: 10 | |||
hot_standby: 'on' | |||
'''max_locks_per_transaction: 512''' | |||
checkpoint_timeout: 15 | |||
... | |||
или секции: | |||
'''pg_hba''' - (доступы на Postgresql)<br> | |||
* Пример такого параметра в файле: /etc/patroni/config.yaml | |||
'''pg_hba:''' | |||
#Patroni | |||
host all all 0.0.0.0/0 md5 | |||
host postgres mylogin 0.0.0.0/24 md5 | |||
host all postgres 0.0.0.0/24 md5 | |||
'''host replication replicator 10.111.6.11/32 md5''' | |||
'''host replication replicator 10.111.6.12/32 md5''' | |||
- изменения для них вносятся сначала через: | |||
patronictl -c /etc/patroni/config.yml edit-config | |||
После изменений, при выходе конфигуратор спросит: | |||
'''Принять изменения?''' Отвечаем '''Да'''. | |||
- потом проверяем применение через: | |||
patronictl -c /etc/patroni/config.yml show-config | |||
- если вы вносите изменения через: | |||
patronictl -c /etc/patroni/config.yml edit-config | |||
то изменения применяются сразу всем участникам кластера!<br> | |||
Так же нужно понимать, что при '''перезагрузке''' сервиса '''Patroni''' на ноде, изменения не примутся, загрузится предыдущий файл конфигурации.<br> | |||
* Поэтому так же необходимо вносить изменения в '''/etc/patroni/config.yml''' | |||
- если все прошло успешно, необходимо перезапустить обе ноды поочереди через: | |||
systemctl restart patroni | |||
- только после этого параметры уже будут в работе в самом Postgresql. | |||
* '''Изменение конфигурации Postgresql в Patroni''':<br> | |||
Если вы внесли изменения в ресурсы виртуального контейнера, то необходимо скорректировать настройки '''PostgresPro'''.<br> | |||
Для этого достаточно внести корректировки в /etc/patroni/config.yml, секции: | |||
... | |||
postgresql: | |||
.... | |||
parameters: | |||
unix_socket_directories: '.' | |||
dynamic_shared_memory_type: 'posix' | |||
seq_page_cost: '0.1' | |||
superuser_reserved_connections: '2' | |||
huge_pages: 'off' | |||
track_io_timing: 'off' | |||
synchronous_commit: 'off' | |||
fsync: 'on' | |||
wal_sync_method: 'fdatasync' | |||
checkpoint_timeout: '15 min' | |||
random_page_cost: '0.1' | |||
cpu_operator_cost: '0.0025' | |||
logging_collector: 'on' | |||
log_timezone: 'Europe/Moscow' | |||
datestyle: 'iso, dmy' | |||
timezone: 'Europe/Moscow' | |||
lc_messages: 'ru_RU.UTF-8' | |||
lc_monetary: 'ru_RU.UTF-8' | |||
lc_numeric: 'ru_RU.UTF-8' | |||
lc_time: 'ru_RU.UTF-8' | |||
default_text_search_config: 'pg_catalog.russian' | |||
temp_buffers: '256 MB' | |||
max_files_per_process: '10000' | |||
commit_delay: '1000' | |||
from_collapse_limit: '8' | |||
join_collapse_limit: '8' | |||
autovacuum_max_workers: '2' | |||
vacuum_cost_limit: '200' | |||
autovacuum_naptime: '10s' | |||
autovacuum_vacuum_scale_factor: '0.01' | |||
autovacuum_analyze_scale_factor: '0.005' | |||
escape_string_warning: 'off' | |||
standard_conforming_strings: 'off' | |||
shared_preload_libraries: 'online_analyze, plantuner' | |||
online_analyze.threshold: '50' | |||
online_analyze.scale_factor: '0.1' | |||
online_analyze.enable: 'on' | |||
online_analyze.verbose: 'off' | |||
online_analyze.min_interval: '10000' | |||
online_analyze.table_type: 'temporary' | |||
plantuner.fix_empty_table: 'on' | |||
shared_buffers: '8192 MB' | |||
effective_cache_size: '23 GB' | |||
maintenance_work_mem: '420 MB' | |||
checkpoint_completion_target: '0.9' | |||
default_statistics_target: '500' | |||
effective_io_concurrency: '200' | |||
work_mem: '64 MB' | |||
min_wal_size: '5120 MB' | |||
max_wal_size: '10240 MB' | |||
wal_compression: 'on' | |||
wal_buffers: '16' | |||
wal_writer_delay: '200ms' | |||
wal_writer_flush_after: '1 MB' | |||
wal_keep_size: '22080 MB' | |||
bgwriter_delay: '200ms' | |||
bgwriter_lru_maxpages: '100' | |||
bgwriter_lru_multiplier: '2.0' | |||
bgwriter_flush_after: '0' | |||
max_worker_processes: '6' | |||
max_parallel_workers_per_gather: '3' | |||
max_parallel_workers: '6' | |||
max_parallel_maintenance_workers: '3' | |||
parallel_leader_participation: 'on' | |||
jit: 'on' | |||
max_slot_wal_keep_size: '1000 MB' | |||
maintenance_io_concurrency: '200' | |||
wal_recycle: 'on' | |||
... | |||
и перезагрузить сервис '''Patroni'''. | |||
systemctl reload patroni | |||
или перезапустить | |||
systemctl restart patroni | |||
=='''РЕШЕНИЕ ПРОБЛЕМ'''== | |||
<br> | |||
* '''ВНИМАНИЕ!!! - если идет реплика, ни в коем случае не трогать Leader!!''' | |||
* Сначала смотрим состояние кластера '''Patroni''': | |||
patronictl -c /etc/patroni/config.yml list | |||
* Если есть '''State: creating replica''' - ждем... | |||
+ Cluster: cspg (7330684258159679984) --------------------------+----+-----------+ | |||
| Member | Host | Role | State | TL | Lag in MB | | |||
+---------+------------------+---------+------------------------+----+-----------+ | |||
| pg1 | pg1.local.net | Leader | running | 5 | | | |||
| pg2 | pg2.local.net | Replica | '''creating replica''' | | unknown | | |||
+---------+------------------+---------+------------------------+----+-----------+ | |||
* Если ответ такой: | |||
+ Cluster: cs1pgpro (7330684258159679984) -------+----+-----------+ | |||
| Member | Host | Role | State | TL | Lag in MB | | |||
+---------+------------------+---------+---------+----+-----------+ | |||
| pg1 | pg1.local.net | Leader | running | 5 | | | |||
| pg2 | pg2.local.net | Replica | running | 5 | 0 | | |||
+---------+------------------+---------+---------+----+-----------+ | |||
- можно проводить операции по переключению или иное. | |||
=='''ДОКУМЕНТАЦИЯ'''== | |||
* [https://support.qbpro.ru/images/b/bb/Patroni-readthedocs-io-en-latest.pdf '''Patroni Documentation EN'''] |
Текущая версия от 19:43, 5 сентября 2024
БАЗОВЫЕ ОПЕРАЦИИ
- Перезапуск конфигурации на ноде:
patronictl -c /etc/patroni/config.yml restart имя-кластера имя-хоста (на котором перезапускаем)
- Вывести конфиг patroni:
patronictl -c /etc/patroni/config.yml show-config
- Редактировать конфиг patroni:
patronictl -c /etc/patroni/config.yml edit-config
- Посмотреть состояние кластера patroni:
patronictl -c /etc/patroni/config.yml list
РЕГЛАМЕНТНЫЕ ОПЕРАЦИИ
- Сменить Лидера для изменений настроек или иное:
patronictl -c /etc/patroni/config.yml failover
- - будет предложен список кандидатов, кто будет лидером, нужно ввести полное имя как в списке.
- Изменение конфигурации Patroni:
В Patroni есть 2 секции в конфигурации, первая отвечает за поведение самого patroni,
вторая это настройки Postgresql.
Секции:
bootstrap - (параметры при запуске Postgresql)
- Пример такого параметра в файле: /etc/patroni/config.yaml
... bootstrap: dcs: ttl: 100 loop_wait: 10 maximum_lag_on_failover: 1048576 master_start_timeout: 5 postgresql: use_pg_rewind: true use_slots: true parameters: max_connections: '260' wal_level: 'replica' wal_keep_segments: 1000 max_replication_slots: 5 max_wal_senders: 10 hot_standby: 'on' max_locks_per_transaction: 512 checkpoint_timeout: 15 ...
или секции:
pg_hba - (доступы на Postgresql)
- Пример такого параметра в файле: /etc/patroni/config.yaml
pg_hba: #Patroni host all all 0.0.0.0/0 md5 host postgres mylogin 0.0.0.0/24 md5 host all postgres 0.0.0.0/24 md5 host replication replicator 10.111.6.11/32 md5 host replication replicator 10.111.6.12/32 md5
- изменения для них вносятся сначала через:
patronictl -c /etc/patroni/config.yml edit-config
После изменений, при выходе конфигуратор спросит:
Принять изменения? Отвечаем Да.
- потом проверяем применение через:
patronictl -c /etc/patroni/config.yml show-config
- если вы вносите изменения через:
patronictl -c /etc/patroni/config.yml edit-config
то изменения применяются сразу всем участникам кластера!
Так же нужно понимать, что при перезагрузке сервиса Patroni на ноде, изменения не примутся, загрузится предыдущий файл конфигурации.
- Поэтому так же необходимо вносить изменения в /etc/patroni/config.yml
- если все прошло успешно, необходимо перезапустить обе ноды поочереди через:
systemctl restart patroni
- только после этого параметры уже будут в работе в самом Postgresql.
- Изменение конфигурации Postgresql в Patroni:
Если вы внесли изменения в ресурсы виртуального контейнера, то необходимо скорректировать настройки PostgresPro.
Для этого достаточно внести корректировки в /etc/patroni/config.yml, секции:
... postgresql: .... parameters: unix_socket_directories: '.' dynamic_shared_memory_type: 'posix' seq_page_cost: '0.1' superuser_reserved_connections: '2' huge_pages: 'off' track_io_timing: 'off' synchronous_commit: 'off' fsync: 'on' wal_sync_method: 'fdatasync' checkpoint_timeout: '15 min' random_page_cost: '0.1' cpu_operator_cost: '0.0025' logging_collector: 'on' log_timezone: 'Europe/Moscow' datestyle: 'iso, dmy' timezone: 'Europe/Moscow' lc_messages: 'ru_RU.UTF-8' lc_monetary: 'ru_RU.UTF-8' lc_numeric: 'ru_RU.UTF-8' lc_time: 'ru_RU.UTF-8' default_text_search_config: 'pg_catalog.russian' temp_buffers: '256 MB' max_files_per_process: '10000' commit_delay: '1000' from_collapse_limit: '8' join_collapse_limit: '8' autovacuum_max_workers: '2' vacuum_cost_limit: '200' autovacuum_naptime: '10s' autovacuum_vacuum_scale_factor: '0.01' autovacuum_analyze_scale_factor: '0.005' escape_string_warning: 'off' standard_conforming_strings: 'off' shared_preload_libraries: 'online_analyze, plantuner' online_analyze.threshold: '50' online_analyze.scale_factor: '0.1' online_analyze.enable: 'on' online_analyze.verbose: 'off' online_analyze.min_interval: '10000' online_analyze.table_type: 'temporary' plantuner.fix_empty_table: 'on' shared_buffers: '8192 MB' effective_cache_size: '23 GB' maintenance_work_mem: '420 MB' checkpoint_completion_target: '0.9' default_statistics_target: '500' effective_io_concurrency: '200' work_mem: '64 MB' min_wal_size: '5120 MB' max_wal_size: '10240 MB' wal_compression: 'on' wal_buffers: '16' wal_writer_delay: '200ms' wal_writer_flush_after: '1 MB' wal_keep_size: '22080 MB' bgwriter_delay: '200ms' bgwriter_lru_maxpages: '100' bgwriter_lru_multiplier: '2.0' bgwriter_flush_after: '0' max_worker_processes: '6' max_parallel_workers_per_gather: '3' max_parallel_workers: '6' max_parallel_maintenance_workers: '3' parallel_leader_participation: 'on' jit: 'on' max_slot_wal_keep_size: '1000 MB' maintenance_io_concurrency: '200' wal_recycle: 'on' ...
и перезагрузить сервис Patroni.
systemctl reload patroni
или перезапустить
systemctl restart patroni
РЕШЕНИЕ ПРОБЛЕМ
- ВНИМАНИЕ!!! - если идет реплика, ни в коем случае не трогать Leader!!
- Сначала смотрим состояние кластера Patroni:
patronictl -c /etc/patroni/config.yml list
- Если есть State: creating replica - ждем...
+ Cluster: cspg (7330684258159679984) --------------------------+----+-----------+ | Member | Host | Role | State | TL | Lag in MB | +---------+------------------+---------+------------------------+----+-----------+ | pg1 | pg1.local.net | Leader | running | 5 | | | pg2 | pg2.local.net | Replica | creating replica | | unknown | +---------+------------------+---------+------------------------+----+-----------+
- Если ответ такой:
+ Cluster: cs1pgpro (7330684258159679984) -------+----+-----------+ | Member | Host | Role | State | TL | Lag in MB | +---------+------------------+---------+---------+----+-----------+ | pg1 | pg1.local.net | Leader | running | 5 | | | pg2 | pg2.local.net | Replica | running | 5 | 0 | +---------+------------------+---------+---------+----+-----------+
- можно проводить операции по переключению или иное.