Настройки Patroni задаются в формате YAML через конфигурационный файл /etc/patroni.yml. Его можно открыть на редактирование, например, с помощью приложения nano:
nano /etc/patroni.yml
Чтобы настроить Patroni:
1.На сервере patroni1 укажите настройки в конфигурационном файле /etc/patroni.yml.
Далее в примерах вместо значений, выделенных жирным шрифтом, укажите свои значения:
scope: postgres
namespace: /db/
name: pg01
restapi:
listen: <patroni1IP>:8008
connect_address: <patroni1IP>:8008
authentication:
username: "<username>"
password: "<password>"
# Настройки etcd с версией API 2
#etcd:
# hosts: <BC1IP>:2379,<BC2IP>:2379,<BC3IP>:2379
# Настройки etcd с версией API 3
etcd3:
hosts:
- <BC1IP>:2379
- <BC2IP>:2379
- <BC3IP>:2379
bootstrap:
dcs:
ttl: 30
loop_wait: 10
retry_timeout: 10
maximum_lag_on_failover: 1048576
postgresql:
use_pg_rewind: true
use_slots: true
parameters:
wal_level: replica
hot_standby: "on"
wal_keep_segments: 8
max_wal_senders: 5
max_replication_slots: 5
checkpoint_timeout: 30
max_connections: 150
max_prepared_transactions: 150
max_worker_processes: 8
initdb:
- encoding: UTF8
- data-checksums
pg_hba:
- host replication replicator 127.0.0.1/32 md5
- host replication replicator <patroni1IP>/32 md5
- host replication replicator <patroni2IP>/32 md5
- host all all 0.0.0.0/0 md5
users:
# Пользователь, который будет создан при старте кластера
<admin>:
password: <password>
options:
- createrole
- createdb
## - superuser
postgresql:
listen: <patroni1IP>:5432
connect_address: <patroni1IP>:5432
data_dir: /data/patroni
pgpass: /tmp/pgpass
authentication:
replication:
username: replicator
password: <rep-pass>
superuser:
username: postgres
# Пароль пользователя postgres
password: <secretpassword>
parameters:
unix_socket_directories: '/var/run/postgresql'
log_destination: 'stderr'
logging_collector: on
log_directory: 'pg_log'
log_filename: 'postgresql.log'
log_truncate_on_rotation: on
log_rotation_age: 1d
log_rotation_size: 0
log_min_duration_statement: 3000
log_line_prefix: '%t [%p-%l] %q%u@%d '
log_autovacuum_min_duration: 3000
tags:
nofailover: false
noloadbalance: false
clonefrom: false
nosync: false
2.На сервере patroni2 укажите настройки в конфигурационном файле /etc/patroni.yml:
scope: postgres
namespace: /db/
name: pg02
restapi:
listen: <patroni2IP>:8008
connect_address: <patroni2IP>:8008
authentication:
username: "<username>"
password: "<password>"
# Настройки etcd с версией API 2
#etcd:
# hosts: <BC1IP>:2379,<BC2IP>:2379,<BC3IP>:2379
# Настройки etcd с версией API 3
etcd3:
hosts:
- <BC1IP>:2379
- <BC2IP>:2379
- <BC3IP>:2379
bootstrap:
dcs:
ttl: 30
loop_wait: 10
retry_timeout: 10
maximum_lag_on_failover: 1048576
postgresql:
use_pg_rewind: true
use_slots: true
parameters:
wal_level: replica
hot_standby: "on"
wal_keep_segments: 8
max_wal_senders: 5
max_replication_slots: 5
checkpoint_timeout: 30
max_connections: 150
max_prepared_transactions: 150
max_worker_processes: 8
initdb:
- encoding: UTF8
- data-checksums
pg_hba:
- host replication replicator 127.0.0.1/32 md5
- host replication replicator <patroni1IP>/32 md5
- host replication replicator <patroni2IP>/32 md5
- host all all 0.0.0.0/0 md5
users:
# Пользователь, который будет создан при старте кластера
<admin>:
password: <password>
options:
- createrole
- createdb
## - superuser
postgresql:
listen: <patroni2IP>:5432
connect_address: <patroni2IP>:5432
data_dir: /data/patroni
pgpass: /tmp/pgpass
authentication:
replication:
username: replicator
password: <rep-pass>
superuser:
username: postgres
# Пароль пользователя postgres
password: <secretpassword>
parameters:
unix_socket_directories: '/var/run/postgresql'
log_destination: 'stderr'
logging_collector: on
log_directory: 'pg_log'
log_filename: 'postgresql.log'
log_truncate_on_rotation: on
log_rotation_age: 1d
log_rotation_size: 0
log_min_duration_statement: 3000
log_line_prefix: '%t [%p-%l] %q%u@%d '
log_autovacuum_min_duration: 3000
tags:
nofailover: false
noloadbalance: false
clonefrom: false
nosync: false
3.Создайте папку для хранения данных Patroni и выдайте на нее права пользователю postgres. Для этого выполните команды:
mkdir -p /data/patroni
chown postgres:postgres /data/patroni
chmod 700 /data/patroni
Установка сервиса Patroni
Если Patroni был установлен с помощью pip3, то после указанной выше настройки создайте сервис Patroni. Для этого:
1.Откройте на редактирование конфигурационный файл patroni.service:
nano /etc/systemd/system/patroni.service
2.Заполните конфигурационный файл:
[Unit]
Description=High availability PostgreSQL Cluster
After=syslog.target network.target
[Service]
Type=simple
User=postgres
Group=postgres
ExecStart=/usr/local/bin/patroni /etc/patroni.yml
KillMode=process
TimeoutSec=30
Restart=no
[Install]
WantedBy=multi-user.target
3.Сохраните и закройте файл, затем перезагрузите процесс systemd с помощью команды:
systemctl daemon-reload
© Компания Directum, 2024 |