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

Конфигурирование

Наличие компонента Pangolin Manager переопределяет подход к конфигурированию кластера. Если в standalone-конфигурации основными конфигурационными файлами были postgresql.conf и pg_hba.conf, то теперь управление всеми параметрами в этих файлах берет на себя Pangolin Manager.

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

Типы конфигурации

Ядро Patroni поддерживает три типа конфигурации:

  • Глобальная динамическая конфигурация — хранится в распределенном хранилище конфигурации (etcd, либо DCS) и применяется на всех узлах кластера. Динамическую конфигурацию можно изменить в любое время с помощью утилиты pangolin-manager-ctl edit-config или через REST API.
  • Локальная конфигурация — определяется в конфигурационном файле postgres.yml и имеет приоритет над динамической конфигурацией (за исключением параметров с наивысшим приоритетом, описанных в подразделе «Ограничения конфигураций»). Изменения вступают в силу после перезагрузки конфигурации без перезапуска компонента. Подробнее о порядке применения параметров читайте в подразделе «Последовательность применения параметров».
  • Конфигурация окружения — позволяет переопределить параметры локальной конфигурации с помощью переменных окружения. В СУБД Pangolin не используется.
Примечание

В данной документации рассматриваются только динамическая и локальная конфигурации, так как конфигурация окружения в СУБД Pangolin не применяется. При необходимости, обратитесь к интегрированной переведенной документациикомпонента Patroni.

Динамическая конфигурация

Динамическая конфигурация хранится в распределенном хранилище конфигурации и применяется на всех узлах кластера. Посмотреть ее можно командой show-config, а изменить через edit-config. Изменения вступают в силу асинхронно (при следующем цикле пробуждения) для каждого узла.

О настройке, применении и перечне параметров динамической конфигурации читайте в одноименном разделе.

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

Локальная конфигурация определяется в файле postgres.yml (по умолчанию: /etc/pangolin-manager/postgres.yml) и имеет приоритет над динамической конфигурацией.

О настройке, применении и перечне параметров локальной конфигурации читайте в одноименном разделе.

Сравнение конфигураций

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

Характеристика

Динамическая конфигурация

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

Где хранится

В распределенном хранилище (etcd / Pangolin DCS)

В файле /etc/pangolin-manager/postgres.yml на каждом узле

Область применения

Все узлы кластера одновременно

Только тот узел, на котором задана

Приоритет

Низкий (переопределяется локальной конфигурацией)

Высокий (переопределяет динамическую конфигурацию)

Когда применяется

Асинхронно, при следующем цикле пробуждения узла

После перезагрузки конфигурации (reload) без перезапуска компонента

Как изменить

Через pangolin-manager-ctl edit-config или REST API

Редактированием файла и выполнением pangolin-manager-ctl reload или отправкой сигнала SIGHUP

Основная функция

Централизованное управление параметрами кластера, обеспечивающее согласованность настроек между всеми узлами

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

Ограничения конфигураций

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

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

ПараметрЗначение по умолчанию
max_connections20
max_locks_per_transaction64
max_worker_processes8
max_prepared_transactions0
wal_levelhot_standby
track_commit_timestampoff
Сведения

Эти параметры не записываются в файлpostgresql.conf. Вместо этого они передаются непосредственно при запуске экземпляра СУБД через команду pg_ctl start (кроме секции bootstrap, она загружается единожды при инициализации). Благодаря этому они имеют наивысший приоритет — даже выше, чем параметры, установленные через ALTER SYSTEM (подробнее в подразделе о последовательности применения параметров).

Локальные параметры:

Некоторые параметры можно задать только в локальной конфигурации на каждом узле, к примеру:

  • postgresql.listen — адрес и порт, на которых СУБД принимает подключения;
  • postgresql.data_dir — путь к каталогу данных.

Эти параметры уникальны для каждого узла (например, у каждого сервера свой IP-адрес и своя директория данных), поэтому они не могут быть заданы через динамическую конфигурацию. Локальная конфигурация всегда переопределяет динамическую для таких параметров.

Секция bootstrap

Секция bootstrap в конфигурационном файле /etc/pangolin-manager/postgres.yml используется только один раз — при первой инициализации нового кластера.

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

  • ttl
  • loop_wait
  • retry_timeout
  • maximum_lag_on_failover
  • max_timelines_history
  • synchronous_mode
  • synchronous_mode_strict

Загружаются только один раз при инициализации нового кластера, они прописаны в секции bootstrap в конфигурационном файле /etc/pangolin-manager/postgres.yml.

Последовательность применения параметров

Pangolin Manager управляет основным процессом сервера Pangolin через его конфигурационные файлы, которые размещаются в директории $PGDATA:

  • postgresql.conf - файл конфигурации, в который перезаписываются параметры динамической конфигурации;
  • postgresql.base.conf - файл базовой конфигурации postgresql. Если данного файла не существует, он будет создан и в него будет перемещена конфигурация из postgresql.conf при изменении параметров Pangolin Manager. В файле postgresql.conf появится соответствующее предупреждение, о том что данный файл меняется автоматически из Pangolin Manager и появится строка, включающая параметры из postgresql.base.conf. Данный путь и имя файла возможно изменить с помощью параметра custom_conf в /etc/pangolin-manager/postgres.yml.

При запуске или перезагрузке СУБД Pangolin параметры применяются строго в определенном порядке. Параметрам более поздних шагов присваивается наивысший приоритет (они перезаписывают предыдущие при совпадении):

  1. Базовая конфигурация. Если в секции postgresql файла postgres.yml задан параметр custom_conf, используется указанный файл. Если custom_conf не задан, но существует postgresql.base.conf — он используется как базовый. Если нет ни того, ни другого, исходный postgresql.conf переименовывается в postgresql.base.conf.
  2. Динамическая конфигурация из DCS. Параметры из динамической конфигурации записываются в postgresql.conf. Файл postgresql.conf включает базовую конфигурацию (postgresql.base.conf или файла по адресу custom_conf).
  3. Локальная конфигурация из postgres.yml Параметры из файла /etc/pangolin-manager/postgres.yml также записываются в postgresql.conf. В случае совпадения с динамической конфигурацией они будут переопределены (локальная конфигурация приоритетнее).
  4. Файл postgresql.auto.conf. Параметры, установленные через ALTER SYSTEM, переопределяют конфигурацию из postgresql.conf.
  5. Параметры командной строки. Критические параметры, необходимые Pangolin Manager для управления кластером (listen_addresses, port, cluster_name, hot_standby, wal_log_hints), передаются через -o --name=value в pg_ctl start и имеют наивысший приоритет.
Примечание

Эта последовательность позволяет настроить все узлы (шаг 2), настроить конкретный узел с помощью локальной конфигурации (шаг 3) илиALTER SYSTEM (шаг 4) и гарантировать, что параметры, необходимые для работы Pangolin Manager соблюдаются (шаг 5), а также оставляет место для инструментов настройки, которые управляют postgresql.conf напрямую без участия Pangolin Manager (шаг 1).

Команды restart и reload

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

  • Команда restart — полностью останавливает и снова запускает экземпляр СУБД Pangolin. Подходит для параметров с контекстом postmaster.
  • Команда reload не перезагружает экземпляр, а лишь перечитывает конфигурацию. Подходит для параметров с контекстом user, superuser, sighup.

Для применения параметров компонентов Pangolin Manager, либо Pangolin DCS достаточно выполнить reload службы pangolin-manager (секции конфигурации restapi, bootstrap и pangolin_dcs).

Генерация и проверка конфигурации

Pangolin Manager предоставляет команды для генерации и проверки локальной конфигурации.

Генерация образца конфигурации

Создание образца локальной конфигурации Pangolin Manager:

pangolin-manager --generate-sample-config [configfile]

Параметр

Описание

configfile

Полный путь к файлу конфигурации для сохранения результата. Если не указан, результат выводится в stdout

Генерация конфигурации для работающего экземпляра

Создание конфигурации Pangolin Manager для локально запущенного экземпляра СУБД:

pangolin-manager --generate-config [--dsn DSN] [configfile]

Параметр

Описание

configfile

Полный путь к файлу конфигурации для сохранения результата. Если не указан, результат выводится в stdout

--dsn DSN

Строка подключения к СУБД (имеет приоритет над переменными окружения)

Все параметры конфигурации, определенные в исходном экземпляре СУБД Pangolin, используются в качестве источника для параметров конфигурации Pangolin Manager.

Проверка конфигурации

Проверка заданной конфигурации Pangolin Manager:

pangolin-manager --validate-config [configfile]

Параметр

Описание

configfile

Полный путь к файлу конфигурации для проверки