Реконфигурация Pangolin из standalone инсталляции в Pangolin Manager-кластер#
В данном разделе описан процесс реконфигурации СУБД Pangolin из standalone инсталляции в Pangolin Manager-кластер, а так же рассмотрено подключение к кластеру дополнительных реплик.
Процесс реконфигурации Pangolin#
Процесс состоит из следующих разделов:
Установка и настройка 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Дальнейшие действия удобнее выполнять под системным пользователем
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только при первом старте Pangolin Manager-кластера, поэтому их так же необходимо заполнить на основе текущих конфигурационных файлов 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