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

Локальная конфигурация

Локальная конфигурация определяется в файле postgres.yml (по умолчанию: /etc/pangolin-manager/postgres.yml) и имеет приоритет над динамической конфигурацией. Файл конфигурации может быть либо одним файлом YAML, либо каталогом. Когда это каталог, все файлы YAML загружаются по одному в алфавитном порядке имен файлов. В случае, если ключ определен в нескольких файлах, предпочтение отдается последнему файлу.

Изменение конфигурации

Локальная конфигурация может быть изменена (редактированием файла postgres.yml) и перезагружена во время выполнения (без перезапуска Pangolin Manager) отправкой сигнала SIGHUP процессу, выполнением запроса POST /reload к REST API или командой pangolin-manager-ctl reload.

Внимание!

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

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

  • через pangolin-manager-ctl:

    pangolin-manager-ctl reload
  • через REST API:

    $ curl -s http://localhost:8008/reload
  • средствами systemctl:

    sudo systemctl reload pangolin-manager

Примеры

Изменение конфигурационных параметров

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

    Пример команды:

    vim /etc/pangolin-manager/postgres.yml

    К примеру, измените секцию pg_hba.

    host replication postgres 127.0.0.1/32 scram-sha-256
  2. Далее в интерактивном режиме запустить перечитывание конфигурации кластера. Перечитывание конфигурации будет выполнено в течении 10 секунд.

    $ reload
    + Cluster: $CLUSTERNAME (<cluster_id>) -------+-----------+-----+-------------+-----+------------+-----+
    | Member | Host | Role | State | TL | Receive LSN | Lag | Replay LSN | Lag |
    +-------------+----------------+--------------+-----------+-----+-------------+-----+------------+-----+
    | srv1 | 127.0.0.1:5432 | Leader | running | 11 | | | | |
    | srv2 | 127.0.0.1:5433 | Sync Standby | running | 11 | 0/C000000 | 0 | 0/C000000 | 0 |
    +-------------+----------------+--------------+-----------+-----+-------------+-----+------------+-----+
    Are you sure you want to reload members srv-1, srv-2? [y/N]: y
    Reload request received for member srv-1 and will be processed within 10 seconds
    Reload request received for member srv-2 and will be processed within 10 seconds

Команда reload является алиасом команды pangolin-manager-ctl reload:

[postgres@srv1 ~]$ alias reload

alias reload='pangolin-manager-ctl -c /etc/pangolin-manager/postgres.yml reload $CLUSTERNAME'

Справочник конфигурационных параметров

Глобальные параметры

Параметр

Тип данных

Описание

name

string

Имя хоста. Должно быть уникальным для кластера

namespace

string

Путь внутри хранилища конфигурации, где Pangolin Manager будет хранить информацию о кластере. Значение по умолчанию: /service

scope

string

Имя кластера

thread_pool_size

integer

Размер пула потоков, используемого Patroni для выполнения асинхронных задач и связи через REST API с другими участниками во время гонки лидеров или проверок отказоустойчивости. Минимальное значение: 5, значение по умолчанию: 5

thread_stack_size

integer

Размер стека для потоков, запускаемых Patroni. Значение должно быть выровнено по 64 КБайт. Минимальное значение: 65536 байт (64 КБайт), значение по умолчанию: 524288 байт (512 КБайт)

ssl_legacy_provider

boolean

Управление активацией устаревших алгоритмов через подгрузку провайдера Legacy в OpenSSL 3.0.0+ (аналог Engine API в OpenSSL 1.+). Необходимо для обеспечения обратной совместимости с компонентами, использующими OpenSSL 1.+

Параметры журнала

Секция log: в конфигурационном файле:

Параметр

Тип данных

Описание

type

enum (plain, json)

Тип форматирования логов

level

enum

Уровень логирования. Значение по умолчанию: INFO

traceback_level

enum

Уровень трассировки стека вызовов. Значение по умолчанию: ERROR

format

string / array

Формат логов. Значение по умолчанию: %(asctime)s %(levelname)s: %(message)s

dateformat

string

Формат даты и времени

max_queue_size

integer

Максимальный размер внутренней очереди журнала. Значение по умолчанию: 1000 записей

destination

enum

Назначение для вывода журнала. Возможные значения: file (запись в файл), syslog (запись в стандартный поток вывода)

file_name

string

Шаблон названия журнала приложения. Значение по умолчанию — pangolin-manager-%Y-%m-%d_%H%M%S.log

dir

string

Каталог для записи журналов приложений. Каталог должен существовать и быть доступным для записи пользователем, выполняющим Pangolin Manager

file_num

integer

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

file_size

integer

Размер файла журнала (в байтах), который вызывает сворачивание журнала

loggers

object

Уровень регистрации для каждого модуля Python. Пример: {patroni.postmaster: WARNING, urllib3: DEBUG}

static_fields

object

Статические поля, добавляемые в каждую запись журнала

file_mode

octal

Права доступа к файлу лога. Значение по умолчанию: 600. Применение параметра производится только после остановки/перезапуска Pangolin средствами systemctl

redirect_min_size

integer

Минимальный размер свободного места (в Кбайтах) в системе для логирования, при достижении которого происходит переключение потока логирования в системный журнал. При установке 0 проверка свободного места не осуществляется. После освобождения места в папке логирования необходимо выполнить команду reload и логирование продолжится в файл

Параметры аудита

Секция audit: в конфигурационном файле:

Параметр

Тип данных

Описание

enabled

boolean

Включить/выключить аудит событий безопасности

directory

string

Путь к каталогу для файлов аудита. В случае если указанная директория не существует, Pangolin Manager попытается ее создать (права на директорию 600). В случае неудачи в лог будет выведено сообщение, а логирование продолжится в предыдущий файл

filename

string

Имя файла аудита. Значение по умолчанию: pangolin-manager-audit. Если включена любая из ротаций, к имени файла через дефис добавляется дата создания в формате %Y-%m-%d_%H%M%S

rotation_age

string / integer

Максимальное время использования отдельного лог-файла, после которого будет создан новый файл. Формат: 1d, 24h, 3600 (секунды)

rotation_size

string / integer

Максимальный размер отдельного лог-файла (в байтах), после достижения которого будет создан новый файл журнала. Формат: 100M, 1G

level

string

Уровень логирования. Возможные значения: LOW, REGULAR, HIGH, CRITICAL, FATAL, EMERGENCY

file_mode

octal

Права доступа к файлу аудита. Значение по умолчанию: 0600

Параметры etcd

Примечание

Если необходимо, чтобы Pangolin Manager работал с кластером etcd через протокол версии 3, нужно использовать секциюetcd3 в файле конфигурации. Все параметры конфигурации такие же, как и для etcd.

Ключ, созданный с использованием протокола версии 2, не виден при использовании протокола версии 3 и наоборот, поэтому невозможно переключиться с etcd на etcd3 просто обновив конфигурационный файл.

Большинство параметров являются необязательными, но необходимо указать один из host, hosts, url, proxy или srv. Параметры секции etcd: / etcd3::

Параметр

Тип данных

Описание

host

string

Имя хоста и порт для конечной точки etcd

hosts

string / array

Список конечных точек etcd в формате host1:port1,host2:port2. Может быть строкой с разделителями-запятыми или фактическим списком в формате YAML

use_proxies

boolean

Если установлено в true, Pangolin Manager будет рассматривать hosts как список прокси и не будет выполнять обнаружение топологии кластера etcd

url

string

URL для etcd

proxy

string

Прокси-URL для etcd. Если подключаетесь к etcd с использованием прокси, используйте этот параметр вместо параметра url

srv

string

Домен для поиска записей SRV для автоматического обнаружения кластеров

srv_suffix

string

Настраивает суффикс имени SRV, который запрашивается во время обнаружения. Используйте этот флаг для различения нескольких кластеров etcd под одним и тем же доменом. Работает только в сочетании с srv

protocol

string

http или https; если не указано, используется http. Если указан url или proxy, он возьмет протокол от них

username

string

Имя пользователя для аутентификации etcd

password

string

Пароль для аутентификации etcd

cacert

string

Сертификат центра сертификации. Если он присутствует, это позволит выполнить проверку подлинности

cert

string

Файл с сертификатом клиента

key

string

Файл с ключом клиента. Может быть пустым, если ключ является частью cert

Параметры СУБД

Параметры секции postgresql::

Параметр

Тип данных

Описание

authentication:superuser:username

string

Имя для суперпользователя, используемое Pangolin Manager для подключения к СУБД

authentication:superuser:password

string

Пароль для суперпользователя.

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

authentication:superuser:sslmode

string

Режим согласования TLS с сервером. Режимом по умолчанию является prefer

authentication:superuser:sslkey

string

Расположение секретного ключа, используемого с сертификатом клиента

authentication:superuser:sslpassword

string

Пароль для секретного ключа, указанного в sslkey

authentication:superuser:sslcert

string

Расположение сертификата клиента

authentication:superuser:sslrootcert

string

Расположение файла с сертификатами удостоверяющих центров (УЦ) для проверки сертификата сервера

authentication:superuser:sslcrl

string

Расположение файла со списком отозванных сертификатов

authentication:superuser:sslcrldir

string

Расположение каталога с файлами, содержащими список отозванных сертификатов

authentication:superuser:gssencmode

string

Определяет, будет ли и с каким приоритетом устанавливаться безопасное соединение GSS TCP/IP с сервером

authentication:superuser:channel_binding

string

Контролирует использование клиентом привязки каналов

authentication:replication:username

string

Имя пользователя для репликации. Пользователь будет создан во время инициализации.

Реплики будут использовать этого пользователя для доступа к источнику репликации через потоковую репликацию

authentication:replication:password

string

Пароль для репликации. Пользователь будет создан во время инициализации

authentication:replication:sslmode

string

Режим согласования TLS с сервером. Режимом по умолчанию является prefer

authentication:replication:sslkey

string

Расположение секретного ключа, используемого с сертификатом клиента

authentication:replication:sslpassword

string

Пароль для секретного ключа, указанного в sslkey

authentication:replication:sslcert

string

Расположение клиентского сертификата

authentication:replication:sslrootcert

string

Расположение файла с сертификатами удостоверяющих центров (УЦ) для проверки сертификата сервера

authentication:replication:sslcrl

string

Расположение файла со списком отозванных сертификатов

authentication:replication:sslcrldir

string

Расположение каталога с файлами, содержащими список отозванных сертификатов

authentication:replication:gssencmode

string

Определяет, будет ли и с каким приоритетом устанавливаться безопасное соединение GSS TCP/IP с сервером

authentication:replication:channel_binding

string

Контролирует использование клиентом привязки каналов

authentication:rewind:username

string

Имя пользователя для pg_rewind, пользователь будет создан во время инициализации

authentication:rewind:password

string

Пароль пользователя для pg_rewind

authentication:rewind:sslmode

string

Режим согласования TLS с сервером. Режимом по умолчанию является prefer

authentication:rewind:sslkey

string

Расположение секретного ключа, используемого с сертификатом клиента

authentication:rewind:sslpassword

string

Пароль для секретного ключа, указанного в sslkey

authentication:rewind:sslcert

string

Расположение сертификата клиента

authentication:rewind:sslrootcert

string

Расположение файла с сертификатами удостоверяющих центров (УЦ) для проверки сертификата сервера

authentication:rewind:sslcrl

string

Расположение файла со списком отозванных сертификатов

authentication:rewind:sslcrldir

string

Расположение каталога с файлами, содержащими список отозванных сертификатов

authentication:rewind:gssencmode

string

Определяет, будет ли установлена безопасная связь GSS TCP/IP с сервером и с каким приоритетом

authentication:rewind:channel_binding

string

Контролирует использование клиентом привязки каналов

callbacks:on_reload

string

Скрипт, выполняемый при перезагрузке конфигурации

callbacks:on_restart

string

Скрипт, выполняемый при перезапуске СУБД (без изменения роли)

callbacks:on_role_change

string

Скрипт, выполняемый при повышении или понижении роли СУБД

callbacks:on_start

string

Скрипт, выполняемый при запуске СУБД

callbacks:on_stop

string

Скрипт, выполняемый при остановке СУБД

connect_address

string

IP-адрес и порт, через который СУБД доступна с других узлов и приложений

proxy_address

string

IP-адрес + порт, через который пул соединений (например, Pangolin Pooler) доступен. Значение записывается в членский ключ в DCS как proxy_url

create_replica_methods

array

Упорядоченный список методов создания для преобразования узла в новую реплику. basebackup — метод по умолчанию

data_dir

string

Расположение каталога данных СУБД

config_dir

string

Расположение каталога конфигурации СУБД, по умолчанию — каталог данных

bin_dir

string

Путь к двоичным файлам СУБД (pg_ctl, initdb, pg_controldata, pg_basebackup, postgres, pg_isready, pg_rewind)

bin_name:pg_ctl

string

Пользовательское имя для двоичного файла pg_ctl

bin_name:initdb

string

Пользовательское имя для двоичного файла initdb

bin_name:pg_controldata

string

Пользовательское имя для двоичного файла pg_controldata

bin_name:pg_basebackup

string

Пользовательское имя для двоичного файла pg_basebackup

bin_name:postgres

string

Пользовательское имя для двоичного файла postgres

bin_name:pg_isready

string

Пользовательское имя для двоичного файла pg_isready

bin_name:pg_rewind

string

Пользовательское имя для двоичного файла pg_rewind

listen

string

IP-адрес и порт, к которому подключается СУБД. Допускаются несколько адресов, разделенных запятыми

use_unix_socket

boolean

Предпочитать использование юникс-сокетов для подключения к кластеру. Значение по умолчанию false

use_unix_socket_repl

boolean

Предпочитать использование юникс-сокетов для подключения пользователя репликации к кластеру. Значение по умолчанию false

pgpass

string

Путь к файлу паролей .pgpass

recovery_conf

object

Дополнительные параметры конфигурации, записываемые в recovery.conf при настройке ведомого сервера

custom_conf

string

Путь к пользовательскому файлу conf, который будет использоваться вместо base.conf

bin_dir_client

string

Путь до исполняемых файлов клиентской части (/usr/pangolin-dbms-client/bin)

parameters

object

Список настроек конфигурации для СУБД

pg_hba

array

Список строк для генерации pg_hba.conf. Игнорируется, если hba_file установлен в нестандартное значение

pg_ident

array

Список строк для генерации pg_ident.conf. Игнорируется, если ident_file установлен в нестандартное значение

pg_quota

array

Массив строк конфигурации pg_quota.conf

pg_ctl_timeout

integer

Время ожидания pg_ctl при выполнении start, stop или restart. Значение по умолчанию: 60 секунд

use_pg_rewind

boolean

Попытка использовать pg_rewind на бывшем лидере при присоединении к кластеру в качестве реплики

remove_data_directory_on_rewind_failure

boolean

При включении Pangolin Manager удалит каталог данных СУБД и воссоздаст реплику при неудаче pg_rewind. Значение по умолчанию: false

remove_data_directory_on_diverged_timelines

boolean

Pangolin Manager удаляет каталог данных СУБД и воссоздает реплику при расхождении временных шкал. Значение по умолчанию: false

replica_method

string

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

pre_promote

string

Скрипт защиты от сбоев, выполняемый во время отказа после получения блокировки лидера, но до продвижения реплики

before_stop

string

Скрипт, выполняемый непосредственно перед остановкой СУБД. Выполняется синхронно, блокируя завершение работы

Сведения

Все пароли в конфигурационном файле могут быть:

  • записаны в открытом виде,
  • зашифрованы утилитой pg_auth_password,
  • не указаны вовсе, в таком случае будет проверяться хранилище pg_auth_config.

Параметры тегов

Параметры секции tags::

Параметр

Тип данных

Описание

clonefrom

boolean

Если true, другие узлы могут предпочесть использовать этот узел для начальной загрузки (взять pg_basebackup). Значение по умолчанию: false

noloadbalance

boolean

Если true, узел вернет код состояния HTTP 503 для проверки работоспособности GET /replica и будет исключен из балансировки нагрузки. Значение по умолчанию: false

replicatefrom

string

IP-адрес/имя хоста другой реплики. Используется для поддержки каскадной репликации

nosync

boolean

Если true, узел никогда не будет выбран в качестве синхронной реплики

nofailover

boolean

Контролирует, разрешено ли этому узлу участвовать в гонке лидеров и стать лидером. Значение по умолчанию: false

failover_priority

integer

Целое число, управляющее приоритетом узла во время отказа. Узлы с более высоким приоритетом предпочтительнее. Если 0 или отрицательно — узел не допускается к участию в гонке лидеров

Пользовательские теги

any

Можно добавить собственные теги (например, key1: true, key2: false, key3: 1.4, key4: "RandomString")

Примечание

Укажите только один из параметровnofailover или failover_priority. Указание nofailover: true аналогично указанию failover_priority: 0, а указание nofailover: false присвоит узлу приоритет 1.

Параметры REST API

Параметры секции restapi::

Параметр

Тип данных

Описание

connect_address

string

IP-адрес (или имя хоста) и порт для доступа к REST API Pangolin Manager. Все члены кластера должны иметь возможность подключаться к этому адресу

listen

string

IP-адрес (или имя хоста) и порт, к которому Pangolin Manager будет прослушивать запросы для REST API

authentication:username

string

Имя пользователя для базовой аутентификации для защиты небезопасных конечных точек REST API

authentication:password

string

Пароль для базовой аутентификации для защиты небезопасных конечных точек REST API

certfile

string

Файл с сертификатом в формате PEM. Если не указан, сервер API будет работать без SSL

keyfile

string

Файл с секретным ключом в формате PEM

keyfile_password

string

Пароль для расшифровки keyfile

cafile

string

Файл с пакетом CA_BUNDLE с сертификатами доверенных ЦС для проверки клиентских сертификатов

ciphers

string

Разрешенные наборы шифров (например, ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-GCM-SHA256:!SSLv1:!SSLv2:!SSLv3:!TLSv1:!TLSv1.1)

verify_client

enum

Проверка клиентских сертификатов. Возможные значения: none (по умолчанию), optional, required

allowlist

array

Набор хостов, которым разрешено вызывать небезопасные конечные точки REST API. Один элемент может быть именем хоста, IP-адресом или сетевым адресом с использованием нотации CIDR. По умолчанию allow all

allowlist_include_members

boolean

Если true, позволяет получать доступ к небезопасным конечным точкам REST API из других членов кластера, зарегистрированных в DCS

http_extra_headers

object

Заголовки HTTP для передачи дополнительной информации вместе с ответом HTTP

https_extra_headers

object

Заголовки HTTPS для передачи дополнительной информации вместе с ответом HTTP при включении TLS

request_queue_size

integer

Размер очереди запросов для сокета TCP, используемого REST API. Значение по умолчанию: 5

thread_pool_size

integer

Размер пула потоков REST API. Минимальное значение: 5

server_tokens

enum

Режим отображения токенов сервера. Возможные значения: minimal, productonly, original

pkcs12_config_path

string

Путь к PKCS#12 файлу

no_tls1_3

boolean

Отключить TLS версии 1.3

capath

string

Каталог CA сертификатов

crlfile

string

Путь к CRL файлу

crlpath

string

Каталог CRL файлов

Примечание

Адрес для доступа к REST API (connect_address) должен быть доступен со всех узлов данного кластера Pangolin Manager. Внутренне Pangolin Manager использует его во время гонки лидеров для поиска узлов с минимальной задержкой репликации.

Если включить проверку подлинности клиентских сертификатов (verify_client установлен на required), необходимо предоставить действительные клиентские сертификаты в ctl:certfile, ctl:keyfile, ctl:keyfile_password.

Параметры CTL

Параметры секции ctl::

Параметр

Тип данных

Описание

authentication:username

string

Имя пользователя для базовой аутентификации при доступе к защищенным конечным точкам REST API

authentication:password

string

Пароль для базовой аутентификации при доступе к защищенным конечным точкам REST API

insecure

boolean

Разрешить соединения с REST API без проверки сертификатов SSL

cacert

string

Файл с CA_BUNDLE или каталог с сертификатами доверенных ЦС для проверки сертификатов SSL REST API

certfile

string

Файл с клиентским сертификатом в формате PEM

keyfile

string

Файл с секретным ключом клиента в формате PEM

keyfile_password

string

Пароль для расшифровки клиентского файла ключа

Параметры Pangolin DCS

За параметры компонента Pangolin DCS отвечает секция pangolin_dcs:.

Обязательные параметры

Параметр

Описание

self_addr

Адрес текущего узла в формате ip:port

partner_addrs

Список адресов остальных узлов в формате ip1:port1, ip2:port2

data_dir

Путь к директории для хранения журнала операций и текущих значений ключей

Необязательные параметры

Параметр

Описание

Значение по умолчанию

journal_max_size

Максимальный размер в байтах для файла с журналом операций

10 Мбайт

journal_wait_timeout

Время тайм-аута (в секундах), по истечении которого операция записи/чтения журнала считается неуспешной

Равен параметру loop_wait или 10 секунд

memory_journal_size

Число максимально содержащихся в памяти последних записей журнала

10000

journal_force_read_wait

Выполнение перечитывания журнала операций при перезапуске службы pangolin-manager при значении true

true

dump_dir

Путь к директории для хранения дампа

Берется из параметра data_dir

dump_interval

Интервал создания дампа, в секундах

300

dump_wait_timeout

Время тайм-аута (в секундах), по истечении которого операция записи/чтения дампа считается неуспешной

Равен параметру loop_wait или 10 секунд

logfile

Путь к файлу с логом от pangolin_dcs

<data_dir>/raft.log

log_max_size

Максимальный размер в байтах для файла с логом pangolin_dcs, минимальное значение 8192 байт

20 Мбайт

log_rotation_period

Интервал ротации файла с логом pangolin_dcs, формат <число><{одно из: s, m, h, d}>, соответственно: секунда, месяц, час, день

log_rotation_period=1d (раз в сутки)

heartbeat_interval

Время в миллисекундах, раз в которое мастер DCS-кластера будет сообщать о себе остальным узлам

100 миллисекунд

election_timeout

Время в миллисекундах, по прошествии которого, при неполучении heartbeat от мастера, узел инициирует новое голосование

400 миллисекунд

certfile

Серверный сертификат Pangolin DCS для установления SSL-подключений

Отсутствует

keyfile

Закрытый ключ Pangolin DCS, соответствующий серверному сертификату

Отсутствует

keyfile_password

Пароль для рассекречивания закрытого ключа (если защищен паролем)

Отсутствует

cafile

Корневой сертификат УЦ (CA)

Отсутствует

capath

Путь к директории, содержащей файлы с доверенными сертификатами УЦ (CA)

Отсутствует

crlfile

Путь к файлу со списком отозванных сертификатов (CRL)

Отсутствует

crlpath

Путь к директории, содержащей файлы со списком отозванных сертификатов (CRL)

Отсутствует

pkcs12_config_path

Путь к файлу в формате JSON, который содержит данные для запроса сертификата из SecMan или парольную фразу для доступа к контейнеру PKCS#12 и путь к контейнеру

Отсутствует

verify_client

Определяет, требуется ли запрашивать и проверять клиентский сертификат DCS

Возможные значения:

  • none — клиентский сертификат не запрашивается, проверка сертификата не выполняется;
  • optional — клиентский сертификат запрашивается и, если клиент отправляет сертификат, подвергается проверке;
  • required — клиентский сертификат запрашивается и, если клиент не отправляет сертификат, установка SSL-соединения завершается с ошибкой;

verify_server

Определяет, требуется ли запрашивать и проверять серверный сертификат DCS

false

no_tls1_3

На серверах с установленным OpenSSL 1.1.0 и выше позволяет переключиться с протокола TLSv1.3 на TLSv1.2

false

Дополнительные параметры

Ядро Patroni также предоставляет следующие секции с параметрами для интеграции с внешними компонентами. Подробнее об этом описано в исходной документации компонента Patroni: