Patroni-assisted fallback
When pg_doorman runs next to PostgreSQL on the same host and the local backend dies (Patroni switchover, OOM, crash), pg_doorman queries the Patroni REST API /cluster, picks a live cluster member, and routes new connections there until Patroni restores the local PostgreSQL — typically 10-30 seconds. One line in [general] enables it for every pool:
general:
patroni_api_urls: ["http://localhost:8008"]Candidate priority: sync_standby (most likely next leader) over replica over leader. Filtered: noloadbalance, nofailover, archive, non-running. Cascade replicas (nostream) kept as valid read targets. Concurrent failures share a single /cluster request via inflight coalescing.
Seven Prometheus metrics under two groups: pg_doorman_patroni_api_* (lookup counters, error counter, duration histogram) and pg_doorman_fallback_* (connections counter, cooldown gauge, active host gauge, cache hits counter). Defaults: cooldown 30s, HTTP timeout 5s, TCP timeout 5s.
See the Patroni-assisted fallback tutorial.
Server-side TLS (pg_doorman → PostgreSQL)
Six SSL modes matching libpq: disable, allow (default), prefer, require, verify-ca, verify-full. Mutual TLS via server_tls_certificate / server_tls_private_key. Per-pool config with global defaults in [general].
Breaking change: server_tls (bool) and verify_server_certificate (bool) are removed — they were parsed but non-functional. Replace with server_tls_mode:
| Old config | New config |
|---|---|
server_tls: false
| server_tls_mode: "disable"
|
server_tls: true
| server_tls_mode: "require"
|
server_tls: true + verify_server_certificate: true
| server_tls_mode: "verify-full"
|
| (not set) | server_tls_mode: "allow" (new default)
|
allow tries plain TCP first; if the server rejects the connection (e.g. pg_hba.conf requires TLS), pg_doorman retries with TLS on a new socket. Matches libpq sslmode=allow. SHOW SERVERS now includes a tls column.
Release pipeline
Adds Ubuntu 26.04 LTS (Resolute Raccoon) to the .deb matrix and Launchpad PPA. Closes #211.
Full changelog: https://ozontech.github.io/pg_doorman/changelog.html
Patroni-assisted fallback
Когда pg_doorman работает рядом с PostgreSQL на одной машине и локальный backend падает (switchover Patroni, OOM, краш), pg_doorman делает запрос к Patroni REST API /cluster, выбирает живого члена кластера и направляет новые соединения туда, пока Patroni не восстановит локальный PostgreSQL — обычно 10-30 секунд. Одна строка в [general] включает это для всех пулов:
general:
patroni_api_urls: ["http://localhost:8008"]Приоритет кандидатов: sync_standby (наиболее вероятный следующий leader) над replica, над leader. Фильтр: noloadbalance, nofailover, archive, не-running. Cascade-реплики (nostream) оставлены как валидные read-цели. Конкурирующие отказы делят один HTTP-запрос через inflight coalescing.
Семь Prometheus-метрик в двух группах: pg_doorman_patroni_api_* (счётчики запросов, счётчик ошибок, histogram длительности) и pg_doorman_fallback_* (счётчик соединений, gauge cooldown, gauge активного fallback-хоста, счётчик кеш-хитов). Значения по умолчанию: cooldown 30s, HTTP-таймаут 5s, TCP-таймаут 5s.
Подробности: руководство по Patroni-assisted fallback.
Server-side TLS (pg_doorman → PostgreSQL)
Шесть SSL-режимов в семантике libpq: disable, allow (по умолчанию), prefer, require, verify-ca, verify-full. Mutual TLS через server_tls_certificate / server_tls_private_key. Конфигурация per-pool с глобальными дефолтами в [general].
Breaking change: server_tls (bool) и verify_server_certificate (bool) удалены — раньше парсились, но не работали. Замена через server_tls_mode (см. таблицу в EN-секции).
allow пробует plain TCP первым; если сервер отклоняет соединение (например, pg_hba.conf требует TLS), pg_doorman повторяет с TLS на новом сокете. Матчится с libpq sslmode=allow. SHOW SERVERS теперь содержит колонку tls.
Release pipeline
Добавлена Ubuntu 26.04 LTS (Resolute Raccoon) в .deb-матрицу и Launchpad PPA. Закрывает #211.
Полный changelog: https://ozontech.github.io/pg_doorman/changelog.html