Sdílet prostřednictvím


PgBouncer na flexibilním serveru Azure Database for PostgreSQL

PLATÍ PRO: Flexibilní server Azure Database for PostgreSQL

Flexibilní server Azure Database for PostgreSQL nabízí PgBouncer jako integrované řešení sdružování připojení. PgBouncer je volitelná funkce, kterou můžete povolit pro každý databázový server. Podporuje se na výpočetních úrovních Pro obecné účely a Optimalizováno pro paměť v sítích veřejného přístupu i privátního přístupu.

PgBouncer běží na stejném virtuálním počítači jako databázový server pro flexibilní server Azure Database for PostgreSQL. Postgres používá pro připojení model založený na procesu, takže údržba mnoha nečinných připojení je nákladná. Postgres narazí na omezení prostředků, když server běží více než několik tisíc připojení. Hlavní výhodou nástroje PgBouncer je zlepšení nečinných připojení a krátkodobých připojení na databázovém serveru.

PgBouncer používá jednoduchý model, který využívá asynchronní vstupně-výstupní operace. Používá připojení Postgres pouze v případě potřeby– to znamená, že uvnitř otevřené transakce nebo když je dotaz aktivní. Tento model umožňuje škálování až na 10 000 připojení s nízkou režií.

PgBouncer běží na portu 6432 na vašem databázovém serveru. Konfiguraci připojení k databázi aplikace můžete změnit tak, aby používala stejný název hostitele, ale změňte port na 6432, abyste mohli začít používat Nástroj PgBouncer a těžit z lepšího škálování nečinných připojení.

Flexibilní server PgBouncer ve službě Azure Database for PostgreSQL podporuje ověřování Microsoft Entra (Azure AD).

Povolení a konfigurace nástroje PgBouncer

Pokud chcete povolit PgBouncer, přejděte na webu Azure Portal do podokna Parametry serveru, vyhledejte PgBouncer a změňte pgbouncer.enabled nastavení na true. Server není potřeba restartovat.

Nastavení PgBouncer můžete nakonfigurovat pomocí těchto parametrů.

Poznámka:

Následující seznam parametrů serveru PgBouncer je viditelný v podokně Parametry serveru pouze v případě, že pgbouncer.enabled je parametr serveru nastaven na true. Jinak jsou záměrně skryté.

Název parametru Popis Výchozí
pgbouncer.default_pool_size Nastavte tuto hodnotu parametru na počet připojení na dvojici uživatelů/databáze. 50
pgbouncer.ignore_startup_parameters Zadejte čárkami oddělený seznam parametrů, které může PgBouncer ignorovat. Můžete například nechat PgBouncer ignorovat extra_float_digits parametr. Některé parametry jsou povoleny; všichni ostatní vyvolá chybu. Tato schopnost je potřebná k tomu, aby bylo možné tolerovat přílišné připojení databáze Java (JDBC), které chce bezpodmínečně nastavit extra_float_digits=2 ve spouštěcích paketech. Tuto možnost použijte, pokud knihovna, kterou používáte, hlásí chyby, například pq: unsupported startup parameter: extra_float_digits.
pgbouncer.max_client_conn Nastavte tuto hodnotu parametru na nejvyšší počet klientských připojení k nástroji PgBouncer, který chcete podporovat. 5000
pgbouncer.max_prepared_statements Pokud je nastavena na nenulovou hodnotu PgBouncer sleduje protokol-úroveň pojmenované připravené příkazy související příkazy odeslané klientem v režimu transakce a příkazu sdružování. 0
pgbouncer.min_pool_size Pokud je toto číslo pod tímto číslem, přidejte do fondu další připojení k serveru. 0
pgbouncer.pool_mode Tuto hodnotu parametru nastavte na TRANSACTION pro sdružování transakcí (což je doporučené nastavení pro většinu úloh). transakce
pgbouncer.query_wait_timeout Maximální doba (v sekundách) dotazů může strávit čekáním na spuštění. Pokud během této doby není dotaz přiřazen k serveru, klient se odpojí. 120
pgbouncer.server_idle_timeout Pokud bylo připojení k serveru nečinné déle, než je tento počet sekund, dojde k jeho vyřazení. Pokud je hodnota 0, časový limit je zakázaný. 600
pgbouncer.stats_users Seznam uživatelů databáze oddělených čárkami, kteří se můžou připojit a spouštět dotazy jen pro čtení v konzole pgBouncer.

Další informace o konfiguracích PgBouncer najdete v pgbouncer.ini dokumentaci.

Verze PgBouncer

V současné době je verze PgBouncer nasazená na všech podporovaných hlavních verzích modulu (16, 15, 14, 13, 12, 11) na flexibilním serveru Azure Database for PostgreSQL 1.22.1.

Zaměstnanecké výhody

Pomocí integrované funkce PgBouncer s flexibilním serverem Azure Database for PostgreSQL získáte tyto výhody:

  • Pohodlí zjednodušené konfigurace: Vzhledem k tomu, že pgBouncer je integrovaný s flexibilním serverem Azure Database for PostgreSQL, není potřeba samostatnou instalaci ani složitou instalaci. Můžete ho nakonfigurovat přímo z parametrů serveru.

  • Spolehlivost spravované služby: PgBouncer nabízí výhody spravovaných služeb Azure. Azure například spravuje aktualizace pgBounceru. Automatické aktualizace eliminují potřebu ruční údržby a zajišťují, aby pgBouncer zůstal aktuální s nejnovějšími funkcemi a opravami zabezpečení.

  • Podpora různých typů připojení: PgBouncer na flexibilním serveru Azure Database for PostgreSQL poskytuje podporu pro veřejná i privátní připojení. Můžete ho použít k navázání zabezpečených připojení přes privátní sítě nebo k externímu připojení v závislosti na konkrétních požadavcích.

  • Vysoká dostupnost ve scénářích převzetí služeb při selhání: Pokud je pohotovostní server povýšen na primární roli během převzetí služeb při selhání, pgBouncer se bez problémů restartuje v nově propagovaném pohotovostním režimu. V připojovací řetězec aplikace nemusíte provádět žádné změny. Tato schopnost pomáhá zajistit nepřetržitou dostupnost a minimalizovat přerušení fondu připojení aplikace.

Monitorování nástroje PgBouncer

Metriky

Flexibilní server Azure Database for PostgreSQL poskytuje šest metrik pro monitorování sdružování připojení PgBouncer:

Zobrazované jméno ID metriky Unit description Dimenze Výchozí povoleno
Aktivní klientská připojení (Preview) client_connections_active Počet Připojení z klientů přidružených k připojení flexibilního serveru Azure Database for PostgreSQL DatabaseName No
Čekání klientských připojení (Preview) client_connections_waiting Počet Připojení z klientů, kteří čekají na připojení flexibilního serveru Azure Database for PostgreSQL ke službě DatabaseName No
Aktivní připojení k serveru (Preview) server_connections_active Počet Připojení k flexibilnímu serveru Azure Database for PostgreSQL, který používá připojení klienta DatabaseName No
Nečinná připojení k serveru (Preview) server_connections_idle Počet Připojení k flexibilnímu serveru Azure Database for PostgreSQL, který je nečinný a připravený ke službě nového připojení klienta DatabaseName No
Celkový počet připojení ve fondu (Preview) total_pooled_connections Počet Aktuální počet připojení ve fondu DatabaseName No
Počet fondů připojení (Preview) num_pools Počet Celkový počet fondů připojení DatabaseName No

Další informace najdete v tématu Metriky PgBouncer.

Konzola správce

PgBouncer také poskytuje interní databázi s názvem pgbouncer. Když se k této databázi připojíte, můžete spustit SHOW příkazy, které poskytují informace o aktuálním stavu pgBouncer.

Připojení k pgbouncer databázi:

  1. pgBouncer.stats_users Nastavte parametr na název existujícího uživatele (napříkladmyUser) a použijte změny.

  2. Připojte se k pgbouncer databázi jako tento uživatel a nastavte port takto 6432:

    psql "host=myPgServer.postgres.database.azure.com port=6432 dbname=pgbouncer user=myUser password=myPassword sslmode=require"
    

Po připojení k databázi použijte SHOW příkazy k zobrazení statistik PgBouncer:

  • SHOW HELP: Vypíše všechny dostupné SHOW příkazy.
  • SHOW POOLS: Zobrazí počet připojení v jednotlivých stavech pro každý fond.
  • SHOW DATABASES: Zobrazí aktuální použité limity připojení pro každou databázi.
  • SHOW STATS: Zobrazit statistiky požadavků a přenosů pro každou databázi.

Další informace o příkazech PgBouncer SHOW najdete v konzole pro správu.

Přepnutí aplikace tak, aby používala PgBouncer

Pokud chcete začít používat PgBouncer, postupujte takto:

  1. Připojte se k databázovému serveru, ale místo běžného portu 5432 použijte port 6432. Ověřte, že toto připojení funguje.

    psql "host=myPgServer.postgres.database.azure.com port=6432 dbname=postgres user=myUser password=myPassword sslmode=require"
    
  2. Otestujte aplikaci v prostředí kontroly kvality proti pgBouncer, abyste měli jistotu, že nemáte žádné problémy s kompatibilitou. Projekt PgBouncer poskytuje matici kompatibility a pro většinu uživatelů doporučujeme sdružování transakcí .

  3. Změňte produkční aplikaci tak, aby se místo 5432 připojila k portu 6432. Monitorujte případné chyby na straně aplikace, které můžou odkazovat na problémy s kompatibilitou.

PgBouncer v zónově redundantní vysoké dostupnosti

V zónově redundantních serverech s vysokou dostupností (HA) primární server spouští Nástroj PgBouncer. K Nástroji PgBouncer se můžete připojit na primárním serveru přes port 6432. Po převzetí služeb při selhání se pgBouncer restartuje v nově propagovaném pohotovostním režimu, což je teď primární server. Takže vaše aplikace připojovací řetězec zůstane po převzetí služeb při selhání stejná.

Použití nástroje PgBouncer s jinými fondy připojení

V některých případech už možná máte fond připojení na straně aplikace nebo máte na straně aplikace nastavený Nástroj PgBouncer (například sajdkáru služby Azure Kubernetes Service). V těchto případech může být integrovaná funkce PgBouncer stále užitečná, protože poskytuje výhody nečinného škálování připojení.

Použití fondu na straně aplikace společně s PgBouncer na databázovém serveru může být výhodné. V tomto případě fond na straně aplikace přináší výhodu snížené počáteční latence připojení (protože odezva pro inicializaci připojení je mnohem rychlejší) a nástroj PgBouncer na straně databáze poskytuje nečinné škálování připojení.

Omezení

  • Funkce PgBouncer se v současné době nepodporuje u výpočetní úrovně serveru s možností nárazového škálování. Pokud změníte úroveň výpočetních prostředků z úrovně Pro obecné účely nebo Optimalizováno pro paměť na burstable, ztratíte integrovanou funkci PgBouncer.

  • Pokaždé, když se server restartuje během operací škálování, převzetí služeb při selhání vysoké dostupnosti nebo restartování, pgBouncer a virtuální počítač se také restartují. Pak musíte znovu navázat stávající připojení.

  • Portál nezobrazuje všechny parametry PgBouncer. Po povolení nástroje PgBouncer a uložení parametrů musíte zavřít podokno Parametry serveru (například vybrat Přehled) a pak se vrátit do podokna Parametry serveru.

  • Režimy fondu příkazů nemůžete používat spolu s připravenými příkazy. Aktuální verze pgBouncer přidala podporu připravených příkazů v režimu transakce. Tato podpora se dá povolit a nakonfigurovat prostřednictvím parametru max_prepared_statements. Nastavení tohoto parametru nad výchozí hodnotou 0 zapne podporu připravených příkazů. Tato podpora se vztahuje pouze na připravené příkazy na úrovni protokolu. U většiny programovacích jazyků to znamená, že na klientovi používáme funkci libpq PQprepare a odesíláme příkazy na úrovni protokolu, které PgBouncer dokáže zachytit, místo aby vydali dynamický příkaz SQL podobný příkazu PREPARE proc AS, který odesílá text, který PgBouncer nebude správně interpretovat. Další omezení zvoleného režimu fondu najdete v dokumentaci PgBouncer.

  • Pokud se pgBouncer nasadí jako funkce, stane se potenciálním kritickým bodem selhání. Pokud je funkce PgBouncer mimo provoz, může narušit celý fond připojení k databázi a způsobit výpadky aplikace. Pokud chcete zmírnit kritický bod selhání, můžete nastavit několik instancí PgBouncer za nástrojem pro vyrovnávání zatížení pro zajištění vysoké dostupnosti na virtuálních počítačích Azure.

  • Omezení velikosti tokenů s ověřováním AAD – Uživatelé s velkým počtem členství ve skupinách se nebudou moct připojit prostřednictvím nástroje PgBouncer kvůli omezení velikosti tokenu. Aplikace, služby a uživatelé s malým počtem skupin pracují.

  • PgBouncer je jednoduchá aplikace, která používá architekturu s jedním vláknem. Tento návrh je skvělý pro většinu úloh aplikací. Ale v aplikacích, které vytvářejí velký počet krátkodobých připojení, může tento návrh ovlivnit výkon pgBouncer a omezit vaši schopnost škálovat aplikaci. Možná budete muset vyzkoušet jeden z těchto přístupů:

    • Distribuujte zatížení připojení mezi několik instancí PgBouncer na virtuálních počítačích Azure.
    • Zvažte alternativní řešení, včetně vícevláknových řešení, jako je PgCat, na virtuálních počítačích Azure.

Důležité

Parametr pgbouncer.client_tls_sslmode integrované funkce PgBouncer je na flexibilním serveru Azure Database for PostgreSQL zastaralý.

Když se vynucuje tls/SSL pro připojení k flexibilnímu serveru Azure Database for PostgreSQL prostřednictvím nastavení parametru require_secure_transport serveru na ON, pro připojení k integrované funkci PgBouncer se automaticky vynucuje protokol TLS/SSL. Toto nastavení je ve výchozím nastavení zapnuté, když vytvoříte novou instanci flexibilního serveru Azure Database for PostgreSQL a povolíte integrovanou funkci PgBouncer. Další informace najdete v tématu Přehled sítí pro flexibilní server Azure Database for PostgreSQL s privátním přístupem.

Pro zákazníky, kteří chtějí zjednodušenou správu, integrovanou vysokou dostupnost, snadné připojení ke kontejnerizovaným aplikacím a možnost používat nejoblíbenější konfigurační parametry, je vhodná integrovaná funkce PgBouncer. Pro zákazníky, kteří chtějí vícevláknovou škálovatelnost, plnou kontrolu nad všemi parametry a prostředí ladění, může být nastavení PgBouncer na virtuálních počítačích Azure alternativou.

Další kroky