Конфигурационный файл patroni
Конфигурационный файл Patroni является центральным элементом, который задает настройки для управления кластером PostgreSQL с высокой доступностью. Он обычно представлен в формате YAML и включает параметры для взаимодействия с членами кластера, настройки репликации, подключения к DCS (Distributed Configuration Store), а также настройки для работы с сервисами, такими как etcd или Consul.
Основные секции конфигурационного файла Patroni:
scope
иname
:scope
: Имя кластера PostgreSQL. Все ноды в кластере должны иметь одинаковое имяscope
.name
: Уникальное имя для каждого экземпляра (ноды) Patroni. Обычно это имя сервера.
123scope: myclustername: postgresql0
restapi
:- Настройки для REST API, которое предоставляет Patroni для мониторинга состояния кластера, выполнения failover’ов и других операций. Оно используется для взаимодействия между нодами.
1234restapi:listen: 0.0.0.0:8008connect_address: 192.168.1.10:8008
- Настройки для REST API, которое предоставляет Patroni для мониторинга состояния кластера, выполнения failover’ов и других операций. Оно используется для взаимодействия между нодами.
etcd
или другой DCS (например, Consul):- Настройки для взаимодействия Patroni с распределенным хранилищем конфигураций (DCS). Здесь вы указываете, какой сервис используется для хранения состояния кластера и его конфигурации.
123etcd:hosts: 127.0.0.1:2379
- Настройки для взаимодействия Patroni с распределенным хранилищем конфигураций (DCS). Здесь вы указываете, какой сервис используется для хранения состояния кластера и его конфигурации.
postgresql
:- Это самая большая и важная секция, которая включает параметры для настройки самого PostgreSQL. Включает параметры подключения, настройки репликации и recovery.
Пример:
123456789101112131415161718postgresql:listen: 0.0.0.0:5432connect_address: 192.168.1.10:5432data_dir: /var/lib/postgresql/12/mainconfig_dir: /etc/postgresql/12/mainauthentication:replication:username: replicatorpassword: replpasswordsuperuser:username: postgrespassword: postgrespasswordparameters:max_connections: 100shared_buffers: 256MBwal_level: replicahot_standby: "on"authentication
: Настройки для пользователей PostgreSQL, таких как суперпользователь и репликатор.parameters
: Параметры конфигурации PostgreSQL (например,max_connections
,shared_buffers
).
bootstrap
:- Используется для инициализации новой ноды кластера. Это может включать создание суперпользователя и начальной базы данных.
Пример:
123456789101112131415161718bootstrap:dcs:ttl: 30loop_wait: 10retry_timeout: 10initdb:- encoding: UTF8- data-checksumspg_hba:- host replication replicator 127.0.0.1/32 md5- host all all 0.0.0.0/0 md5users:admin:password: adminpasswordoptions:- createrole- createdbpg_hba
: Настройки для файла pg_hba.conf, который контролирует доступ к базе данных.initdb
: Параметры инициализации новой базы данных.users
: Создание пользователей при инициализации.
tags
:- Теги, которые позволяют отмечать роли ноды в кластере, например, быть ли ноде кандидатом на роль мастера.
123456tags:nofailover: falsenoloadbalance: falseclonefrom: falsenosync: false
- Теги, которые позволяют отмечать роли ноды в кластере, например, быть ли ноде кандидатом на роль мастера.
Пример полного файла конфигурации:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
scope: mycluster name: postgresql0 restapi: listen: 0.0.0.0:8008 connect_address: 192.168.1.10:8008 etcd: hosts: 127.0.0.1:2379 postgresql: listen: 0.0.0.0:5432 connect_address: 192.168.1.10:5432 data_dir: /var/lib/postgresql/12/main config_dir: /etc/postgresql/12/main authentication: replication: username: replicator password: replpassword superuser: username: postgres password: postgrespassword parameters: max_connections: 100 shared_buffers: 256MB wal_level: replica hot_standby: "on" bootstrap: dcs: ttl: 30 loop_wait: 10 retry_timeout: 10 initdb: - encoding: UTF8 - data-checksums pg_hba: - host replication replicator 127.0.0.1/32 md5 - host all all 0.0.0.0/0 md5 users: admin: password: adminpassword options: - createrole - createdb tags: nofailover: false noloadbalance: false clonefrom: false nosync: false |
Как настроить конфигурацию:
- Настройка DCS: Это критически важно для Patroni. Вы должны указать корректные параметры для etcd, Consul или другого DCS.
- Репликация: Убедитесь, что пользователи для репликации правильно настроены, и файл
pg_hba.conf
разрешает репликацию. - Параметры PostgreSQL: Все параметры конфигурации PostgreSQL задаются в секции
postgresql.parameters
. Например, настройки для режима реплики, количества соединений и кэширования.
Использование Patroni с TLS:
Если вы хотите использовать TLS для защиты данных, передаваемых между нодами, вы можете добавить соответствующие сертификаты в конфигурацию PostgreSQL в Patroni:
1 2 3 4 5 6 |
postgresql: ssl: "on" ssl_cert_file: /path/to/server.crt ssl_key_file: /path/to/server.key ssl_ca_file: /path/to/ca.crt |
Конфигурационный файл Patroni — это гибкий инструмент для настройки и управления кластерами PostgreSQL с высокой доступностью.
Recommended Posts
Пояснение конфига для Pgbouncer
12.02.2024
Конфигурационный шаблон jinja2 для Patroni
11.02.2024