Реконфигурация Pangolin из standalone в кластерное решение
В данном разделе описан процесс реконфигурации СУБД Pangolin из standalone инсталляции в кластерное решение, а так же рассмотрено подключение к кластеру дополнительных реплик.
Процесс реконфигурации Pangolin
Процесс состоит из следующих разделов:
- Установка и настройка etcd.
- Установка Pangolin Manager.
- Подключение к кластеру дополнительных реплик.
- Завершающие действия.
Установка и настройка etcd
Необходимо устанавливать etcd той же версии, что устанавливается инсталлятором Pangolin. Узнать установленную версию etcd можно командой:
etcd --version
В кластерной конфигурации (Pangolin Manager+etcd) etcd устанавливается из стандартных репозиториев ОС. Все действия по установке etcd выполняются под системным пользователем root. Для установки и настройки etcd выполните шаги:
-
Проверьте наличие пакета etcd в репозиториях ОС:
root ~ % yum info etcd
Loaded plugins: product-id, search-disabled-repos
Available Packages
Name : etcd
Arch : x86_64
Version : 3.3.11
Release : 2.el7
Size : 10 M
Repo : rhel-7-server-extras-rpms
Summary : A highly-available key value store for shared configuration
URL : https://github.com/etcd-io/etcd
License : ASL 2.0
Description : A highly-available key value store for shared configuration. -
Установите пакет etcd. Пример команды установки:
root ~ % yum -y install etcd
-
Создайте конфигурационный файл для etcd. Файл будет создан в папке:
/etc/etcd/etcd.conf
:root ~ % install -m 644 <(cat <<EOF
ETCD_NAME="$(hostname -s)"
ETCD_LISTEN_CLIENT_URLS="http://<IP-адрес>:2379"
ETCD_ADVERTISE_CLIENT_URLS="http://$(hostname):2379"
ETCD_LISTEN_PEER_URLS="http://<IP-адрес>:2380"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://$(hostname):2380"
ETCD_INITIAL_CLUSTER_TOKEN="single"
ETCD_INITIAL_CLUSTER="$(hostname -s)=http://$(hostname):2380"
ETCD_INITIAL_CLUSTER_STATE="new"
ETCD_DATA_DIR="/var/lib/etcd"
ETCD_ELECTION_TIMEOUT="5000"
ETCD_HEARTBEAT_INTERVAL="1000"
ETCD_ENABLE_V2="true"
EOF) /etc/etcd/etcd.conf -
После создания конфигурационного файла etcd, проверьте что заданы параметры:
ETCD_NAME
ETCD_ADVERTISE_CLIENT_URLS
ETCD_INITIAL_ADVERTISE_PEER_URLS
ETCD_INITIAL_CLUSTERДля каждого узла etcd данные параметры будут уникальные.
-
Внесите правки в systemd-сервис для etcd. Создайте каталог:
root ~ % mkdir /usr/lib/systemd/system/etcd.service.d
-
Создайте файл с изменениями для systemd-сервиса:
root ~ % echo -e '[Service]\nExecStart=\nExecStart=/bin/bash -c "GOMAXPROCS=$(nproc) ionice -c2 -n0 /usr/bin/etcd"' > /usr/lib/systemd/system/etcd.service.d/override.conf
-
Перечитайте конфигурацию systemd после изменения сервиса:
root ~ % systemctl daemon-reload
-
Включите сервис для автоматического запуска etcd после перезагрузки ОС:
root ~ % systemctl enable etcd
-
Запустите etcd:
root ~ % systemctl start etcd
-
Проверьте корректность запуска и состояния сервиса:
root ~ % systemctl status etcd
etcd.service - Etcd Server
Loaded: loaded (/usr/lib/systemd/system/etcd.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2023-06-16 13:51:25 MSK; 1 months 3 days ago
Main PID: 7723 (etcd)
CGroup: /system.slice/etcd.service
└─7723 /usr/bin/etcd -
Проверьте состояние кластера etcd:
root ~ % health
member {хеш} is healthy: got healthy result from <Адрес сервера>
member {хеш} is healthy: got healthy result from <Адрес сервера>
member {хеш} is healthy: got healthy result from <Адрес сервера>
cluster is healthy -
Включите аутентификацию в etcd и добавьте необходимых пользователей и роли для работы Pangolin Manager:
root ~ % export ETCDCTL_API=2
root ~ % etcdctl user add root
root ~ % etcdctl user add patronietcd
root ~ % etcdctl role add patroni
root ~ % etcdctl role grant patroni -path '/service/*' -readwrite
root ~ % etcdctl user grant patronietcd -roles patroni
root ~ % etcdctl auth enable
Установка Pangolin Manager
В Pangolin Manager содержится часть доработок, поэтому устанавливать его следует из дистрибутива Pangolin.
В рамках инструкции дистрибутив Pangolin будет распакован в /tmp/pangolin_distr
.
Состав дистрибутива Pangolin описан в разделе «Состав дистрибутива».
Шаги для установки Pangolin Manager:
-
Установите пакет pangolin-manager:
sudo yum install pangolin-manager-venv
sudo yum install pangolin-manager -
Дальнейшие действия удобнее выполнять под системным пользователем
postgres
. Переключитесь на системного пользователяpostgres
:root ~ % su - postgres
-
Перейдите в каталог
/etc/pangolin-manager
:postgres ~ % cd /etc/pangolin-manager
-
Создайте скрипт, который будет использоваться Pangolin Manager при перезагрузке кластера для перезагрузки компонента Pangolin Pooler (reload):
postgres ~ % install -o postgres -g postgres -m 500 <(cat <<EOF
#!/bin/sh
sudo systemctl restart pangolin-pooler
EOF) /etc/pangolin-manager/reload_pangolin_pooler.sh -
При установке пакета pangolin-manager создается конфигурационный файл Pangolin Manager
/etc/pangolin-manager/postgres.yml
, содержащий значения переменных по умолчанию. -
Отредактируйте конфигурационный файл Pangolin Manager
/etc/pangolin-manager/postgres.yml
или используйте скрипт генерацииpostgres.yml
на основе уже существующих переменных окружения ($HOSTNAME
;$CLNAME
;$PGHOME
;$PGDATA
) системного пользователяpostgres
. Параметры СУБД необходимо перенести в конфигурационный файлpostgres.yml
вручную из уже существующихpg_hba.conf
иpostgresql.conf
(которые расположены в$PGDATA
) в соответствии с назначением секций конфигурационного файлаpostgres.yml
.Файл
postgres.yml
состоит из следующих блоков:restapi
– укажите настройки для доступа к API самого Pangolin Manager (hash пароля можно создать через командуpg_auth_password enc -t
);etcd
– укажите данные для доступа к etcd, пользователь:patronietcd
(был создан при настройке etcd) и пароль (захешировать можно черезpg_auth_password enc -t
);bootstrap
– параметры из данного блока записываются в etcd/<namespace>/<scope>/config
только при первом старте кластера, поэтому их так же необходимо заполнить на основе текущих конфигурационных файлов PostgreSQL;postgresql
– исправьте записи на основе конфигурационного файлаpostgresql.conf
;pg_hba
– исправьте записи на основе конфигурационного файлаpg_hba.conf
;tags
– оставьте без изменения, как в скрипте генерации, для обычного использования достаточно выставить все параметры блокаtags
вfalse
;scope
– необходимо указать имя кластера (cluster
), вname
имя текущего сервера (hostname
).
Скрипт генерации
postgres.yml
:postgres ~ % install -o postgres -g postgres -m 600 <(cat <<EOF
scope: $CLNAME
name: $HOSTNAME
restapi:
listen: <IP-адрес>:8008
connect_address: $HOSTNAME:8008
authentication:
username: patroniyml
password: HASH_PASSWORD_WRITE_HERE
etcd:
host: $HOSTNAME:2379
username: patronietcd
password: HASH_PASSWORD_WRITE_HERE
bootstrap:
dcs:
ttl: 130
retry_timeout: 60
loop_wait: 10
maximum_lag_on_failover: 1048576
synchronous_mode: true
synchronous_mode_strict: false
postgresql:
parameters:
max_connections: '45'
max_locks_per_transaction: '100'
max_worker_processes: '16'
max_prepared_transactions: '12'
wal_level: 'replica'
wal_log_hints: on
track_commit_timestamp: off
use_pg_rewind: true
use_slots: true
initdb:
- encoding: UTF8
- data-checksums
postgresql:
listen: <IP-адрес>:5433
bin_dir: $PGHOME/bin
connect_address: $HOSTNAME:5433
data_dir: $PGDATA
create_replica_methods:
- basebackup
basebackup:
format: plain
wal-method: fetch
authentication:
replication:
username: patroni
database: replication
superuser:
username: patroni
callbacks:
on_role_change: /etc/pangolin-manager/reload_pangolin_pooler.sh
parameters:
archive_mode: 'off'
archive_command: '/opt/pangolin-backup-tools/bin/pg_probackup archive-push -B /pgarclogs/$(echo $PGHOME | grep -o '[[:digit:].]*') --instance $CLNAME --wal-file-path=%p --wal-file-name=%f --compress --overwrite -j 4 --batch-size=100'
authentication_proxy: '1'
authentication_port: '5544'
auth_activity_period: '60'
archive_timeout: '180'
autovacuum_work_mem: '162MB'
checkpoint_completion_target: '0.9'
checkpoint_timeout: '1800'
#debug_print_parse: 'True'
#debug_print_rewritten: 'True'
#debug_print_plan: 'True'
default_statistics_target: '100' # by default
effective_cache_size: '3910MB'
effective_io_concurrency: '300' # set to 200 if SSD drives are used
fsync: 'on'
full_page_writes: 'on'
hot_standby: 'on'
hot_standby_feedback: 'on'
listen_addresses: '<IP-адрес>'
syslog_facility: 'LOCAL3'
syslog_ident: 'postgres'
syslog_sequence_numbers: 'on'
syslog_split_messages: 'off'
log_checkpoints: 'True'
log_connections: 'True'
log_destination: 'stderr'
log_directory: '/pgerrorlogs'
log_disconnections: 'True'
log_file_mode: 0644
log_filename: 'postgresql-%Y-%m-%d_%H%M%S.log'
log_line_prefix: '%t [%p]: [%l-1] app=%a,user=%u,db=%d,client=%h '
log_lock_waits: 'on'
log_min_duration_statement: '5000'
log_min_error_statement: 'WARNING'
log_replication_commands: 'on'
log_rotation_age: '1440'
log_rotation_size: '100MB'
log_statement: 'none'
log_temp_files: '0'
log_truncate_on_rotation: 'True'
logging_collector: 'True'
client_min_messages: 'notice'
log_timezone: 'Europe/Moscow'
datestyle: 'iso, mdy'
timezone: 'Europe/Moscow'
lc_messages: 'en_US.utf8'
lc_monetary: 'en_US.utf8'
lc_numeric: 'en_US.utf8'
lc_time: 'en_US.utf8'
default_text_search_config: 'pg_catalog.english'
maintenance_work_mem: '325MB'
max_parallel_workers: '4'
max_parallel_workers_per_gather: '2'
max_replication_slots: '10'
max_standby_archive_delay: '30s'
max_standby_streaming_delay: '30s'
max_wal_senders: '10'
max_wal_size: '4GB'
min_wal_size: '2GB'
monitoring_ldap_servers: '^ldap-address.server.local$'
pgaudit.log: 'ddl, role, connection, misc_set'
password_encryption: 'scram-sha-256'
password_policy.deny_default: 'off'
password_policy.reuse_time: '365 days'
password_policy.in_history: '4'
password_policy.max_age: '0'
password_policy.min_age: '0'
password_policy.grace_login_limit: '0'
password_policy.grace_login_time_limit: '3 days'
password_policy.expire_warning: '7 days'
password_policy.lockout: 'on'
password_policy.lockout_duration: '24 hours'
password_policy.max_failure: '6'
password_policy.failure_count_interval: '0'
password_policy.check_syntax: 'on'
password_policy.min_length: '16'
password_policy.min_length: '16'
password_policy.illegal_values: 'on'
password_policy.alpha_numeric: '3'
password_policy.min_alpha_chars: '0'
password_policy.min_special_chars: '1'
password_policy.min_uppercase: '1'
password_policy.min_lowercase: '0'
password_policy.max_rpt_chars: '0'
password_policy.track_login: 'off'
password_policy.max_inactivity: '0'
password_policy.use_password_strength_estimator: 'on'
password_policy.password_strength_estimator_score: '3'
password_policy.deduplicate_ssl_no_ssl_fail_auth_attepmts: 'on'
password_policy.allow_hashed_password: 'off'
psql_encrypt_password: 'on'
password_policies_enable: 'on'
pg_hint_plan.parse_messages: 'warning'
pg_hint_plan.debug_print: 'off'
pg_hint_plan.message_level: 'debug'
cron.database_name: 'postgres'
cron.max_running_jobs: '3'
installer.cluster_type: 'standalone-patroni-etcd-pgbouncer'
port: '5433'
random_page_cost: '2.0'
search_path: 'ext'
shared_buffers: '4GB'
shared_preload_libraries: 'auto_explain,pg_stat_statements,pg_cron,pg_hint_plan,pg_pathman'
superuser_reserved_connections: '4'
synchronous_commit: 'on'
unix_socket_directories: '/var/run/postgresql/'
wal_buffers: '16MB'
wal_keep_segments: '500'
wal_receiver_status_interval: '1s'
wal_sync_method: 'fsync'
work_mem: '16384kB'
ssl: 'on'
ssl_cert_file: /home/postgres/ssl/$(hostname -s).crt
ssl_key_file: /home/postgres/ssl/$(hostname -s).key
ssl_ca_file: /home/postgres/ssl/root.crt
is_tde_on: 'off'
pg_hba:
- hostssl all postgres 127.0.0.1/32 cert
- hostssl all postgres $PGHOST/32 cert
- host all patroni 127.0.0.1/32 scram-sha-256
- host all patroni $PGHOST/32 scram-sha-256
- host replication patroni 127.0.0.1/32 scram-sha-256
- host replication patroni $PGHOST/32 scram-sha-256
tags:
nofailover: false
noloadbalance: false
clonefrom: false
nosync: false
EOF) /etc/pangolin-manager/postgres.yml -
Создайте пользователя для работы репликации в СУБД Pangolin с паролем согласно парольной политике:
CREATE USER patroni WITH ENCRYPTED PASSWORD 'PASSWORD_WRITE_HERE';
Парольная политика по умолчанию:
- длина 16 символов;
- минимум 3 цифры;
- минимум 1 спецсимвол;
- минимум 1 заглавная буква.
-
Отключите срок действия пароля и выставьте лимит подключений:
ALTER ROLE patroni LOGIN SUPERUSER REPLICATION VALID UNTIL 'infinity' CONNECTION LIMIT 5;
-
Добавьте пользователей, созданных в предыдущем пункте, в криптохранилище Pangolin:
postgres ~ % pg_auth_config add -h $HOSTNAME -p 5433 -U patroni -d postgres
postgres ~ % pg_auth_config add -h $HOSTNAME -p 5433 -U patroni -d replication
postgres ~ % pg_auth_config add -h localhost -p 5433 -U patroni -d postgres
postgres ~ % pg_auth_config add -h localhost -p 5433 -U patroni -d replication -
Для репликации и корректной работы Pangolin Manager необходимо добавить дополнительные правила в
pg_hba.conf
:postgres ~ % cat >> $PGDATA/pg_hba.conf <<EOF
host all patroni 127.0.0.1/32 scram-sha-256
host all patroni $PGHOST/32 scram-sha-256
host replication patroni 127.0.0.1/32 scram-sha-256
host replication patroni $PGHOST/32 scram-sha-256
EOF -
Выполните перезагрузку (reload) Pangolin:
postgres ~ % psql -c 'SELECT pg_reload_conf()'
-
Включите сервис Pangolin Manager (под системным пользователем root) для автоматического запуска после перезагрузки ОС:
root ~ % systemctl enable pangolin-manager
-
Запустите сервис:
root ~ % systemctl start pangolin-manager
-
Проверьте корректность запуска и состояния сервиса:
root ~ $ sudo systemctl status pangolin-manager
pangolin-manager.service - Runners to orchestrate a high-availability PostgreSQL
Loaded: loaded (/usr/lib/systemd/system/pangolin-manager.service; disabled; vendor preset: disabled)
Active: active (running) since Tue 2023-12-12 01:00:31 MSK; 1 day 11h ago
Process: 521932 ExecStartPre=/bin/chown -R postgres:postgres /var/run/pangolin-dbms (code=exited, status=0/SUCCESS)
Process: 521930 ExecStartPre=/bin/mkdir -p /var/run/pangolin-dbms (code=exited, status=0/SUCCESS)
Process: 521929 ExecStartPre=/bin/chown -R postgres:postgres /var/run/postgresql (code=exited, status=0/SUCCESS)
Process: 521927 ExecStartPre=/bin/mkdir -p /var/run/postgresql (code=exited, status=0/SUCCESS)
Main PID: 521935 (pangolin-manage)
Tasks: 47 (limit: 50662)
Memory: 2.8G
CGroup: /system.slice/pangolin-manager.service
├─521935 /opt/pangolin-manager/bin/pangolin-manager-bin/pangolin-manager.bin /etc/pangolin-manager/postgres.yml
├─521956 /opt/pangolin/bin/postgres -D /pgdata/06/data/ --config-file=/pgdata/06/data/postgresql.conf --listen_addresses=<IP-адрес> --port=5433 --cluster_name=clustername --wal_level=replica --hot_standby=on --max_connections=110 --max_wal_sen>
├─521962 postgres: clustername: logger
├─521963 postgres: clustername: checkpointer
├─521964 postgres: clustername: background writer
├─521966 postgres: clustername: idle sessions terminator
├─521967 postgres: clustername: password policy cache
├─521968 postgres: clustername: performance insights
├─521970 postgres: clustername: authproc
├─521971 postgres: clustername: license checker
├─521982 postgres: clustername: patroni postgres 127.0.0.1(51650) idle
├─523949 postgres: clustername: walwriter
├─523950 postgres: clustername: autovacuum launcher
├─523951 postgres: clustername: autounite launcher
├─523952 postgres: clustername: pg_cron launcher
├─523953 postgres: clustername: file system checker
├─523954 postgres: clustername: logical replication launcher
└─558349 postgres: clustername: walsender patroni <IP-адрес>(52080) streaming 0/D4000000 -
При первом запуске Pangolin Manager должен определить запущенный экземпляр СУБД Pangolin и создать конфигурацию в etcd. Пример конфигурации в etcd:
root ~ % etcdctl -u root:ENTER_PASSWORD_HERE ls -r /
Password:
/service
/service/clustername
/service/clustername/config
/service/clustername/status
/service/clustername/members
/service/clustername/members/srv-0-1
/service/clustername/initialize
/service/clustername/leader
Добавление реплики в существующий кластер etcd
Процесс добавления новых реплик в существующий кластер можно разделить на этапы:
- установка etcd на реплике (как в разделе «Установка и настройка etcd»);
- установка Pangolin Manager на реплике (как в разделе «Установка Pangolin Manager»);
- добавление реплики в существующий кластер etcd;
- подготовка конфигурации и запуск Pangolin Manager на реплике;
- проверка.
Добавление новых узлов в кластер предполагает наличие на них:
- СУБД Pangolin;
- Pangolin Manager;
- etcd.
Для включения узла в существующий кластер необходимо на этот узел установить и сконфигурировать etcd:
-
На узле master переведите Pangolin Manager в maintenance mode (под системным пользователем
postgres
):postgres ~ % pangolin-manager-ctl -c /etc/pangolin-manager/postgres.yml pause $CLNAME
-
Проверьте состояние кластера — должно быть
Maintenance mode: on
:postgres ~ % pangolin-manager-ctl -c /etc/pangolin-manager/postgres.yml list
+ Cluster: testcl ({ID})+-------------------------+--------------+---------+----+-----------+
| Member | Host | Role | State | TL | Lag in MB |
+-----------------------+-------------------------+--------------+---------+----+-----------+
| srv-0-1 | srv-0-1:5433 | Leader | running | 3 | |
+-----------------------+-------------------------+--------------+---------+----+-----------+
Maintenance mode: on -
Если etcd был уже запущен ранее, необходимо его остановить, удалить старые данные и привести конфигурационный файл
/etc/etcd/etcd.conf
к виду, как указано в разделе «Установка и настройка etcd». Остановите сервис:root ~ % systemctl stop etcd
-
Удалите старые данные:
root ~ % rm -rf /var/lib/etcd/*
-
Добавьте новый узел в конфигурацию etcd (выполнять можно на любом узле, под любым пользователем):
root ~ % ETCDCTL_API=2 etcdctl -u root:ENTER_PASSWORD_HERE member add srv-02 http://srv-02:2380
Added member named srv-02 with ID {ID} to cluster
ETCD_NAME="srv-02"
ETCD_INITIAL_CLUSTER="srv-01=http://srv-01:2380,srv-02=http://srv-02:2380"
ETCD_INITIAL_CLUSTER_STATE="existing"ПодсказкаИмена серверов srv-01 и srv-02 используются в качестве примера.
-
Далее, на новом узле, в конфигурационном файле
/etc/etcd/etcd.conf
необходимо исправить переменныеETCD_NAME
;ETCD_INITIAL_CLUSTER
;ETCD_INITIAL_CLUSTER_STATE
(/etc/etcd/etcd.conf
) на актуальные. Запустите etcd на реплике (под системным пользователем root):root ~ % systemctl start etcd
-
Проверьте корректность запуска и состояния сервиса:
root ~ % systemctl status etcd
etcd.service - Etcd Server
Loaded: loaded (/usr/lib/systemd/system/etcd.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2023-06-16 13:51:25 MSK; 1 months 3 days ago
Main PID: 7723 (etcd)
CGroup: /system.slice/etcd.service
└─7723 /usr/bin/etcd -
Проверьте состояние кластера etcd:
root ~ % health
member {ID} is healthy: got healthy result from <Адрес сервера>
member {ID} is healthy: got healthy result from <Адрес сервера>
member {ID} is healthy: got healthy result from <Адрес сервера>
cluster is healthy -
Проверьте включение нового сервера в существующий кластер etcd:
root ~ % etcdctl member list
{ID}: name=srv-01 peerURLs=http://srv-01:2380 clientURLs=http://srv-01:2379 isLeader=true
{ID}: name=srv-02 peerURLs=http://srv-02:2380 clientURLs=http://srv-02:2379 isLeader=falseИмена серверов srv-01 и srv-02 используются в качестве примера.
Подготовка конфигурации и запуск Pangolin Manager на реплике
После установки Pangolin Manager необходимо провести дополнительное конфигурирование:
- удалить старые данные БД;
- конфигурационный файл
/etc/pangoln-manager/postgres.yml
привести к виду как указано в разделе «Установка Pangolin Manager».
Операция деструктивная, необходимо убедиться — на правильном ли сервере выполняется команда!
На остановленном Pangolin Manager выполните следующие действия:
-
Остановите сервис:
root ~ % systemctl stop pangoln-manager
-
Для удаления старых данных (под системным пользователем
postgres
), необходимо определить, где располагаются каталогиdata
иtablespaces
:postgres ~ % echo $PGDATA
/pgdata/06/data -
Очистите данные:
postgres ~ % rm -rf /pgdata/06/data/*
postgres ~ % rm -rf /pgdata/06/tablespaces/*/pgdata/06
представлена в качестве примера, в реальности путь до каталоговdata
иtablespaces
может быть другим. -
В секции
scope
конфигурационного файла (/etc/pangoln-manager/postgres.yml
) укажите корректное имя существующего кластера, к которому будет подключаться реплика. -
Запустите сервис Pangolin Manager (под системным пользователем root):
root ~ % systemctl start pangoln-manager
-
Проверьте корректность запуска и состояния сервиса:
root ~ $ sudo systemctl status pangolin-manager
pangolin-manager.service - Runners to orchestrate a high-availability PostgreSQL
Loaded: loaded (/usr/lib/systemd/system/pangolin-manager.service; disabled; vendor preset: disabled)
Active: active (running) since Wed 2023-12-13 12:53:02 MSK; 2min 6s ago
Process: 1394802 ExecStartPre=/bin/chown -R postgres:postgres /var/run/pangolin-dbms (code=exited, status=0/SUCCESS)
Process: 1394800 ExecStartPre=/bin/mkdir -p /var/run/pangolin-dbms (code=exited, status=0/SUCCESS)
Process: 1394798 ExecStartPre=/bin/chown -R postgres:postgres /var/run/postgresql (code=exited, status=0/SUCCESS)
Process: 1394796 ExecStartPre=/bin/mkdir -p /var/run/postgresql (code=exited, status=0/SUCCESS)
Main PID: 1394804 (pangolin-manage)
Tasks: 18 (limit: 50662)
Memory: 3.5G
CGroup: /system.slice/pangolin-manager.service
├─1394804 /opt/pangolin-manager/bin/pangolin-manager-bin/pangolin-manager.bin /etc/pangolin-manager/postgres.yml
├─1394834 /opt/pangolin/bin/postgres -D /pgdata/06/data/ --config-file=/pgdata/06/data/postgresql.conf --listen_addresses=<IP-адрес> --port=5433 --cluster_name=clustername --wal_level=replica --hot_standby=on --max_connections=110 --max_wal_se>
├─1394840 postgres: clustername: logger
├─1394841 postgres: clustername: checkpointer
├─1394842 postgres: clustername: background writer
├─1394843 postgres: clustername: startup recovering
├─1394844 postgres: clustername: idle sessions terminator
├─1394845 postgres: clustername: authproc
├─1394846 postgres: clustername: password policy cache
├─1394847 postgres: clustername: performance insights
├─1394848 postgres: clustername: walreceiver
├─1394849 postgres: clustername: license checker
└─1394857 postgres: clustername: patroni postgres 127.0.0.1(55440) idle -
Проверьте, появилась ли в etcd запись для добавляемой реплики:
root ~ % etcdctl -u root:ENTER_PASSWORD_HERE ls /service/clustername/members
Password:
/service/clustername/members/srv-01
/service/clustername/members/srv-02 -
Проверьте корректность включения реплики в кластер:
root ~ % etcdctl member list
{ID}: name=srv-01 peerURLs=http://srv-01:2380 clientURLs=http://srv-01:2379 isLeader=true
{ID}: name=srv-02 peerURLs=http://srv-02:2380 clientURLs=http://srv-02:2379 isLeader=false