Перейти к основному содержимому

Ручная пошаговая установка кластерной конфигурации (cluster)

Сведения

При переходе к данному разделу предполагается, что изучена информация общего блокаручной установки.

Данный раздел рассматривает процесс ручной пошаговой установки экземпляра СУБД Pangolin и компонентов в составе продукта в кластерной конфигурации. Для полноценной установки потребуется наличие трех нод: мастер, реплика и арбитр.

Для кластерной конфигурации все действия необходимо выполнить поочередно на каждом узле экземпляра СУБД. На каждом узле шаги инструкции выполняются полностью (установка экземпляра СУБД и компонентов), если явно не указано иное. Для узла арбитра выполняются только те этапы, которые помечены как применимые для данного узла.

Все приведенные команды и примеры заполненных конфигураций являются примерами. Их необходимо отредактировать в соответствии с требуемыми параметрами и конфигурациями.

Обозначения

В инструкции используются переменные для динамической настройки. Перед выполнением команд скорректируйте значение относительно реализуемого сценария установки:

  • {OS} - операционная система;
  • {version_OS} - версия операционной системы;
  • {path} - полный путь к директории distributive или путь к дистрибутиву;
  • {product_version} - версия продукта (текущая версия: 6.7.6);
  • {short_version} - короткая версия продукта (текущая: 6.7);
  • {base_version} - основная версия продукта (текущая: 6);
  • {version_component} - версия компонента.

Подготовка к ручной установке

  1. Проверьте что порт для работы СУБД (по умолчанию 5432) не заблокирован на уровне сети или виртуальной машины.

  2. Проверьте занятость uid/gid. Для установки экземпляра СУБД Pangolin по умолчанию используется: uid/gid: 26 для postgres, uid/gid: 126 для kmadmin_pg и gid: 226 для группы pangolin_users. Пример команды проверки:

    getent passwd | grep 26
    getent passwd | grep 126
    getent group | grep 226

    В случае занятости данных uid/gid переопределите переменные через изменение значений. Пример изменения uid/gid для пользователя postgres:

    sudo POSTGRES_USER_GUID=<unused_uid> POSTGRES_GROUP_GUID=<unused_gid> dnf install pangolin-dbms-6.7
    Важно

    Изменение актуально для ОС Astra Linux, в связи с занятостью gid: 126 группой tape и для ОС Альт СП 10 версии 2 (занятость gid=26):

    error: group with gid=126 already exists

    Список переменных окружения, использующих uid/gid:

    POSTGRES_USER_GUID             # изменение uid пользователя postgres (по умолчанию 26)
    POSTGRES_GROUP_GUID # изменение gid группы postgres (по умолчанию 26)
    KMADMIN_PG_USER_GUID # изменение uid пользователя kmadmin_pg (по умолчанию 126)
    KMADMIN_PG_GROUP_GUID # изменение gid группы kmadmin_pg (по умолчанию 126)
    PANGOLIN_USERS_GROUP_GUID # изменение gid группы pangolin_users (по умолчанию 226)
  3. Убедитесь, что дистрибутив распакован с использованием скрипта unpacker-distrib.sh (с ключом --not-pack) и каталог дистрибутива присутствует на всех узлах кластера.

Примечание

Использование мета-пакетов может упростить дальнейшие шаги установки rpm/deb-пакетов. Особенно в случае, когда требуется установка нескольких компонентов.

Установка экземпляра СУБД Pangolin

Данный раздел описывает сценарий процесса ручной установки на операционные системы (ОС), такие как:

  • Platform V SberLinux OS Server;
  • РЕД ОС;
  • CentOS;
  • Astra Linux;
  • Альт СП / Альт Сервер.

Для уточнения поддерживаемых версий указанных ОС обратитесь к списку в разделе «Системные требования».

Подсказка

Для развертывания СУБД Pangolin на окружении 1С выполните шаги с пометкой «для окружения 1С», вместо «обычное окружение».

Порядок установки

Шаги процесса ручной установки:

  1. Установка rpm/deb-пакетов серверной и клиентской части СУБД.
  2. Создание системных директорий необходимых для работы СУБД.
  3. Выполнение импорта лицензии.
  4. Подготовка переменных окружения.
  5. Инициализация кластера СУБД.
  6. Конфигурирование СУБД Pangolin.
  7. Запуск СУБД.
  8. Проверка результата.
  9. Ознакомление с дальнейшими шагами.

Шаг 1. Установка rpm/deb-пакетов

Установите пакеты серверной и клиентской части СУБД:

sudo dnf install /{path}/pangolin-dbms-{short_version}-{product_version}-{OS}.x86_64.rpm
sudo dnf install /{path}/pangolin-dbms-{short_version}-client-{product_version}-{OS}.x86_64.rpm
Подсказка

Пример заполненной команды:

sudo dnf -y install ~/distributive/pangolin-dbms-6.7-6.7.6-sberlinux8.x86_64.rpm
sudo dnf -y install ~/distributive/pangolin-dbms-6.7-client-6.7.6-sberlinux8.x86_64.rpm

В случае использования настроенного локального репозитория используйте упрощенные команды для установки пакетов. Например, sudo dnf -y install pangolin-dbms-{short_version}. Пакетный менеджер самостоятельно найдет нужный пакет в репозитории и предложит его к установке.

Шаг 2. Создание системных директорий

Создайте директории /pgdata, /pangolinlogs:

sudo mkdir -p /pgdata /pangolinlogs/pangolin-dbms
sudo chown -R postgres:postgres /pgdata /pangolinlogs
sudo chmod -R 700 /pgdata /pangolinlogs

Шаг 3. Импорт лицензии

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

Сведения

Лицензия поставляется вместе с дистрибутивом в личном кабинете клиента. В случае ее отсутствия, обратитесь к менеджеру.

Добавьте файл с лицензией license.json в папку /opt/pangolin_license/ и назначьте необходимые права:

sudo mkdir -p /opt/pangolin_license
sudo mv /{path}/license.json /opt/pangolin_license
sudo chown -R postgres:pangolin_users /opt/pangolin_license
sudo chmod 770 /opt/pangolin_license
sudo chmod 440 /opt/pangolin_license/license.json

Шаг 4. Подготовка переменных окружения

Из под пользователя postgres измените файл .bash_profile (в случае ОС Astra Linux - .profile) при помощи текстового редактора, добавив следующие строки с переменными окружения (замените переменные в скобках { } на актуальные значения). После перечитайте переменные окружения для .bash_profile/.profile:

sudo -iu postgres
umask 022
export PG_LICENSE_PATH=/opt/pangolin_license
export PGHOME=/usr/pangolin
export PGHOME_CLIENT=/usr/pangolin-dbms-client
export PGDATABASE=postgres
export PGUSER=postgres
export PGHOST=127.0.0.1
export PGPORT=5432
export PGCLIENTENCODING=UTF8
export PGDATA=/pgdata/0{base_version}/data
export MANPATH=$MANPATH:$PGHOME/share/man
. ~/.bash_profile
exit

Шаг 5. Инициализация кластера СУБД

Сведения

Шаги 5,6,7 выполняются только на узле мастер.

Инициализируйте новый кластер СУБД Pangolin:

  • обычное окружение:

    sudo -iu postgres
    initdb --locale en_US.UTF-8 -k -D /pgdata/0{base_version}/data/
    exit
  • окружение с 1С:

    sudo -iu postgres
    initdb --locale ru_RU.UTF-8 -k -D /pgdata/0{base_version}/data/
    exit

    Для окружения с 1С крайне важно указать локаль, в будущем она будет использоваться для инициализации БД, которая создает 1С.

Шаг 6. Конфигурирование СУБД Pangolin

  1. Отредактируйте конфигурационный файл /pgdata/0{base_version}/data/postgresql.conf:

    1. Рекомендуется выполнять конфигурирование СУБД при помощи вспомогательного инструмента Pangolin Tuner. Описание утилиты и шаги по запуску описаны в подразделе «Установка компонента Pangolin Tuner».

    2. С помощью текстового редактора под пользователем postgres измените значение конфигурационного параметра enabled_extra_auth_methods с указанием методов аутентификации (эти же методы нужно будет указать в pg_hba.conf в следующем пункте) к использованию:

      • обычное окружение:

        enabled_extra_auth_methods = 'peer, trust'
      • окружение с 1С:

        enabled_sec_admin_extra_auth_methods = 'md5,trust,peer,cert'
        enabled_extra_auth_methods = 'md5,trust,peer,cert'
      Примечание

      Параметрenabled_sec_admin_extra_auth_methods отвечает за список дополнительно разрешенных к использованию методов аутентификации для ролей администраторов безопасности, тогда как в enabled_extra_auth_methods передается список для всех остальных ролей.

    3. С помощью текстового редактора под пользователем postgres задайте для параметра listen_addresses значение 0.0.0.0, чтобы разрешить подключение к СУБД по IP-адресу сервера Pangolin.

      listen_addresses = '0.0.0.0'
  2. С помощью текстового редактора под пользователем postgres измените конфигурационный файл /pgdata/0{base_version}/data/pg_hba.conf (добавьте строки в конец файла):

    local   all           all                                peer
    host all all 0.0.0.0/0 trust

Шаг 7. Запуск СУБД

Запустите экземпляр СУБД Pangolin:

sudo -iu postgres
pg_ctl -D /pgdata/0{base_version}/data/ -l /pangolinlogs/pangolin-dbms/postgresql.log start
exit

Результат

После завершения процесса установки экземпляра СУБД рекомендуется провести чек-лист проверки корректности работы.

Установка компонентов продукта СУБД Pangolin

Установка компонента Pangolin Tuner

Pangolin Tuner — это инструмент для работы с конфигурацией Postgres-like СУБД, предназначенный для оптимизации производительности баз данных в различных сценариях использования. Инструмент автоматически определяет оптимальные настройки в зависимости от профиля рабочей нагрузки / профиля использования. Это позволяет значительно сократить время настройки и минимизировать риски, связанные с неправильной конфигурацией. Подробнее смотрите в отдельном разделе про утилиту Pangolin Tuner.

Порядок установки

Шаги процесса ручной установки компонента:

  1. Установка rpm/deb-пакета утилиты.
  2. Описание процесса оптимизации конфигурационного файла СУБД.

Шаг 1. Установка rpm/deb-пакета

sudo dnf install /{path}/utilities/pangolin-tuner-{version_component}-{OS}.x86_64.rpm
Подсказка

Пример заполненной команды:

sudo dnf -y install ~/distributive/utilities/pangolin-tuner-1.1.0-sberlinux8.x86_64.rpm

Шаг 2. Оптимизация конфигурационного файла СУБД

  1. Выберите профиль рабочей нагрузки, соответствующий конкретным потребностям для использования оптимальных значений параметров.

  2. Запустите утилиту Pangolin Tuner с необходимыми настройками и сконфигурируйте файл под нужный профиль:

    • Профиль OLTP:

      sudo -iu postgres
      /opt/pangolin-tuner/bin/pangolin-tuner --config /pgdata/0{base_version}/data/postgresql.conf --profile oltp --output-file /pgdata/0{base_version}/data/postgresql.conf.oltp
      exit
    • Профиль OLAP:

      sudo -iu postgres
      /opt/pangolin-tuner/bin/pangolin-tuner --config /pgdata/0{base_version}/data/postgresql.conf --profile olap --output-file /pgdata/0{base_version}/data/postgresql.conf.olap
      exit
    • Профиль 1C (для окружения 1С):

      sudo -iu postgres
      /opt/pangolin-tuner/bin/pangolin-tuner --config /pgdata/0{base_version}/data/postgresql.conf --profile 1c --output-file /pgdata/0{base_version}/data/postgresql.conf.1c
      exit
  3. Примените созданный конфигурационный файл:

    sudo -iu postgres
    mv /pgdata/0{base_version}/data/postgresql.conf.oltp /pgdata/0{base_version}/data/postgresql.conf
    chmod 600 /pgdata/0{base_version}/data/postgresql.conf
    exit
    Сведения

    Pangolin Tuner не конфигурирует индивидуальные настройки, связанные с количеством подключений либо с активацией расширений. Данные параметры необходимо настроить самостоятельно.

    Описание параметров, по которым утилита Pangolin Tuner формирует значение, расположено в разделе «Тюнинг параметров» документа «Руководство администратора».

Установка компонента Pangolin Pooler

Компонент Pangolin Pooler – это доработанная версия PgBouncer, а именно программа, управляющая пулом соединений Pangolin DBMS. Любое клиентское приложение может подключиться к Pangolin Pooler, как если бы это был непосредственно сервер DBMS, и Pangolin Pooler создаст подключение к реальному серверу, либо задействует одно из ранее установленных подключений. Предназначение Pangolin Pooler — минимизировать издержки, связанные с установлением новых подключений к Pangolin DBMS.

Подробное описание компонента представлено в разделе «Администрирование Pangolin Pooler» документа «Руководство администратора».

Порядок установки

Шаги процесса ручной установки компонента:

  1. Установка rpm/deb-пакета компонента Pooler.
  2. Создание системных директорий, необходимых для работы компонента.
  3. Конфигурирование Pangolin Pooler.
  4. Настройка ротации журналов.
  5. Запуск компонента.

Шаг 1. Установка rpm/deb-пакета

Выполните установку компонента Pangolin Pooler под пользователем root:

sudo dnf install /{path}/pangolin-pooler-{version_component}-{OS}.x86_64.rpm

Пример заполненной команды:

sudo dnf install -y ~/distributive/pangolin-pooler-1.5.6-sberlinux8.x86_64.rpm

Шаг 2. Создание системных директорий

Создайте директории /pangolinlogs/pangolin-pooler:

sudo mkdir -p /pangolinlogs/pangolin-pooler
sudo chown -R postgres:postgres /pangolinlogs
sudo chmod -R 700 /pangolinlogs

Шаг 3. Конфигурирование Pangolin Pooler

  1. С помощью текстового редактора под пользователем postgres отредактируйте файл /etc/pangolin-pooler/pangolin-pooler.ini, заполнив поля значениями, соответствующими данным вашего стенда:

    Пример файла pangolin-pooler.ini с минимальными настройками

    [databases]
    * = host=<ip-address> port=<port>

    [pgbouncer]
    listen_port = 6544
    listen_addr = *
    auth_type = scram-sha-256
    auth_file = /etc/pangolin-pooler/userlist.txt
    logfile = /pangolinlogs/pangolin-pooler/pangolin-pooler.log
    pidfile = /var/run/pangolin-pooler/pangolin-pooler.pid
    admin_users = pgbouncer
  2. С помощью текстового редактора под пользователем postgres измените файл /etc/pangolin-pooler/userlist.txt, заполнив поля значениями, соответствующими данным вашего стенда:

    "<user>" "<password>"

    Пример файла userlist.txt:

    "user" "qwerty"

    Или в засекреченном виде:

    "user" "md5175c641eaed0b6c05ae8444b73d789f0"

Шаг 4. Настройка ротации журналов

  1. С помощью текстового редактора под пользователем root измените файл /opt/pangolin-pooler/share/doc/logrotate/pangolin-pooler, заполнив поля значениями, соответствующими данным вашего стенда:

    Пример файла pangolin-pooler:

    /pangolinlogs/pangolin-pooler/pangolin-pooler.log {
    rotate 10
    su postgres postgres
    missingok
    sharedscripts
    notifempty
    compress
    daily
    create 0600 postgres postgres
    postrotate
    /bin/kill -HUP `cat /var/run/pangolin-pooler/pangolin-pooler.pid 2> /dev/null` 2>/dev/null ||true
    endscript
    }
  2. Перенесите готовый файл в системный каталог ротации логов и назначьте права:

    sudo cp /opt/pangolin-pooler/share/doc/logrotate/pangolin-pooler /etc/logrotate.d/pangolin-pooler
    sudo chown postgres:postgres /etc/logrotate.d/pangolin-pooler
    sudo chmod 0644 /etc/logrotate.d/pangolin-pooler

Шаг 5. Запуск Pangolin Pooler

  1. Произведите запуск службы Pangolin Pooler:

    sudo systemctl restart pangolin-pooler
  2. Проверьте корректность запуска и состояние сервиса. Пример статуса:

    sudo systemctl status pangolin-pooler
    Пример успешного старта сервиса pangolin-pooler

    ● pangolin-pooler.service - Pangolin Pooler connection pooling for PostgreSQL
    Loaded: loaded (/usr/lib/systemd/system/pangolin-pooler.service; disabled; preset: disabled)
    Active: active (running) since Mon 2026-02-02 18:58:35 MSK; 4s ago
    Process: 2292612 ExecStartPre=/bin/mkdir -p /var/run/pangolin-pooler (code=exited, status=0/SUCCESS)
    Process: 2292613 ExecStartPre=/bin/chown -R postgres:postgres /var/run/pangolin-pooler (code=exited, status=0/SUCCESS)
    Process: 2292614 ExecStart=/opt/pangolin-pooler/bin/pangolin-pooler -d ${POOLERCONF} (code=exited, status=0/SUCCESS)
    Process: 2292617 ExecStartPost=/bin/sleep 1 (code=exited, status=0/SUCCESS)
    Main PID: 2292616 (pangolin-pooler)
    Tasks: 2 (limit: 50508)
    Memory: 3.8M
    CPU: 18ms
    CGroup: /system.slice/pangolin-pooler.service
    └─2292616 /opt/pangolin-pooler/bin/pangolin-pooler -d /etc/pangolin-pooler/pangolin-pooler.ini

    Feb 02 18:58:34 srv-123 systemd[1]: Starting Pangolin Pooler connection pooling for PostgreSQL...
    Feb 02 18:58:35 srv-123 systemd[1]: Started Pangolin Pooler connection pooling for PostgreSQL...

Установка компонента Pangolin Manager

Компонент Pangolin Manager – это доработанная версия Patroni, python-приложения для создания и управления Pangolin DBMS-кластерами, работающими на основе потоковой репликации.

Pangolin Manager - это оркестратор кластера Pangolin, который преобразует систему из двух и более узлов Pangolin в высокодоступный кластер с поддержкой контролируемого и аварийного переключения. Также он автоматизирует добавление, обновление и удаление реплик, и реализует одновременное изменение конфигурации Pangolin на всех узлах кластера.

Далее представлены шаги для установки Pangolin Manager. Предполагается, что выбран тип конфигурации cluster, так как данный компонент используется в кластерной конфигурации.

Подсказка

Все шаги процесса установки являются обязательными, кроме шагов с указанием признака в заголовке: опциональный.

Порядок установки

Шаги процесса ручной установки компонента:

  1. Установка rpm/deb-пакетов компонента и его зависимости.
  2. Создание пользователя для репликации.
  3. Добавление пользователя в засекреченного хранилища паролей (опциональный шаг).
  4. Создание системных директорий, необходимых для работы Pangolin Manager.
  5. Выбор распределенного хранилища конфигурации.
  6. Конфигурирование Pangolin Manager.
  7. Настройка перезагрузки компонентов (опциональный шаг).
  8. Запуск Pangolin Manager.

Шаг 1. Установка rpm/deb-пакетов

Подсказка

Выполните данный шаг также на арбитре, если выбран модуль Pangolin DCS, в качестве распределенного хранилища конфигурации.

  1. Установите пакет pangolin-manager-venv, который является обязательной зависимостью для пакета pangolin-manager. Предварительно распакуйте архив 3rdparty.tar.gz:

    tar -xzf /{path}/3rdparty/3rdparty.tar.gz -C /{path}/3rdparty/
    sudo dnf install /{path}/3rdparty/pangolin-manager-venv/pangolin-manager-venv-{version_component}-{OS}.x86_64.rpm

    Пример заполненной команды:

    tar -xzf ~/distributive/3rdparty/3rdparty.tar.gz -C ~/distributive/3rdparty/
    sudo dnf install -y ~/distributive/3rdparty/pangolin-manager-venv/pangolin-manager-venv-1.1.2-sberlinux8.x86_64.rpm
  2. Установите пакет pangolin-manager:

    sudo dnf install /{path}/pangolin-manager-{version_component}-{OS}.x86_64.rpm

    Пример заполненной команды:

       sudo dnf install -y ~/distributive/pangolin-manager-2.1.19-sberlinux8.x86_64.rpm

Шаг 2. Создание пользователя для репликации

Сведения

Шаг 2 выполняется только на узле мастер.

  1. Создайте пользователя для работы репликации в СУБД Pangolin с паролем согласно парольной политике только на мастере:

    sudo -iu postgres
    psql -c "CREATE USER patroni WITH ENCRYPTED PASSWORD '<sample_password>';"
    exit
  2. Отключите срок действия пароля и выставьте лимит подключений только на мастере:

    sudo -iu postgres
    psql -c "ALTER ROLE patroni LOGIN SUPERUSER REPLICATION VALID UNTIL 'infinity' CONNECTION LIMIT 5;"
    exit

Шаг 3. Добавление пользователя в засекреченного хранилища паролей (опциональный)

Важно

Выполните данный шаг при использовании функциональности засекречивания паролей.

Добавьте пользователя СУБД, созданного на предыдущем шаге, в хранилище на мастере и на реплике:

sudo -iu postgres
/usr/pangolin/bin/pg_auth_config add -h $HOSTNAME -p 5432 -U patroni -d postgres
/usr/pangolin/bin/pg_auth_config add -h $HOSTNAME -p 5432 -U patroni -d replication
/usr/pangolin/bin/pg_auth_config add -h localhost -p 5432 -U patroni -d postgres
/usr/pangolin/bin/pg_auth_config add -h localhost -p 5432 -U patroni -d replication
exit

Шаг 4. Создание системных директорий

Подсказка

Выполните данный шаг также на арбитре, если выбран модуль Pangolin DCS, в качестве распределенного хранилища конфигурации.

Создайте директорию /pangolinlogs/pangolin-manager на всех узлах кластера:

sudo mkdir -p /pangolinlogs/pangolin-manager
sudo chown -R postgres:postgres /pangolinlogs
sudo chmod -R 700 /pangolinlogs

Шаг 5. Выбор распределенного хранилища конфигурации

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

Шаг 6. Конфигурирование Pangolin Manager

Подсказка

Выполните данный шаг также на арбитре, если выбран модуль Pangolin DCS, в качестве распределенного хранилища конфигурации.

Сведения

При установке пакетаpangolin-manager создается конфигурационный файл Pangolin Manager - /etc/pangolin-manager/postgres.yml, содержащий значения переменных по умолчанию.

Заполнение конфигурационного файла postgres.yml требуется на всех узлах экземпляра СУБД (мастере, реплике, арбитре).

  1. С помощью текстового редактора под пользователем postgres отредактируйте в конфигурационный файл Pangolin Manager /etc/pangolin-manager/postgres.yml следующие параметры:

    • postgresql:parameters – необходимо вручную из уже существующего /pgdata/0{base_version}/data/postgresql.conf перенесите параметры СУБД;
    • postgresql:pg_hba – необходимо вручную из уже существующего /pgdata/0{base_version}/data/pg_hba.conf перенесите параметры СУБД;
    • log:dir - необходимо указать путь до логов компонента Pangolin Manager (/pangolinlogs/pangolin-manager/);
    • scope – необходимо указать имя кластера (например, cluster);
    • name – необходимо указать имя текущего сервера (hostname);
    • postgresql:listen - необходимо указать адрес подключения к СУБД Pangolin (0.0.0.0:<port>);
    • postgresql:connect_address - необходимо указать адрес подключения к СУБД Pangolin (hostname:<port>);
    • postgresql:bin_dir- необходимо указать путь до исполняемых файлов серверной части (/usr/pangolin/bin);
    • postgresql:bin_dir_client- необходимо указать путь до исполняемых файлов клиентской части (/usr/pangolin-dbms-client/bin);
    • postgresql:data_dir- необходимо указать путь до файлов данных СУБД (/pgdata/0{base_version}/data/);
    • restapi:listen - необходимо указать адрес для доступа к REST API утилиты Pangolin Manager (0.0.0.0:8008);
    • restapi:connect_address- необходимо указать адрес подключения к REST API утилиты Pangolin Manager (hostname:8008);
    • restapi:authentication:username- необходимо указать имя пользователя для доступа к REST API утилиты Pangolin Manager (pangolinmanager), который создается на шаге 8;
    • restapi:authentication:password- необходимо указать пароль пользователя для доступа к REST API утилиты Pangolin Manager;
    • postgresql:authentication:replication:username- необходимо указать имя пользователя репликации для аутентификации (patroni), который создается на шаге 2;
    • postgresql:authentication:replication:password- необходимо указать пароль пользователя репликации для аутентификации;
    • postgresql:authentication:superuser:username- необходимо указать имя пользователя для аутентификации (patroni), который создается на шаге 2;
    • postgresql:authentication:superuser:password- необходимо указать пароль пользователя для аутентификации;
    • tags - секцию необходимо оставить без изменений;
    • bootstrap:dcs - секцию необходимо оставить без изменений;
    • pangolin_dcs или etcd - секции заполняются на шаге настройки распределенного хранилища.

    Пример заполненного файла /etc/pangolin-manager/postgres.yml:

    scope: cluster
    name: abc-0.11
    restapi:
    listen: 0.0.0.0:8008
    connect_address: abc-0.11:8008
    authentication:
    username: pangolinmanager
    password: <sample_password>
    bootstrap:
    dcs:
    ttl: 135
    retry_timeout: 60
    loop_wait: 10
    maximum_lag_on_failover: 1048576
    synchronous_mode: true
    synchronous_mode_strict: false
    postgresql:
    parameters:
    wal_log_hints: on
    wal_level: replica
    max_wal_senders: 10
    max_replication_slots: 10
    log:
    dir: /pangolinlogs/pangolin-manager
    postgresql:
    listen: 0.0.0.0:5432
    bin_dir: /usr/pangolin/bin
    bin_dir_client: /usr/pangolin-dbms-client/bin
    connect_address: abc-0.11:5432
    data_dir: /pgdata/0{base_version}/data/
    authentication:
    replication:
    username: patroni
    password: <sample_password>
    superuser:
    username: patroni
    password: <sample_password>
    parameters:
    port: 5432
    listen_addresses: 0.0.0.0
    pg_hba:
    - host all patroni 127.0.0.1/32 scram-sha-256
    - host all patroni <ip-address_master>/32 scram-sha-256
    - host all patroni <ip-address_replica>/32 scram-sha-256
    - host replication patroni 127.0.0.1/32 scram-sha-256
    - host replication patroni <ip-address_master>/32 scram-sha-256
    - host replication patroni <ip-address_replica>/32 scram-sha-256
    tags:
    nofailover: false
    noloadbalance: false
    clonefrom: false
    nosync: false
  2. Для репликации и корректной работы Pangolin Manager, c помощью текстового редактора под пользователем postgres на мастере добавьте следующие строки в конец конфигурационного файла СУБД /pgdata/0{base_version}/data/pg_hba.conf на мастере:

    host all patroni 127.0.0.1/32 scram-sha-256
    host all patroni <ip-address_master>/32 scram-sha-256
    host all patroni <ip-address_replica>/32 scram-sha-256
    host replication patroni 127.0.0.1/32 scram-sha-256
    host replication patroni <ip-address_master>/32 scram-sha-256
    host replication patroni <ip-address_replica>/32 scram-sha-256

Шаг 7. Настройка перезагрузки компонентов (опциональный)

Важно

Выполните данный шаг при наличии компонента Pangolin Pooler.

  1. Под пользователем postgres создайте файл /etc/pangolin-pooler/pangolin-pooler-restart.sh, который будет использовать Pangolin Manager при перезагрузке кластера для перезагрузки Pangolin Pooler (reload) и назначьте права:

    sudo -iu postgres
    touch /etc/pangolin-pooler/pangolin-pooler-restart.sh
    chmod 500 /etc/pangolin-pooler/pangolin-pooler-restart.sh
    exit
  2. С помощью текстового редактора из-под root добавьте в файл /etc/pangolin-pooler/pangolin-pooler-restart.sh содержимое:

    #!/bin/sh
    sudo systemctl restart pangolin-pooler

Шаг 8. Запуск Pangolin Manager

  1. Перечитайте обновленную конфигурацию Pangolin (reload):

    sudo -iu postgres
    pg_ctl reload
    exit
  2. Запустите сервис pangolin-manager последовательно, сначала на узле мастер, затем на реплике и после на арбитре, при необходимости:

    sudo systemctl start pangolin-manager
  3. Проверьте корректность запуска и состояние сервиса. Пример статуса:

    sudo systemctl status pangolin-manager
    Пример успешного старта сервиса pangolin-manager

    ● pangolin-manager.service - Runners to orchestrate a high-availability PostgreSQL
    Loaded: loaded (/usr/lib/systemd/system/pangolin-manager.service; disabled; preset: disabled)
    Active: active (running) since Mon 2026-02-02 20:58:12 MSK; 11ms ago
    Process: 2325458 ExecStartPre=/bin/mkdir -p /var/run/pangolin-dbms (code=exited, status=0/SUCCESS)
    Process: 2325459 ExecStartPre=/bin/chown -R postgres:postgres /var/run/pangolin-dbms (code=exited, status=0/SUCCESS)
    Main PID: 2325464 (pangolin-manager)
    Tasks: 1 (limit: 50508)
    Memory: 2.7M
    CPU: 16ms
    CGroup: /system.slice/pangolin-manager.service
    └─2325464 /opt/pangolin-manager/bin/pangolin-manager-bin/pangolin-manager.bin /etc/pangolin-manager/postgres.yml

    Feb 02 20:58:12 srv-123 systemd[1]: Starting Runners to orchestrate a high-availability PostgreSQL...
    Feb 02 20:58:12 srv-123 systemd[1]: Started Runners to orchestrate a high-availability PostgreSQL.
    Feb 02 20:57:53 srv-123 pangolin-manager.bin[2325269]: 2026-02-02 20:57:53,336 INFO: Failed to import patroni.dcs.consul

Установка модуля Pangolin DCS

Сведения

При переходе к данному этапу предполагается, чтоустановка Pangolin Manager уже пройдена.

Pangolin DCS — это модуль распределенного хранилища конфигурации внутри компонента Pangolin Manager, который реализует Raft-алгоритм.

Pangolin DCS является частью Pangolin Manager и может заменить сторонний компонент etcd. Развертывание Pangolin DCS происходит поэтапно.

Порядок установки

Шаги процесса ручной установки модуля:

  1. Создание системных директорий, необходимых для работы Pangolin DCS.
  2. Конфигурирование Pangolin DCS.
  3. Добавление ролевой модели

Шаг 1. Создание системных директорий

Создайте директории /pangolinlogs/pangolin-manager/raft и /pgdata на всех узлах кластера:

sudo mkdir -p /pangolinlogs/pangolin-manager/raft /pgdata
sudo chown -R postgres:postgres /pangolinlogs /pgdata
sudo chmod -R 700 /pangolinlogs /pgdata

Шаг 2. Конфигурирование Pangolin DCS

  1. Настройка Pangolin Manager DCS осуществляется параметрами в секции pangolin_dcs в конфигурационном файле Pangolin Manager /etc/pangolin-manager/postgres.yml. С помощью текстового редактора под пользователем postgres отредактируйте конфигурационный файл Pangolin Manager /etc/pangolin-manager/postgres.yml на всех узлах кластера:

    • pangolin_dcs:self_addr – необходимо указать адрес для прослушивания соединений Raft (hostname:2481);
    • pangolin_dcs:partner_addrs – необходимо указать список других узлов кластера (<hostname_replica>:2481,<hostname_arbiter_>:2481);
    • pangolin_dcs:data_dir – необходимо указать путь к директории для хранения журнала операций и текущих значений ключей (/pgdata/0{base_version}/raft_data);
    • pangolin_dcs:logfile – необходимо указать путь до файла логов (/pangolinlogs/pangolin-manager/raft/raft.log);
    • pangolin_dcs:restapi:listen – необходимо указать адрес для доступа к REST API утилиты Pangolin DCS (0.0.0.0:8009);
    • pangolin_dcs:restapi:connect_address – необходимо указать адрес подключения к REST API утилиты Pangolin DCS (hostname:8009);
    • pangolin_dcs:restapi:authentication.username – необходимо указать имя пользователя для доступа к REST API утилиты Pangolin DCS (pangolindcs). Создается на следующем шаге Добавление ролевой модели;
    • pangolin_dcs:restapi:authentication.password – необходимо указать пароль пользователя для доступа к REST API утилиты Pangolin DCS.

    Пример заполненной секции pangolin_dcs в файле /etc/pangolin-manager/postgres.yml:

    pangolin_dcs:
    self_addr: abc-0.11:2481
    partner_addrs: abc-0.12:2481,abc-0.13:2481
    data_dir: /pgdata/0{base_version}/raft_data
    logfile: /pangolinlogs/pangolin-manager/raft/raft.log
    restapi:
    listen: 0.0.0.0:8009
    connect_address: abc-0.11:8009
    partner_address: abc-0.12:8009,abc-0.13:8009
    authentication:
    username: pangolindcs
    password: <sample_password>
  2. С помощью текстового редактора под пользователем postgres выставьте значение параметра installer.cluster_type в конфигурационном файле Pangolin Manager /etc/pangolin-manager/postgres.yml в значение cluster-patroni-dcs-pgbouncer на мастере и на реплике.

    Пример корректно заполненного параметра installer.cluster_type:

    postgresql:
    parameters:
    installer.cluster_type: cluster-patroni-dcs-pgbouncer

Дополнительная информация о конфигурировании DCS описана в разделе «Администрирование Pangolin DCS» в документе «Руководство администратора».

Шаг 3. Добавление ролевой модели

  1. Перечитайте конфигурацию Pangolin Manager последовательно (сначала на узле мастер, затем на реплике и после на арбитре):

    sudo systemctl reload pangolin-manager
    sudo systemctl restart pangolin-manager
  2. Проверьте, что все узлы кластера доступны:

    sudo -iu postgres
    /opt/pangolin-manager/bin/pangolin-dcs-ctl member list
    exit
    Пример успешной работы узлов

    abc-0.11, connected, True
    abc-0.12, connected, False
    abc-0.13, connected, False
  3. Под пользователем postgres на узле арбитра выполните следующие команды для добавления ролевой модели:

    /opt/pangolin-manager/bin/pangolin-dcs-ctl user add root:'<root_password>'
    /opt/pangolin-manager/bin/pangolin-dcs-ctl user add pangolindcs:'<sample_password>'
    /opt/pangolin-manager/bin/pangolin-dcs-ctl user add pangolinmanager:'<sample_password>'
    /opt/pangolin-manager/bin/pangolin-dcs-ctl --user root --password '<root_password>' role add pangolindcsapi
    /opt/pangolin-manager/bin/pangolin-dcs-ctl role grant-permission pangolindcsapi readwrite --prefix /service/
    /opt/pangolin-manager/bin/pangolin-dcs-ctl --user root --password '<root_password>' user grant-role pangolindcs pangolindcsapi
    /opt/pangolin-manager/bin/pangolin-dcs-ctl --user root --password '<root_password>' user grant-role pangolinmanager pangolindcsapi
    /opt/pangolin-manager/bin/pangolin-dcs-ctl --user root --password '<root_password>' auth enable
    Пример успешного выполнения команд

    [postgres]$ /opt/pangolin-manager/bin/pangolin-dcs-ctl user add root:'root_password'
    User root created
    [postgres]$ /opt/pangolin-manager/bin/pangolin-dcs-ctl user add pangolindcs:'sample_password'
    User pangolindcs created
    [postgres]$ /opt/pangolin-manager/bin/pangolin-dcs-ctl user add pangolinmanager:'sample_password'
    User pangolinmanager created
    [postgres]$ /opt/pangolin-manager/bin/pangolin-dcs-ctl --user root --password 'root_password' role add pangolindcsapi
    Role pangolindcsapi created
    [postgres]$ /opt/pangolin-manager/bin/pangolin-dcs-ctl role grant-permission pangolindcsapi readwrite --prefix /service/
    Role pangolindcsapi updated
    [postgres]$ /opt/pangolin-manager/bin/pangolin-dcs-ctl --user root --password 'root_password' user grant-role pangolindcs pangolindcsapi
    Role pangolindcsapi is granted to user pangolindcs
    [postgres]$ /opt/pangolin-manager/bin/pangolin-dcs-ctl --user root --password 'root_password' user grant-role pangolinmanager pangolindcsapi
    Role pangolindcsapi is granted to user pangolinmanager
    [postgres]$ /opt/pangolin-manager/bin/pangolin-dcs-ctl --user root --password 'root_password' auth enable
    Authentication Enabled

Установка компонента etcd

Сведения

При переходе к данному этапу предполагается, чтоустановка Pangolin Manager уже пройдена.

Etcd - это строго согласованное, распределенное хранилище информации в формате ключ-значение.

Внимание!

Существует модульPangolin DCS, который является частью Pangolin Manager и может заменить компонент etcd.

В кластерной конфигурации (Pangolin Manager+etcd) etcd устанавливается из стандартных репозиториев ОС. Все действия по установке etcd выполняются под системным пользователем root. Поддерживаема версия пакета стороннего компонента под разных ОС указана на странице «Системные требования».

Предупреждение!

Версии etcd 3.4.42, 3.5.28 и 3.6.9 не рекомендуются к использованию из-за проблем совместимости, возникающих в патчевых версиях компонента. Рекомендуемые версии etcd для эксплуатации: 3.4.23, 3.5.26, 3.6.5.

Порядок установки

Шаги процесса ручной установки компонента:

  1. Установка компонента.
  2. Создание системных директорий, необходимых для работы Pangolin DCS.
  3. Конфигурирование Pangolin Manager.
  4. Конфигурирование etcd.
  5. Создание service-файла etcd.
  6. Запуск etcd.
  7. Добавление ролевой модели.

Шаг 1. Установка компонента etcd

Важно

Важно чтобы версия etcd на всех устанавливаемых машинах была одинаковая.

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

sudo dnf install -y etcd

Шаг 2. Создание системных директорий

  1. Создайте на узле арбитра пользователя и группу postgres:

    sudo useradd postgres
  2. Создайте директорию /pangolinlogs/etcd на всех узлах кластера:

    sudo mkdir -p /pangolinlogs/etcd
    sudo chown -R postgres:postgres /pangolinlogs
    sudo chmod -R 700 /pangolinlogs

Шаг 3. Конфигурирование Pangolin Manager

  1. Настройка Pangolin Manager DCS осуществляется параметрами в секции etcd в конфигурационном файле Pangolin Manager /etc/pangolin-manager/postgres.yml. С помощью текстового редактора под пользователем postgres отредактируйте конфигурационный файл Pangolin Manager /etc/pangolin-manager/postgres.yml на всех узлах кластера:

    • etcd:hosts – необходимо указать список узлов кластера (<ip-address_master>:2379,<ip-address_replica>:2379,<ip-address_arbiter>:2379);
    • etcd:username – необходимо указать имя пользователя для доступа к REST API etcd (patronietcd), который создается на шаге 7;
    • etcd:password – необходимо указать пароль пользователя для доступа к REST API etcd.

    Пример заполненной секции etcd в файле /etc/pangolin-manager/postgres.yml:

    etcd:
    hosts: <ip-address_master>:2379,<ip-address_replica>:2379,<ip-address_arbiter>:2379
    username: patronietcd
    password: <sample_password>
  2. С помощью текстового редактора под пользователем postgres выставьте значение параметра installer.cluster_type в конфигурационном файле Pangolin Manager /etc/pangolin-manager/postgres.yml в значение cluster-patroni-etcd-pgbouncer на мастере и на реплике.

    Пример корректно заполненного параметра installer.cluster_type:

    postgresql:
    parameters:
    installer.cluster_type: cluster-patroni-etcd-pgbouncer

Шаг 4. Конфигурирование etcd

  1. С помощью текстового редактора под пользователем root скорректируйте конфигурационный файл etcd /etc/etcd/etcd.conf по следующему шаблону:

    ETCD_NAME="<hostname -s>"
    ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
    ETCD_ADVERTISE_CLIENT_URLS="http://<hostname>:2379"
    ETCD_LISTEN_PEER_URLS="http://0.0.0.0:2380"
    ETCD_INITIAL_ADVERTISE_PEER_URLS="http://<hostname>:2380"
    ETCD_INITIAL_CLUSTER_TOKEN="single"
    ETCD_INITIAL_CLUSTER="<hostname -s master>=http://<hostname_master_>:2380,<hostname_ -s replica_>=http://<hostname_replica_>:2380,<hostname -s arbiter>=http://<hostname_arbiter_>:2380"
    ETCD_INITIAL_CLUSTER_STATE="new"
    ETCD_DATA_DIR="/var/lib/etcd"
    ETCD_ELECTION_TIMEOUT="5000"
    ETCD_HEARTBEAT_INTERVAL="1000"
    ETCD_ENABLE_V2="true"
    ETCD_LOG_OUTPUTS="/pangolinlogs/etcd/etcd.log"
    ETCD_LOGGER="zap"
    Обозначения

    Описание параметровetcd.conf:

    • ETCD_LISTEN_CLIENT_URLS — список ссылок, с которых собирается трафик клиентов;
    • ETCD_ADVERTISE_CLIENT_URLS — список ссылок клиентов этого элемента кластера для публичной передачи. Передаваемые ссылки клиентов будут доступны системам, взаимодействующим с кластером etcd. Клиентские библиотеки обрабатывают эти ссылки для подключения к кластеру etcd;
    • ETCD_LISTEN_PEER_URLS — список ссылок, с которых собирается трафик одноранговых узлов;
    • ETCD_INITIAL_ADVERTISE_PEER_URLS — список ссылок пиров этого элемента кластера для передачи другим элемента кластера;
    • ETCD_INITIAL_CLUSTER — исходная конфигурация кластера для начальной загрузки. То есть все узлы и их URL (конструкция выглядит следующим образом «host_name_1=http://ip_iddress:2379,host_name_2=http://ip_iddress:2379,host_name_3=http://ip_iddress:2379);
    • ETCD_INITIAL_CLUSTER_STATE — исходное состояние кластера (new или existing);
    • ETCD_INITIAL_CLUSTER_TOKEN — исходный токен кластера etcd во время начальной загрузки. При использовании нескольких кластеров позволяет избежать непреднамеренного взаимодействия между ними;
    • ETCD_DATA_DIR - каталог, в котором находится база данных etcd, wal и снепшоты Etcd;
    • ETCD_HEARTBEAT_INTERVAL — время (мс) периода проверки (heartbeat);
    • ETCD_ELECTION_TIMEOUT — время (в мс) тайм-аута алгоритма выбора;
    • ETCD_ENABLE_V2 - поддержка версии API v2;
    • ETCD_LOG_OUTPUTS - путь до логов etcd;
    • ETCD_LOGGER - уровень детализации журнала.
  2. Назначьте права на конфигурационный файл etcd /etc/etcd/etcd.conf:

    sudo chmod 700 -R /etc/etcd /var/lib/etcd
    sudo chown postgres:postgres -R /etc/etcd /var/lib/etcd

Шаг 5. Создание service-файла etcd

  1. С помощью текстового редактора под пользователем root отредактируйте файл /usr/lib/systemd/system/etcd.service по следующему шаблону:

    Сведения

    Если файлetcd.service не был создан при установке пакета, создайте вручную.

    [Unit]
    Description=Etcd Server
    After=network.target
    After=network-online.target
    Wants=network-online.target

    [Service]
    Type=notify
    WorkingDirectory=/var/lib/etcd/
    EnvironmentFile=-/etc/etcd/etcd.conf
    User=postgres
    ## set GOMAXPROCS to number of processors
    ExecStart=/bin/bash -c "GOMAXPROCS=$(nproc) ionice -c2 -n0 /usr/bin/etcd"

    Restart=on-failure
    LimitNOFILE=65536

    [Install]
    WantedBy=multi-user.target
  2. Назначьте права на сервисный файл etcd /usr/lib/systemd/system/etcd.service:

    sudo chmod 600 /usr/lib/systemd/system/etcd.service
    sudo chown postgres:postgres /usr/lib/systemd/system/etcd.service
  3. Перечитайте конфигурацию systemd:

    sudo systemctl daemon-reload

Шаг 6. Запуск etcd

  1. Запустите etcd:

    sudo systemctl start etcd
  2. Проверьте корректность запуска и состояния сервиса:

    sudo systemctl status etcd
    Пример запуска сервиса

    ● etcd.service - Etcd Server
    Loaded: loaded (/usr/lib/systemd/system/etcd.service; disabled; preset: disabled)
    Active: active (running) since Mon 2026-02-02 21:18:59 MSK; 48s ago
    Main PID: 2332389 (etcd)
    Tasks: 10 (limit: 50508)
    Memory: 9.6M
    CPU: 107ms
    CGroup: /system.slice/etcd.service
    └─2332389 /usr/bin/etcd

    Feb 02 21:18:59 srv-123 bash[2332389]: {"level":"info","ts":"2026-02-02T21:18:59.522788+0300","caller":"etcdserver/server.go:2144","msg":"published local member to cluster through raft","local-memb>
    Feb 02 21:18:59 srv-123 bash[2332389]: {"level":"info","ts":"2026-02-02T21:18:59.522829+0300","caller":"embed/serve.go:124","msg":"ready to serve client requests"}
    Feb 02 21:18:59 srv-123 bash[2332389]: {"level":"info","ts":"2026-02-02T21:18:59.522929+0300","caller":"etcdmain/main.go:44","msg":"notifying init daemon"}
    Feb 02 21:18:59 srv-123 bash[2332389]: {"level":"info","ts":"2026-02-02T21:18:59.523010+0300","caller":"etcdmain/main.go:50","msg":"successfully notified init daemon"}
    Feb 02 21:18:59 srv-123 bash[2332389]: {"level":"info","ts":"2026-02-02T21:18:59.522898+0300","caller":"membership/cluster.go:587","msg":"set initial cluster version","cluster-id":"ead42cd4ad83b6eb>
    Feb 02 21:18:59 srv-123 bash[2332389]: {"level":"info","ts":"2026-02-02T21:18:59.523078+0300","caller":"api/capability.go:75","msg":"enabled capabilities for version","cluster-version":"3.5"}
    Feb 02 21:18:59 srv-123 bash[2332389]: {"level":"info","ts":"2026-02-02T21:18:59.523096+0300","caller":"etcdserver/server.go:2721","msg":"cluster version is updated","cluster-version":"3.5"}
  3. Проверьте состояние узлов кластера:

    ETCDCTL_API=2 etcdctl --endpoints http://abs-0.11:2379,http://abs-0.12:2379,http://abs-0.13:2379 cluster-health
    ETCDCTL_API=3 etcdctl --endpoints=http://abs-0.11:2379,http://abs-0.12:2379,http://abs-0.13:2379 member list -w table
    Пример успешного выполнения команд

    [root]# ETCDCTL_API=2 etcdctl --endpoints http://abs-0.11:2379,http://abs-0.12:2379,http://abs-0.13:2379 cluster-health
    member 50b3cea48056d248 is healthy: got healthy result from http://abs-0.11:2379
    member a52b0ae6e860d8f8 is healthy: got healthy result from http://abs-0.12:2379
    member ba15750e235af505 is healthy: got healthy result from http://abs-0.13:2379
    cluster is healthy
    [root]# ETCDCTL_API=3 etcdctl --endpoints=http://abs-0.11:2379,http://abs-0.12:2379,http://abs-0.13:2379 member list -w table
    +------------------+---------+----------+----------------------+----------------------+------------+
    | ID | STATUS | NAME | PEER ADDRS | CLIENT ADDRS | IS LEARNER |
    +------------------+---------+----------+----------------------+----------------------+------------+
    | 50b3cea48056d248 | started | abs-0-11 | http://abs-0.11:2380 | http://abs-0.11:2379 | false |
    | a52b0ae6e860d8f8 | started | abs-0-12 | http://abs-0.12:2380 | http://abs-0.12:2379 | false |
    | ba15750e235af505 | started | abs-0-13 | http://abs-0.13:2380 | http://abs-0.13:2379 | false |
    +------------------+---------+----------+----------------------+----------------------+------------+

Шаг 7. Добавление ролевой модели

  1. Из под пользователя postgres на узле арбитра выполните следующие команды для добавления ролевой модели:

    # для версии API v3
    export ETCDCTL_API=3
    etcdctl --endpoints=<hostname узла мастер>:2379,<hostname узла реплики>:2379,<hostname узла арбитр>:2379 user add root:'<root_password>'
    etcdctl --endpoints=<hostname узла мастер>:2379,<hostname узла реплики>:2379,<hostname узла арбитр>:2379 user add patronietcd:'<sample_password>'
    etcdctl --endpoints=<hostname узла мастер>:2379,<hostname узла реплики>:2379,<hostname узла арбитр>:2379 --user=root:'<root_password>' role add patroni
    etcdctl --endpoints=<hostname узла мастер>:2379,<hostname узла реплики>:2379,<hostname узла арбитр>:2379 role grant-permission patroni readwrite --prefix=true /service/
    etcdctl --endpoints=<hostname узла мастер>:2379,<hostname узла реплики>:2379,<hostname узла арбитр>:2379 --user=root:'<root_password>' user grant-role patronietcd patroni
    etcdctl --endpoints=<hostname узла мастер>:2379,<hostname узла реплики>:2379,<hostname узла арбитр>:2379 --user=root:'<root_password>' auth enable

    # для версии API v2
    export ETCDCTL_API=2
    etcdctl --endpoints=http://<hostname узла мастер>:2379,http://<hostname узла реплики>:2379,http://hostname узла арбитр>:2379 user add root:'<root_password>'
    etcdctl --endpoints=http://<hostname узла мастер>:2379,http://<hostname узла реплики>:2379,http://hostname узла арбитр>:2379 user add patronietcd:'<sample_password>'
    etcdctl --endpoints=http://<hostname узла мастер>:2379,http://<hostname узла реплики>:2379,http://hostname узла арбитр>:2379 -u root:'<root_password>' role add patroni
    etcdctl --endpoints=http://<hostname узла мастер>:2379,http://<hostname узла реплики>:2379,http://hostname узла арбитр>:2379 role grant patroni -path '/service/*' -readwrite
    etcdctl --endpoints=http://<hostname узла мастер>:2379,http://<hostname узла реплики>:2379,http://hostname узла арбитр>:2379 -u root:'<root_password>' user grant patronietcd -roles patroni
    etcdctl --endpoints=http://<hostname узла мастер>:2379,http://<hostname узла реплики>:2379,http://hostname узла арбитр>:2379 -u root:'<root_password>' auth enable
    etcdctl --endpoints=http://<hostname узла мастер>:2379,http://<hostname узла реплики>:2379,http://hostname узла арбитр>:2379 -u root:'<root_password>' role revoke guest -path '/*' --readwrite
    Пример успешного выполнения команд

    [root]# export ETCDCTL_API=3
    [root]# etcdctl --endpoints=abs-0-11:2379,abs-0-12:2379,abs-0-13:2379 user add root:'root_password'
    User root created
    [root]# etcdctl --endpoints=abs-0-11:2379,abs-0-12:2379,abs-0-13:2379 user add patronietcd:'sample_password'
    User patronietcd created
    [root]# etcdctl --endpoints=abs-0-11:2379,abs-0-12:2379,abs-0-13:2379 --user=root:'root_password' role add patroni
    Role patroni created
    [root]# etcdctl --endpoints=abs-0-11:2379,abs-0-12:2379,abs-0-13:2379 role grant-permission patroni readwrite --prefix=true /service/
    Role patroni updated
    [pprb_dev]# etcdctl --endpoints=abs-0-11:2379,abs-0-12:2379,abs-0-13:2379 --user=root:'root_password' user grant-role patronietcd patroni
    Role patroni is granted to user patronietcd
    [pprb_dev]# etcdctl --endpoints=abs-0-11:2379,abs-0-12:2379,abs-0-13:2379 --user=root:'root_password' auth enable
    Authentication Enabled

    [root]# export ETCDCTL_API=2
    [root]# etcdctl --endpoints=http://abs-0-11:2379,http://abs-0-12:2379,http://abs-0-13:2379 user add root:'root_password'
    User root created
    [root]# etcdctl --endpoints=http://abs-0-11:2379,http://abs-0-12:2379,http://abs-0-13:2379 user add patronietcd:'sample_password'
    User patronietcd created
    [root]# etcdctl --endpoints=http://abs-0-11:2379,http://abs-0-12:2379,http://abs-0-13:2379 -u root:'root_password' role add patroni
    Role patroni created
    [root]# etcdctl --endpoints=http://abs-0-11:2379,http://abs-0-12:2379,http://abs-0-13:2379 role grant patroni -path '/service/*' -readwrite
    Role patroni updated
    [root]# etcdctl --endpoints=http://abs-0-11:2379,http://abs-0-12:2379,http://abs-0-13:2379 -u root:'root_password' user grant patronietcd -roles patroni
    User patronietcd updated
    [root]# etcdctl --endpoints=http://abs-0-11:2379,http://abs-0-12:2379,http://abs-0-13:2379 -u root:'root_password' auth enable
    Authentication Enabled
    [root]# etcdctl --endpoints=http://abs-0-11:2379,http://abs-0-12:2379,http://abs-0-13:2379 -u root:'root_password' role revoke guest -path '/*' --readwrite
    Role guest updated

Дальнейшие шаги

После завершения ручного пошагового конфигурирования кластера СУБД Pangolin доступно: