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:
pgBouncer.stats_users
Nastavte parametr na název existujícího uživatele (napříkladmyUser
) a použijte změny.Připojte se k
pgbouncer
databázi jako tento uživatel a nastavte port takto6432
: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:
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"
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í .
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
- Seznamte se s koncepty sítě.
- Získejte přehled flexibilního serveru Azure Database for PostgreSQL.