Конфигурирование
Наличие компонента 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) | В файле |
Область применения | Все узлы кластера одновременно | Только тот узел, на котором задана |
Приоритет | Низкий (переопределяется локальной конфигурацией) | Высокий (переопределяет динамическую конфигурацию) |
Когда применяется | Асинхронно, при следующем цикле пробуждения узла | После перезагрузки конфигурации ( |
Как изменить | Через | Редактированием файла и выполнением |
Основная функция | Централизованное управление параметрами кластера, обеспечивающее согласованность настроек между всеми узлами | Настройка уникальных параметров узла (адреса, порты, пути к данным, локальные методы аутентификации) |
Ограничения конфигураций
Pangolin Manager контролирует ряд параметров конфигурации, которые могут быть установлены только в динамической конфигурации. Это сделано для обеспечения стабильной работы кластера и предотвращения ошибок администрирования. Параметры делятся на несколько категорий.
- Параметры, требующие одинаковых значений на всех узлах
- Параметры с минимальными значениями
- Параметры, требующие перезапуска экземпляра СУБД
- Критические контролируемые параметры для управления кластером
- Параметры первичной организации кластера
Некоторые параметры СУБД Pangolin должны иметь одинаковые значения на основном сервере и всех репликах. Для таких параметров значения, установленные в локальных файлах конфигурации, не вступают в силу. Изменять их можно только через динамическую конфигурацию (через команду edit-config).
| Параметр | Значение по умолчанию |
|---|---|
max_connections | 20 |
max_locks_per_transaction | 64 |
max_worker_processes | 8 |
max_prepared_transactions | 0 |
wal_level | hot_standby |
track_commit_timestamp | off |
Pangolin Manager контролирует эти параметры и не позволит установить их ниже минимальных значений:
| Параметр | Минимальное значение |
|---|---|
max_wal_senders | 3 |
max_replication_slots | 4 |
wal_keep_segments | 1 |
wal_keep_size | 16 Мбайт |
max_connections | 20 |
max_connectionsmax_prepared_transactionsmax_locks_per_transactionmax_wal_sendersmax_worker_processes
Параметры требуют перезапуска экземпляра СУБД (имеют контекст postmaster). При их изменении необходимо соблюдать особую последовательность перезапуска:
-
При увеличении значения:
- Сначала перезапустите все реплики.
- Затем перезапустите основной узел (мастер).
-
При уменьшении значения:
- Сначала перезапустите основной узел (мастер).
- Затем перезапустите все реплики.
При попытке одновременного перезапуска всех узлов после уменьшения значения Pangolin Manager проигнорирует изменение и перезапустит реплику с исходным значением. Это предотвращает бесконечный цикл сбоев.
listen_addressesportcluster_namehot_standbywal_log_hints
Загружаются только один раз при инициализации из секции bootstrap:
ttlloop_waitretry_timeoutmaximum_lag_on_failovermax_timelines_historysynchronous_modesynchronous_mode_strict
Эти параметры не записываются в файлpostgresql.conf. Вместо этого они передаются непосредственно при запуске экземпляра СУБД через команду pg_ctl start (кроме секции bootstrap, она загружается единожды при инициализации). Благодаря этому они имеют наивысший приоритет — даже выше, чем параметры, установленные через ALTER SYSTEM (подробнее в подразделе о последовательности применения параметров).
Локальные параметры:
Некоторые параметры можно задать только в локальной конфигурации на каждом узле, к примеру:
postgresql.listen— адрес и порт, на которых СУБД принимает подключения;postgresql.data_dir— путь к каталогу данных.
Эти параметры уникальны для каждого узла (например, у каждого сервера свой IP-адрес и своя директория данных), поэтому они не могут быть заданы через динамическую конфигурацию. Локальная конфигурация всегда переопределяет динамическую для таких параметров.
Секция bootstrap
Секция bootstrap в конфигурационном файле /etc/pangolin-manager/postgres.yml используется только один раз — при первой инициализации нового кластера.
Параметры первичной организации кластера, которые загружаются только один раз при инициализации из секции bootstrap:
ttlloop_waitretry_timeoutmaximum_lag_on_failovermax_timelines_historysynchronous_modesynchronous_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 параметры применяются строго в определенном порядке. Параметрам более поздних шагов присваивается наивысший приоритет (они перезаписывают предыдущие при совпадении):
- Базовая конфигурация. Если в секции
postgresqlфайлаpostgres.ymlзадан параметрcustom_conf, используется указанный файл. Еслиcustom_confне задан, но существуетpostgresql.base.conf— он используется как базовый. Если нет ни того, ни другого, исходныйpostgresql.confпереименовывается вpostgresql.base.conf. - Динамическая конфигурация из DCS. Параметры из динамической конфигурации записываются в
postgresql.conf. Файлpostgresql.confвключает базовую конфигурацию (postgresql.base.confили файла по адресуcustom_conf). - Локальная конфигурация из postgres.yml Параметры из файла
/etc/pangolin-manager/postgres.ymlтакже записываются вpostgresql.conf. В случае совпадения с динамической конфигурацией они будут переопределены (локальная конфигурация приоритетнее). - Файл
postgresql.auto.conf. Параметры, установленные черезALTER SYSTEM, переопределяют конфигурацию изpostgresql.conf. - Параметры командной строки. Критические параметры, необходимые 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]
Параметр | Описание |
|---|---|
| Полный путь к файлу конфигурации для сохранения результата. Если не указан, результат выводится в |
Генерация конфигурации для работающего экземпляра
Создание конфигурации Pangolin Manager для локально запущенного экземпляра СУБД:
pangolin-manager --generate-config [--dsn DSN] [configfile]
Параметр | Описание |
|---|---|
| Полный путь к файлу конфигурации для сохранения результата. Если не указан, результат выводится в |
| Строка подключения к СУБД (имеет приоритет над переменными окружения) |
Все параметры конфигурации, определенные в исходном экземпляре СУБД Pangolin, используются в качестве источника для параметров конфигурации Pangolin Manager.
Проверка конфигурации
Проверка заданной конфигурации Pangolin Manager:
pangolin-manager --validate-config [configfile]
Параметр | Описание |
|---|---|
| Полный путь к файлу конфигурации для проверки |