Patroni - управление: различия между версиями

Материал из support.qbpro.ru
 
(не показано 5 промежуточных версий этого же участника)
Строка 9: Строка 9:
  patronictl -c /etc/patroni/config.yml list
  patronictl -c /etc/patroni/config.yml list
=='''РЕГЛАМЕНТНЫЕ ОПЕРАЦИИ'''==
=='''РЕГЛАМЕНТНЫЕ ОПЕРАЦИИ'''==
<br>
* '''Сменить Лидера для изменений настроек или иное:'''
* '''Сменить Лидера для изменений настроек или иное:'''
  patronictl -c /etc/patroni/config.yml failover
  patronictl -c /etc/patroni/config.yml failover
Строка 17: Строка 16:
В '''Patroni''' есть 2 секции в конфигурации, первая отвечает за поведение самого '''patroni''',<br>  
В '''Patroni''' есть 2 секции в конфигурации, первая отвечает за поведение самого '''patroni''',<br>  
вторая это настройки '''Postgresql'''.<br>
вторая это настройки '''Postgresql'''.<br>
Изменения поведения Patroni можно проводить не перегружая весь кластер, достаточно внести изменения и принять их:
Секции:<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 edit-config
После изменений, при выходе конфигуратор спросит: Принять изменения? Отвечаем Да.<br>
После изменений, при выходе конфигуратор спросит:  
Но нужно понимать, что при перезагрузке всего сервиса Patroni, изменения не примутся, загрузится предыдущий файл конфигурации.<br>
'''Принять изменения?''' Отвечаем '''Да'''.
Поэтому так же необходимо вносить изменения в /etc/patroni/config.yml
- потом проверяем применение через:
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>
* '''Изменение конфигурации Postgresql в Patroni''':<br>
Строка 128: Строка 170:


=='''ДОКУМЕНТАЦИЯ'''==
=='''ДОКУМЕНТАЦИЯ'''==
* [http://devops.core.int:8080/images/b/bb/Patroni-readthedocs-io-en-latest.pdf '''Patroni Documentation EN''']
* [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 |
+---------+------------------+---------+---------+----+-----------+

- можно проводить операции по переключению или иное.

ДОКУМЕНТАЦИЯ