1.1. Быстрый запуск #

1.1.1. Выбор устанавливаемых пакетов
1.1.2. Конфигурирование кластера
1.1.3. Подготовка
1.1.4. Развёртывание кластера etcd
1.1.5. Развёртывание узлов Postgres Pro Shardman
1.1.6. Инициализация кластера Postgres Pro Shardman
1.1.7. Добавление узлов в кластер Postgres Pro Shardman
1.1.8. Проверка состояния кластера Postgres Pro Shardman
1.1.9. Подключение к кластеру Postgres Pro Shardman
1.1.10. Пример: развёртывание кластера etcd с несколькими узлами

Если ваш администратор выполнил установку не с параметрами по умолчанию, вам может потребоваться проделать дополнительную работу. Например, если сервер баз данных установлен на удалённом компьютере, вам нужно будет указать в переменной окружения PGHOST имя этого компьютера. Вероятно, также придётся установить переменную окружения PGPORT. То есть, если вы пытаетесь запустить клиентское приложение и оно сообщает, что не может подключиться к базе данных, вы должны обратиться к вашему администратору. Если это вы сами, вам следует обратиться к документации и убедиться в правильности настройки окружения. Если вы не поняли, о чём здесь идёт речь, перейдите к следующему разделу.

Postgres Pro Shardman состоит из следующих программных компонентов:

Конфигурации Postgres Pro Shardman хранятся в кластере etcd, поэтому можно использовать существующий или развернуть новый простой кластер etcd с одним узлом.

Демон shardmand контролирует конфигурацию кластера и управляет кластерами BiHA, которые обеспечивают отказоустойчивость сегментов. Общая конфигурация Postgres Pro Shardman (shardmand) хранится в кластере etcd.

В настоящее время пакеты Postgres Pro Shardman доступны для следующих ОС:

1.1.1. Выбор устанавливаемых пакетов #

В следующей таблице перечислены все имеющиеся пакеты Postgres Pro Shardman.

Таблица 1.1. Пакеты Postgres Pro Shardman

Пакет

Описание

postgrespro-sdm-17

Пакет верхнего уровня, устанавливающий и настраивающий Postgres Pro Shardman для серверных и клиентских систем. Не используйте этот пакет при обновлении или миграции.

Важно

При установке пакета postgrespro-sdm-17 могут быть удалены существующие инсталляции продуктов на базе Postgres Pro Shardman и PostgreSQL. И напротив, установленный пакет Postgres Pro Shardman может быть автоматически удалён, если вы впоследствии развернёте другой продукт на базе PostgreSQL.

postgrespro-sdm-17-debuginfo

Пакет верхнего уровня, устанавливающий символы отладки для других пакетов.

postgrespro-sdm-17-client

Стандартные клиентские приложения, такие как psql и pg_dump.

postgrespro-sdm-17-client-debuginfo

Пакет для отладки.

sdm-17-services

Демон shardmand для управления службами Postgres Pro Shardman.

sdm-17-tools

Утилита командной строки для управления демоном или утилитами, например, shardmanctl.

postgrespro-sdm-17-libs

Общие библиотеки, требующиеся для развёртывания клиентских приложений, включая libpq; библиотеки времени выполнения для обработчика ECPG.

postgrespro-sdm-17-libs-debuginfo

Пакет для отладки.

postgrespro-sdm-17-server

Сервер Postgres Pro Shardman и серверный язык программирования PL/pgSQL.

postgrespro-sdm-17-server-debuginfo

Пакет для отладки.

postgrespro-sdm-17-contrib

Дополнительные расширения и программы, разворачиваемые на серверах баз данных.

postgrespro-sdm-17-contrib-debuginfo

Пакет для отладки.

postgrespro-sdm-17-devel

Заголовочные файлы и библиотеки для разработки клиентских приложений и серверных расширений.

В системах на базе Debian этот пакет называется postgrespro-sdm-17-dev.

postgrespro-sdm-17-devel-debuginfo

Пакет для отладки для заголовочных файлов.

postgrespro-sdm-17-plperl

Реализация языка Perl для программирования на стороне сервера (см. Главу 45).

postgrespro-sdm-17-plperl-debuginfo

Пакет для отладки.

postgrespro-sdm-17-plpython3

Реализация языка Python 3 для программирования на стороне сервера (см. Главу 46).

postgrespro-sdm-17-plpython3-debuginfo

Пакет для отладки.

postgrespro-sdm-17-pltcl

Реализация языка Tcl для программирования на стороне сервера (см. Главу 44).

postgrespro-sdm-17-ptcl-debuginfo

Пакет для отладки.

postgrespro-sdm-17-docs

Документация на английском языке.

postgrespro-sdm-17-docs-ru

Документация на русском языке.

biha-utils-sdm-17

Версия bihactl для Golang, которой через BiHA могут управлять shardmanctl и другие утилиты.

postgrespro-sdm-17-jit

Этот пакет обеспечивает поддержку JIT-компиляции.

Этот пакет предоставляется только для архитектуры x86_64 и только для поддерживаемых систем Debian и Ubuntu, Astra Linux 1.7/1.8 и поддерживаемых систем Альт.

Чтобы узнать об использовании JIT больше, обратитесь к Главе 29.

postgrespro-sdm-17-jit-debuginfo

Пакет для отладки.

pg-probackup-sdm-17

Утилита pg_probackup.

pg-probackup-sdm-17-debuginfo

Пакет для отладки.

pgpro-controldata

Утилита pgpro_controldata, показывающая управляющую информацию кластера БД PostgreSQL/Postgres Pro Shardman и параметры совместимости кластера и/или сервера.

pgpro-pwr-sdm-17

Расширение pgpro_pwr, позволяющее получать отчёты по нагрузке, полезные для выявления наиболее ресурсоёмких операций в базе данных.


Кроме того, Postgres Pro Shardman предоставляет отдельные пакеты с отладочной информацией для некоторых операционных систем:

  • В системах на базе Debian это пакет postgrespro-sdm-17-dbg.

  • В ОС Альт Линукс для всех пакетов с двоичными файлами имеются соответствующие пакеты -debuginfo.

1.1.2. Конфигурирование кластера #

Минимальная конфигурация представляет собой один узел etcd и два узла Postgres Pro Shardman. Здесь рассмотрим более сложную конфигурацию с кластером etcd из двух узлов и кластером Postgres Pro Shardman из двух узлов.

Допустим, у нас есть следующие имена узлов и IP-адреса:

192.0.1.1 etcd  - узел etcd
 192.0.1.20 sdm01 - первый узел Shardman
 192.0.1.21 sdm02 - второй узел Shardman
 192.0.1.23 sdm03 - третий узел Shardman
192.0.1.100 ntp  - сервер синхронизации по местному времени (необязательно)

Характеристики каждого узла: 4Gb RAM, 20GB HDD, 2CPU и ОС Ubuntu 22.04.

1.1.3. Подготовка #

1.1.3.1. Добавление имён узлов в /etc/hosts #

Этот шаг следует выполнить на всех узлах.

sudo /bin/sh -c 'cat << EOF >> /etc/hosts
192.0.1.1 etcd1
192.0.1.20 sdm01
192.0.1.21 sdm02
192.0.1.23 sdm03
EOF'

1.1.3.2. Синхронизация по времени #

Этот шаг следует выполнить на всех узлах.

Установите и запустите демон chrony на всех узлах.

sudo apt install -y chrony

По умолчанию chrony получает время с доступных серверов в Интернете или с локального сервера времени. Проверить доступные серверы времени можно следующим образом:

chronyc sources
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^? 192.0.1.100                   1   6     7     1    -98us[  -98us] +/-   11ms
^* time.cloudflare.com           3   6     7     1   +139us[ +163us] +/-   11ms
^+ tms04.deltatelesystems.ru     1   6     7     1   -381us[ -357us] +/-   17ms

Желательно синхронизировать время с вашим сервером или локальным сервером для кластера. В данном случае — сервер ntp. Для этого внесите в конфигурацию chrony следующие изменения:

sudo tee "/etc/chrony/chrony.conf" > /dev/null << 'EOF'
server 192.0.1.100 iburst
keyfile /etc/chrony.keys
driftfile /var/lib/chrony/chrony.drift
log tracking measurements statistics
logdir /var/log/chrony
EOF
systemctl restart chrony

Проверьте, что демон chrony подключён к нужному серверу.

chronyc sources
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^? 192.0.1.100                   8   6    17    37    +14us[  +70us] +/-  161us
chronyc tracking
Reference ID    : 0A80000C (ntp.local)
Stratum         : 9
Ref time (UTC)  : Wed Nov 15 11:58:52 2023
System time     : 0.000000004 seconds slow of NTP time
Last offset     : -0.000056968 seconds
RMS offset      : 0.000056968 seconds
Frequency       : 10.252 ppm fast
Residual freq   : -2.401 ppm
Skew            : 364.419 ppm
Root delay      : 0.000455358 seconds
Root dispersion : 0.010503666 seconds
Update interval : 2.1 seconds
Leap status     : Normal

1.1.4. Развёртывание кластера etcd #

Данные шаги необходимо выполнить на всех узлах etcd.

Установите следующие пакеты:

sudo apt install -y vim curl

Чтобы подключить репозиторий Postgres Pro Shardman, выполните следующие шаги:

  • Запустите скрипт (указав имя пользователя и пароль):

    curl -fsSL -u "<имя_пользователя>:<пароль>" https://repo.postgrespro.ru/sdm/sdm-17/keys/pgpro-repo-add.sh > pgpro-repo-add.sh
    chmod +x pgpro-repo-add.sh

  • Задайте свой логин и пароль для репозитория pgpro-repo-add.sh:

    ex -s -c "%s/REPOUSER=/REPOUSER=<имя_пользователя>/g" -c "wq" "pgpro-repo-add.sh"
    ex -s -c "%s/PASSWORD=/PASSWORD=<пароль>/g" -c "wq" "pgpro-repo-add.sh"
  • Запустите sudo pgpro-repo-add.sh:

    sudo ./pgpro-repo-add.sh

Установите пакеты etcd-sdm:

sudo apt install -y etcd-sdm

Укажите значения переменных окружения в соответствующем файле:

sudo vim /etc/default/etcd-sdm
##следующие две строки должны содержать данные вашего узла
ETCD_NAME=<имя_узла>
ETCD_ADVERTISE_CLIENT_URLS=http://<ip_адрес_узла>:2379
ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379
ETCD_MAX_SNAPSHOTS=5
ETCD_MAX_WALS=5
ETCD_AUTO_COMPACTION_MODE=periodic
ETCD_AUTO_COMPACTION_RETENTION=5m
ETCD_QUOTA_BACKEND_BYTES=6442450944
ETCD_DATA_DIR=/var/lib/etcd-sdm/sdm-17
#последующие параметры требуются только для кластера etcd с несколькими узлами
#замените на свои IP
ETCD_INITIAL_ADVERTISE_PEER_URLS=http://<ip_адрес_узла>:2380
ETCD_INITIAL_CLUSTER=etcd1=http://etcd1:2380
ETCD_INITIAL_CLUSTER_TOKEN=etcd-cluster-1
ETCD_INITIAL_CLUSTER_STATE=new
ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380

Этот файл будет загружен при запуске etcd.

Очистите каталог данных etcd:

sudo rm -rf /var/lib/etcd-sdm/sdm-17/*

Перезапустите службу etcd-sdm:

sudo systemctl restart etcd-sdm

Для локального пользователя добавьте путь /opt/pgpro/sdm-17/bin в переменную окружения PATH:

echo "export PATH=$PATH:/opt/pgpro/sdm-17/bin" >> ~/.bashrc
source ~/.bashrc

Проверьте правильность конфигурации etcd:

etcdctl endpoint --endpoints=http://192.0.1.1:2379 status health -w table
+------------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------------------------------+
|        ENDPOINT        |        ID        | VERSION | DB SIZE | IS LEADER | IS LEARNER | RAFT TERM | RAFT INDEX | RAFT APPLIED INDEX |             ERRORS             |
+------------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------------------------------+
| http://192.0.1.1:2379  | 9324a99282752a09 |   3.5.9 |  2.1 GB |      true |      false |        14 |   91459207 |           91459207 |  memberID:10602785869456026121 |
|                        |                  |         |         |           |            |           |            |                    |                 alarm:NOSPACE  |
+------------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------------------------------+

Кластер etcd с одним узлом правильно сконфигурирован и готов обрабатывать запросы.

Чтобы предотвратить раздувание при интенсивном использовании etcd, добавьте команду дефрагментации в cron:

sudo sh -c '
{ crontab -l; echo "@hourly /opt/pgpro/sdm-17/bin/etcdctl defrag"; }
| crontab'

1.1.5. Развёртывание узлов Postgres Pro Shardman #

Добавьте репозиторий Postgres Pro Shardman на каждом узле Postgres Pro Shardman:

  • Установите следующие пакеты:

    sudo apt install -y vim curl jq
  • Запустите указанные скрипты:

    curl -fsSL -u "<user>:<password>" https://repo.postgrespro.ru/sdm/sdm-17/keys/pgpro-repo-add.sh > pgpro-repo-add.sh | bash
    chmod +x pgpro-repo-add.sh

  • Задайте свой логин и пароль для репозитория pgpro-repo-add.sh:

    ex -s -c "%s/REPOUSER=/REPOUSER=<имя_пользователя>/g" -c "wq" "pgpro-repo-add.sh"
    ex -s -c "%s/PASSWORD=/PASSWORD=<пароль>/g" -c "wq" "pgpro-repo-add.sh"
  • Запустите sudo pgpro-repo-add.sh:

    sudo ./pgpro-repo-add.sh

Установите пакеты (на каждом узле):

sudo apt update
sudo apt install -y postgrespro-sdm-17-server postgrespro-sdm-17-client postgrespro-sdm-17-contrib postgrespro-sdm-17-libs pg-probackup-sdm-17 sdm-17-services sdm-17-tools biha-utils-sdm-17

Предположим, выбранное имя кластера — cluster0. Следующий шаг — поместить переменные окружения Postgres Pro Shardman в каталог /etc/shardman (на каждом узле):

sudo sh -c 'cat << EOF > /etc/shardman/shardmand-cluster0.env
SDM_CLUSTER_NAME=cluster0
SDM_LOG_LEVEL=info
# введите адреса своих etcd 
SDM_STORE_ENDPOINTS=http://etcd:2379
EOF'

Файл и каталог создаются с помощью команды sudo, однако в дальнейшем shardmanctl её не использует, поэтому доступ к файлу с переменными окружения отсутствует. Для получения доступа необходимо добавить переменные в систему через export или дать пользователю права доступа к файлу и каталогу.

Для локального пользователя добавьте путь /opt/pgpro/sdm-17/bin в переменную окружения PATH и экспортируйте переменную SDM_STORE_ENDPOINTS:

echo "export PATH=$PATH:/opt/pgpro/sdm-17/bin" >> ~/.bashrc
# введите адреса своих etcd
echo "export SDM_STORE_ENDPOINTS=http://etcd:2379" >> ~/.bashrc
source ~/.bashrc

Сгенерируйте пример конфигурации с помощью утилит Postgres Pro Shardman (только на одном узле Postgres Pro Shardman).

  shardmanctl config generate > spec.json

На этом шаге можно внести некоторые изменения в спецификацию (конфигурацию) кластера, например изменить пароль или параметр PostgreSQL shared_buffers и так далее.

Для небольшого изменения кластера задайте для параметра Repfactor значение 0. За подробной информацией обратитесь к файлу конфигурации Shardman.

jq '
  .Repfactor = 0
' "spec.json" > tmp.json && mv tmp.json "spec.json"

1.1.6. Инициализация кластера Postgres Pro Shardman #

Осталось несколько последних шагов. Сначала инициализируйте конфигурацию кластера в etcd (только на одном [любом] узле Postgres Pro Shardman).

  shardmanctl init --store-endpoints=http://etcd1:2379 -f spec.json -y

Ожидается такой результат:

2023-04-18T12:30:03.043Z    DEBUG   cmd/common.go:100   Waiting for metadata lock...
2023-04-18T12:30:03.048Z    DEBUG   cluster/cluster.go:365  DataDir is not specified, setting to default /var/lib/pgpro/sdm-17/data

Включите и запустите службу shardmand (на каждом узле Postgres Pro Shardman):

  sudo systemctl enable --now shardmand@cluster0
  sudo systemctl status shardmand@cluster0

  ● shardmand17@cluster0.service - deployment daemon for shardman
       Loaded: loaded (/lib/systemd/system/shardmand17@.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2023-04-18 12:28:18 UTC; 2min 13s ago
     Docs: https://github.com/postgrespro/shardman
  Main PID: 618 (shardmand)
     Tasks: 10 (limit: 4571)
    Memory: 32.0M
       CPU: 422ms
   CGroup: /system.slice/system-shardmand.slice/shardmand@cluster0.service
           └─618 /opt/pgpro/sdm-17/bin/shardmand --cluster-name cluster0 --system-bus --user postgres

1.1.7. Добавление узлов в кластер Postgres Pro Shardman #

Следующую команду необходимо выполнить только на одном узле Postgres Pro Shardman.

На этом шаге предполагается, что все предыдущие шаги выполнены успешно: кластер etcd работает нормально, время на всех узлах синхронизировано, и демон запущен на sdm01, sdm02 и sdm03. На последнем шаге выполняется команда shardmanctl:

  shardmanctl nodes add --store-endpoints=http://etcd1:2379 \
             -n sdm01,sdm02,sdm03 \
             --cluster-name cluster0 \
             --log-level debug

Ожидается такой результат:

  2023-04-18T12:43:11.300Z    DEBUG   cmd/common.go:100   Waiting for metadata lock...
2023-04-18T12:43:11.306Z    INFO    cluster/store.go:277    Checking if shardmand on all nodes have applied current cluster configuration
✓ Waiting for shardmand on node sdm01 to apply current configuration: success 0.000s
✓ Waiting for shardmand on node sdm02 to apply current configuration: success 0.000s
✓ Waiting for shardmand on node sdm03 to apply current configuration: success 0.000s
2023-04-18T12:43:11.307Z    INFO    add/case.go:112 Initting Stolon instances...
2023-04-18T12:43:11.312Z    INFO    add/case.go:170 Waiting for Stolon daemons to start... make sure shardmand daemons are running on the nodes
✓ Waiting for Stolon daemons of rg clover-1-sdm01: success 31.012s
✓ Waiting for Stolon daemons of rg clover-1-sdm02: success 0.012s
✓ Waiting for Stolon daemons of rg clover-1-sdm03: success 0.012s
2023-04-18T12:43:42.336Z    INFO    add/case.go:187 Adding repgroups...
✓ waiting rg 1 config apply: done 7.014s
2023-04-18T12:43:49.444Z    DEBUG   broadcaster/worker.go:33    start broadcaster worker for repgroup id=1
2023-04-18T12:43:49.453Z    DEBUG   broadcaster/worker.go:51    repgroup 1 connect established
2023-04-18T12:43:49.453Z    DEBUG   commands/addrepgroup.go:575 waiting for extension lock...
2023-04-18T12:43:49.453Z    DEBUG   commands/addrepgroup.go:137 Loading schema into replication group rg 1
...
2023-04-18T12:44:25.665Z    DEBUG   rebalance/service.go:528    wait all tasks finish
2023-04-18T12:44:25.666Z    DEBUG   broadcaster/worker.go:75    finish broadcaster worker for repgroup id=1
2023-04-18T12:44:25.666Z    DEBUG   broadcaster/worker.go:75    finish broadcaster worker for repgroup id=2
2023-04-18T12:44:25.666Z    INFO    add/case.go:221 Successfully added nodes sdm01, sdm02, sdm03 to the cluster

Сообщение «Successfully added nodes sdm01, sdm02, sdm03 to the cluster» (Узлы sdm01, sdm02 успешно добавлены в кластер) означает, что всё в порядке и узлы sdm01, sdm02 и sdm03 работают нормально.

1.1.8. Проверка состояния кластера Postgres Pro Shardman #

Проверьте состояние узлов кластера.

  shardmanctl status

RESTART REQUIRED PARAMS STATUS OK
BIHA STATUS OK
METADATA STATUS OK
SHARDMAND STATUS OK
REPLICATION GROUP STATUS OK
DICTIONARY STATUS OK
KEEPER STATUS OK
STORE STATUS OK
MASTER STATUS OK

1.1.9. Подключение к кластеру Postgres Pro Shardman #

Для подключения к кластеру получите строку подключения на любом узле кластера (sdm01, sdm02 или sdm02):

  shardmanctl getconnstr

Пример вывода:

  dbname=postgres host=sdm01,sdm02,sdm03 password=!!!CHANGE_ME!!! port=5432,5432,5432 user=postgres

Затем попробуйте подключиться:

  psql -d 'dbname=postgres host=sdm01,sdm02,sdm03 password=!!!CHANGE_ME!!! port=5432,5432,5432 user=postgres'

Пример вывода:

  psql (17.5)
  Type "help" for help.

  postgres=#

1.1.10. Пример: развёртывание кластера etcd с несколькими узлами #

В примере используются следующие серверы:

192.0.1.1 etcd1
192.0.1.2 etcd2
192.0.1.3 etcd3

Установите необходимые пакеты на каждом сервере:

sudo apt install -y vim curl

Для подключения к репозиторию запустите на каждом сервере следующую команду:

sudo curl -fsSL https://repo.postgrespro.ru/sdm/sdm-17/keys/pgpro-repo-add.sh | bash

Установите пакеты etcd-sdm на каждом сервере:

sudo apt install -y etcd-sdm

Для каждого сервера отредактируйте файл со списком переменных окружения, заменив местозаполнители в угловых скобках конкретными значениями:

sudo vim /etc/default/etcd-sdm
ETCD_NAME=<hostname>
ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380
ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379
ETCD_ADVERTISE_CLIENT_URLS=http://<host ip address>:2379
ETCD_INITIAL_ADVERTISE_PEER_URLS=http://<host ip address>:2380
ETCD_INITIAL_CLUSTER_TOKEN=etcd-cluster-1
ETCD_INITIAL_CLUSTER_STATE=new
ETCD_MAX_SNAPSHOTS=5
ETCD_MAX_WALS=5
ETCD_AUTO_COMPACTION_MODE=periodic
ETCD_AUTO_COMPACTION_RETENTION=5m
ETCD_QUOTA_BACKEND_BYTES=6442450944
ETCD_DATA_DIR=/var/lib/etcd-sdm/sdm-17
ETCD_INITIAL_CLUSTER=etcd1=http://<ip etcd1>:2380,etcd2=http://<ip etcd2>:2380,etcd3=http://<ip etcd3>:2380

Этот файл будет загружен при запуске etcd со своими собственными параметрами запуска на каждом сервере.

Очистите каталог данных etcd:

sudo rm -rf /var/lib/etcd-sdm/sdm-17/*

Перезапустите службы etcd-sdm на каждом сервере:

sudo systemctl restart etcd-sdm

Для локального пользователя добавьте путь /opt/pgpro/sdm-17/bin в переменную окружения PATH:

echo "export PATH=$PATH:/opt/pgpro/sdm-17/bin" >> ~/.bashrc
source ~/.bashrc

Проверьте правильность конфигурации etcd:

etcdctl member list -w table
+------------------+---------+-------+------------------------------+----------------------------+------------+
|        ID        | STATUS  | NAME  |         PEER ADDRS           |        CLIENT ADDRS        | IS LEARNER |
+------------------+---------+-------+------------------------------+----------------------------+------------+
|  318be6342e6d9ac | started | etcd1 | http://192.0.1.1:2380        | http://192.0.1.1:2379      |      false |
| 9e49480544aedb89 | started | etcd2 | http://192.0.1.2:2380        | http://192.0.1.2:2379      |      false |
+------------------+---------+-------+------------------------------+----------------------------+------------+
$ etcdctl --endpoints=http://192.0.1.1:2380,http://192.0.1.2:2380,http://192.0.1.3:2380 endpoint status health  -w table
+----------------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+
|          ENDPOINT          |        ID        | VERSION | DB SIZE | IS LEADER | IS LEARNER | RAFT TERM | RAFT INDEX | RAFT APPLIED INDEX | ERRORS |
+----------------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+
| http://192.0.1.1:2380      |  318be6342e6d9ac |   3.5.9 |  5.7 MB |      true |      false |        13 |     425686 |             425686 |        |
| http://192.0.1.2:2380      | 9e49480544aedb89 |   3.5.9 |  5.7 MB |     false |      false |        13 |     425686 |             425686 |        |
+----------------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+
-------+

Кластер etcd правильно сконфигурирован и готов обрабатывать запросы.

Чтобы предотвратить раздувание при интенсивном использовании etcd, добавьте команду дефрагментации в cron:

sudo { crontab -l; echo "@hourly /opt/pgpro/sdm-17/bin/etcdctl defrag"; } | crontab

Последняя строка с границами кластера etcd:

etcd1=http://<ip etcd1>:2380,etcd2=http://<ip etcd2>:2380,etcd3=http://<ip etcd3>:2380
        

Её следует указать в файле конфигурации /etc/shardman и в качестве параметра --store-endpoints shardmanctl.