Strategie sdružování připojení pro flexibilní server Azure Database for PostgreSQL pomocí nástroje PgBouncer
PLATÍ PRO: Flexibilní server Azure Database for PostgreSQL
Strategické pokyny pro výběr mechanismu sdružování připojení pro flexibilní server Azure Database for PostgreSQL
Úvod
Pokud používáte flexibilní server Azure Database for PostgreSQL, vytvoření připojení k databázi zahrnuje vytvoření komunikačního kanálu mezi klientskou aplikací a serverem. Tento kanál zodpovídá za správu dat, spouštění dotazů a inicializování transakcí. Po navázání připojení může klientská aplikace odesílat příkazy na server a přijímat odpovědi. Vytvoření nového připojení pro každou operaci ale může způsobit problémy s výkonem důležitých aplikací. Pokaždé, když se vytvoří nové připojení, vytvoří flexibilní server Azure Database for PostgreSQL nový proces pomocí procesu postmaster, který spotřebovává více prostředků.
Kvůli zmírnění tohoto problému se sdružování připojení používá k vytvoření mezipaměti připojení, která je možné opakovaně použít na flexibilním serveru Azure Database for PostgreSQL. Když aplikace nebo klient požádá o připojení, vytvoří se z fondu připojení. Po dokončení relace nebo transakce se připojení vrátí do fondu pro opakované použití. Opětovným použitím připojení se sníží využití prostředků a zlepší se výkon.
I když existují různé nástroje pro sdružování připojení, v této části probereme různé strategie použití sdružování připojení pomocí nástroje PgBouncer.
Co je PgBouncer?
PgBouncer je efektivní nástroj pro sdružování připojení navržený pro PostgreSQL, který nabízí výhodu zkrácení doby zpracování a optimalizace využití prostředků při správě více klientských připojení k jedné nebo více databázím. PgBouncer zahrnuje tři různé režim sdružování pro otáčení připojení:
- Sdružování relací: Tato metoda přiřadí připojení serveru klientské aplikaci po celou dobu trvání připojení klienta. Po odpojení klientské aplikace nástroj PgBouncer okamžitě vrátí připojení serveru zpět do fondu. Mechanismus sdružování relací je výchozí režim v nástroji PgBouncer open source. Viz konfigurace PgBouncer
- Sdružování transakcí: Při sdružování transakcí je připojení k serveru vyhrazené klientské aplikaci během transakce. Jakmile se transakce úspěšně dokončí, pgBouncer inteligentně uvolní připojení k serveru a zpřístupní ho znovu v rámci fondu. Sdružování transakcí je výchozí režim v integrovaném pgBounceru flexibilního serveru Azure Database for PostgreSQL a nepodporuje připravené transakce.
- Sdružování příkazů: Ve sdružování příkazů je připojení k serveru přiděleno klientské aplikaci pro každý jednotlivý příkaz. Po dokončení příkazu se připojení k serveru okamžitě vrátí do fondu připojení. Je důležité si uvědomit, že v tomto režimu nejsou podporovány transakce s více příkazy.
Efektivní využití nástroje PgBouncer je možné kategorizovat do tří různých vzorů použití.
- PgBouncer a nasazení kolokace aplikací
- Nezávislá nasazení pgBouncer nezávisle na aplikacích
- Inbuilt PgBouncer and Database deployment
Každý z těchto vzorů má své vlastní výhody a nevýhody.
1. PgBouncer a nasazení kolokace aplikace
Při použití tohoto přístupu se PgBouncer nasadí na stejný server, na kterém je vaše aplikace hostovaná. Aplikaci a PgBouncer je možné nasadit buď na tradiční virtuální počítače, nebo v architektuře založené na mikroslužbách, jak je zvýrazněno:
I. PgBouncer nasazený na virtuálním počítači aplikace
Pokud vaše aplikace běží na virtuálním počítači Azure, můžete na stejném virtuálním počítači nastavit PgBouncer. Pokud chcete nainstalovat a nakonfigurovat PgBouncer jako proxy pro sdružování připojení s flexibilním serverem Azure Database for PostgreSQL, postupujte podle pokynů uvedených na následujícím odkazu.
Nasazení nástroje PgBouncer na aplikačním serveru může poskytnout několik výhod, zejména při práci s flexibilními serverovými databázemi Azure Database for PostgreSQL. Mezi klíčové výhody a omezení této metody nasazení patří:
Výhody:
- Omezená latence: Nasazením nástroje PgBouncer na stejný virtuální počítač aplikace je komunikace mezi primární aplikací a nástrojem pro sdružování připojení efektivní z důvodu jejich blízkosti. Nasazení nástroje PgBouncer na aplikačním virtuálním počítači minimalizuje latenci a zajišťuje hladké a rychlé interakce.
- Vylepšené zabezpečení: PgBouncer může fungovat jako bezpečný zprostředkovatel mezi aplikací a databází a poskytuje další vrstvu zabezpečení. Může vynutit ověřování a šifrování a zajistit tak, aby k databázi mohli přistupovat jenom autorizovaní klienti.
Nasazení pgBounceru na aplikačním serveru celkově poskytuje efektivnější, zabezpečený a škálovatelný přístup ke správě připojení k flexibilním serverovým databázím Azure Database for PostgreSQL, což zvyšuje výkon a spolehlivost aplikace.
Omezení:
- Kritický bod selhání: Pokud je pgBouncer nasazen jako jedna instance na aplikačním serveru, stane se potenciálním kritickým bodem selhání. Pokud instance PgBouncer přestane fungovat, může narušit celý fond připojení databáze, což způsobí 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.
- Omezená škálovatelnost: Škálovatelnost PgBouncer závisí na kapacitě serveru, na kterém je nasazená. Pokud aplikační server dosáhne limitu připojení, pgBouncer se může stát kritickým bodem, který omezuje schopnost škálovat aplikaci. Možná budete muset distribuovat zatížení připojení mezi několik instancí PgBouncer nebo zvážit alternativní řešení, jako je sdružování připojení na úrovni aplikace.
- Složitost konfigurace: Konfigurace a vyladění nástroje PgBouncer může být složitá, zejména při zvažování faktorů, jako jsou limity připojení, nastavení velikosti fondu a vyrovnávání zatížení. Správci musí pečlivě vyladit konfiguraci PgBouncer tak, aby odpovídala požadavkům aplikace a zajistili optimální výkon a stabilitu.
Je důležité zvážit tato omezení proti výhodám a vyhodnotit, jestli je PgBouncer správnou volbou pro vaši konkrétní aplikaci a nastavení databáze.
II. PgBouncer nasazený jako sajdkárna AKS
Pokud je vaše aplikace kontejnerizovaná a spuštěná ve službě Azure Kubernetes Service (AKS), Azure Container Instance (ACI), Azure Container Apps (ACA) nebo Azure Red Hat OpenShift (ARO) je možné využít pgBouncer jako kontejnerový kontejner sajdkára. Vzor sajdkáře vychází z konceptu sajdkáře připojeného k motocyklu, kde je k nadřazené aplikaci připojen pomocný kontejner, označovaný jako kontejner sajdkáře. Tento model rozšiřuje nadřazenou aplikaci rozšířením jeho funkcí a poskytováním doplňkové podpory.
Model sajdkáry se obvykle používá s kontejnery, které se spoluplánují jako atomická skupina kontejnerů. Nasazení nástroje PgBouncer v AKS sajdkáře těsně páruje životní cyklus aplikace a sajdkáře a sdílí prostředky, jako je název hostitele a sítě, aby bylo možné efektivně využívat prostředky. Sajdkárna PgBouncer funguje společně s kontejnerem aplikací v rámci stejného podu ve službě Azure Kubernetes Service (AKS) s mapováním 1:1, který slouží jako proxy pro sdružování připojení pro flexibilní server Azure Database for PostgreSQL.
Tento model sajdkáry se obvykle používá s kontejnery, které se spoluplánují jako atomická skupina kontejnerů. Model sajdkárna silně spojuje životní cyklus aplikace a sajdkáře a má sdílené prostředky, jako jsou název hostitele a sítě. Pomocí tohoto nastavení pgBouncer optimalizuje správu připojení a usnadňuje efektivní komunikaci mezi aplikací a instancí flexibilního serveru Azure Database for PostgreSQL.
Společnost Microsoft publikovala image proxy serveru pgBouncer sidecar v registru kontejneru Microsoftu.
Další podrobnosti najdete v této části.
Mezi klíčové výhody a omezení této metody nasazení patří:
Výhody:
- Omezená latence: Nasazením nástroje PgBouncer jako sajdkáru AKS je komunikace mezi primární aplikací a nástrojem pro sdružování připojení bezproblémová a efektivní díky jejich blízkosti. Nasazení nástroje PgBouncer sajdkáru AKS minimalizuje latenci a zajišťuje hladké a rychlé interakce.
- Zjednodušená správa a nasazení: Úzká párování pgBounceru s kontejnerem aplikací zjednodušuje proces správy a nasazení. Obě komponenty jsou úzce integrované, což umožňuje snadnější správu a bezproblémovou koordinaci.
- Vysoká dostupnost a odolnost připojení: Pokud dojde k selhání nebo restartování kontejneru aplikace, kontejner PgBouncer sidecar úzce následuje a zajišťuje vysokou dostupnost. Toto nastavení zaručuje odolnost připojení a udržuje předvídatelný výkon i během převzetí služeb při selhání, což přispívá k spolehlivému a robustnímu systému.
Zvažováním pgBouncer jako sajdkáru AKS můžete tyto výhody využít k vylepšení výkonu vaší aplikace, zjednodušení správy a zajištění nepřetržité dostupnosti nástroje pro sdružování připojení.
Omezení:
- Problémy s výkonem připojení: Rozsáhlé aplikace, které využívají tisíce podů, každý spuštěný sidecar PgBouncer může narazit na potenciální problémy související s vyčerpáním připojení k databázi. Tato situace může vést ke snížení výkonu a přerušení služeb. Nasazení sidecar PgBouncer pro každý pod zvyšuje počet souběžných připojení k databázovému serveru, což může překročit jeho kapacitu. V důsledku toho se databáze může potýkat s vysokým objemem příchozích připojení, což může vést k problémům s výkonem, jako jsou vyšší doby odezvy nebo dokonce výpadky služeb.
- Komplexní nasazení: Využití modelu sajdkárna představuje pro proces nasazení úroveň složitosti, protože zahrnuje spouštění dvou kontejnerů ve stejném podu. To může potenciálně komplikovat řešení potíží a ladění aktivit, což vyžaduje další úsilí k identifikaci a řešení problémů.
- Výzvy škálování: Je důležité si uvědomit, že vzor sajdkáře nemusí být ideální volbou pro aplikace, které vyžadují vysokou škálovatelnost. Zahrnutí kontejneru sajdkáře může nutit více požadavků na prostředky a potenciálně omezit počet podů, které je možné efektivně vytvářet a spravovat.
Při zvažování tohoto modelu sajdkáře je důležité pečlivě posoudit kompromisy mezi složitostí nasazení a požadavky na škálovatelnost, aby bylo možné určit nejvhodnější přístup pro váš konkrétní scénář aplikace.
2. Nezávislá aplikace – Centralizované nasazení PgBouncer
Při použití tohoto přístupu se PgBouncer nasadí jako centralizovaná služba nezávisle na aplikaci. Službu PgBouncer je možné nasadit buď na tradiční virtuální počítače, nebo v architektuře založené na mikroslužbách, jak je zvýrazněno:
I. PgBouncer nasazený na virtuálním počítači s Ubuntu za Azure Load Balancerem
Proxy připojení PgBouncer se nastavuje mezi aplikační a databázovou vrstvou za Azure Load Balancerem, jak je znázorněno na obrázku. V tomto vzoru je několik instancí PgBouncer nasazených za nástrojem pro vyrovnávání zatížení jako služba, aby se zmírnit kritický bod selhání. Tento model je vhodný také ve scénářích, kdy aplikace běží ve spravované službě, jako jsou služby Aplikace Azure Services nebo Azure Functions, a připojení ke službě PgBouncer pro snadnou integraci se stávající infrastrukturou.
Projděte si odkaz na instalaci a nastavení proxy fondu připojení PgBouncer s flexibilním serverem Azure Database for PostgreSQL.
Mezi klíčové výhody a omezení této metody nasazení patří:
Výhody:
- Odebrání jediného bodu selhání: Připojení aplikace nemusí být ovlivněno selháním jednoho virtuálního počítače PgBouncer, protože za Azure Load Balancerem je několik instancí PgBouncer.
- Bezproblémová integrace se spravovanými službami: Pokud je vaše aplikace hostovaná na platformě spravované služby, jako je Aplikace Azure Services nebo Azure Functions, nasazení nástroje PgBouncer na virtuálním počítači umožňuje snadnou integraci se stávající infrastrukturou.
- Zjednodušené nastavení na virtuálním počítači Azure: Pokud už aplikaci spouštíte na virtuálním počítači Azure, nastavení PgBouncer na stejném virtuálním počítači je jednoduché. Nasazení nástroje PgBouncer ve virtuálním počítači zajišťuje, že se pgBouncer nasadí v těsné blízkosti vaší aplikace, minimalizuje latenci sítě a maximalizuje výkon.
- Nerušující konfigurace: Nasazením nástroje PgBouncer na virtuálním počítači se můžete vyhnout úpravám parametrů serveru na flexibilním serveru Azure Database for PostgreSQL. To je užitečné, když chcete nakonfigurovat PgBouncer na instanci flexibilního serveru Azure Database for PostgreSQL. Například změna parametru SSLMODE na "povinné" na flexibilním serveru Azure Database for PostgreSQL může způsobit selhání některých aplikací, které spoléhají na selhání SSLMODE=FALSE. Nasazení nástroje PgBouncer na samostatném virtuálním počítači umožňuje zachovat výchozí konfiguraci serveru, i když stále využívá výhody pgBounceru.
Nasazení nástroje PgBouncer na virtuální počítač nabízí praktické a efektivní řešení pro zvýšení výkonu a kompatibility vaší aplikace spuštěné v infrastruktuře Azure.
Omezení:
- Režijní náklady na správu: Při instalaci nástroje PgBouncer na virtuálním počítači může být režijní náklady na správu pro správu více konfiguračních souborů. To znesnadňuje vyrovnat se s upgrady verzí, novými verzemi a aktualizacemi produktů.
- Parita funkcí: Pokud migrujete z tradičního serveru PostgreSQL na flexibilní server Azure Database for PostgreSQL a používáte PgBouncer, můžou existovat některé nedostatky funkcí. Například nedostatek podpory md5 na flexibilním serveru Azure Database for PostgreSQL.
II. Centralizovaný nástroj PgBouncer nasazený jako služba v rámci AKS
Pokud pracujete s vysoce škálovatelnými a velkými kontejnerizovanými nasazeními ve službě Azure Kubernetes Service (AKS), které se skládají ze stovek podů nebo v situacích, kdy se více aplikací musí připojit ke sdílené databázi, můžete pgBouncer použít jako samostatnou službu místo kontejneru sajdkáře.
Používáním nástroje PgBouncer jako samostatné služby můžete efektivně spravovat a zpracovávat sdružování připojení pro vaše aplikace v širším měřítku. Tento přístup umožňuje centralizovat funkce sdružování připojení, což umožňuje více aplikacím připojit se ke stejnému databázovému prostředku a současně udržovat optimální výkon a využití prostředků.
Image proxy sajdkáře PgBouncer publikovaná v registru kontejneru Microsoftu se dá použít k vytvoření a nasazení služby.
Mezi klíčové výhody a omezení této metody nasazení patří:
Výhody:
- Vylepšená spolehlivost: Nasazení nástroje PgBouncer jako samostatné služby umožňuje konfiguraci vysoce dostupným způsobem. To zlepšuje celkovou spolehlivost infrastruktury sdružování připojení a zajišťuje nepřetržitou dostupnost i v případě selhání nebo přerušení.
- Optimální využití prostředků: Pokud má vaše aplikace nebo databázový server omezené prostředky, může být výhodné zvolit samostatný počítač vyhrazený pro spuštění služby PgBouncer . Nasazením nástroje PgBouncer na počítač s ample prostředky můžete zajistit optimální výkon a zabránit problémům s kolizemi prostředků.
- Centralizovaná správa připojení: Při centralizované správě databázových připojení je požadavek, samostatná služba PgBouncer poskytuje efektivnější přístup. Sloučením úloh správy připojení do centralizované služby můžete efektivně monitorovat a řídit připojení k databázi napříč více aplikacemi, zjednodušit správu a zajistit konzistenci.
Zvažováním pgBouncer jako samostatné služby v rámci AKS můžete tyto výhody využít k dosažení lepší spolehlivosti, efektivity prostředků a centralizované správy databázových připojení.
Omezení:
- Zvýšená latence N/W: Při nasazování nástroje PgBouncer jako samostatné služby je důležité zvážit potenciální zavedení vyšší latence. Důvodem je potřeba předávat připojení mezi aplikací a službou PgBouncer přes síť. Je důležité vyhodnotit požadavky vaší aplikace na latenci a zvážit kompromisy mezi centralizovanou správou připojení a potenciálními problémy s latencí.
Zatímco PgBouncer běží jako samostatná služba nabízí výhody, jako je centralizovaná správa a optimalizace prostředků, je důležité vyhodnotit dopad potenciální latence na výkon vaší aplikace, aby se zajistilo, že bude v souladu s vašimi konkrétními požadavky.
3. Integrovaný nástroj PgBouncer na flexibilním serveru Azure Database for PostgreSQL
Flexibilní server Azure Database for PostgreSQL nabízí PgBouncer jako integrované řešení sdružování připojení. Nabízí se jako volitelná služba, která se dá povolit na jednotlivých databázových serverech. PgBouncer běží na stejném virtuálním počítači jako instance flexibilního serveru Azure Database for PostgreSQL. S nárůstem počtu připojení nad rámec několika stovek nebo tisíců může flexibilní server Azure Database for PostgreSQL narazit na omezení prostředků. V takových případech může integrovaná funkce PgBouncer přinést významnou výhodu zlepšením správy nečinných a krátkodobých připojení na databázovém serveru.
Projděte si odkaz na povolení a nastavení sdružování připojení PgBouncer na flexibilním serveru Azure Database for PostgreSQL.
Mezi klíčové výhody a omezení této metody nasazení patří:
Výhody:
- Bezproblémová konfigurace: S integrovaným nástrojem PgBouncer na flexibilním serveru Azure Database for PostgreSQL není potřeba samostatnou instalaci ani složitou instalaci. Dá se snadno nakonfigurovat přímo z parametrů serveru a zajistit tak bezproblémové prostředí.
- Pohodlí spravované služby: Jako spravovaná služba můžou uživatelé využívat výhody jiných spravovaných služeb Azure. To zahrnuje automatické aktualizace, odstranění nutnosti ruční údržby a zajištění aktuálnost nástroje PgBouncer s nejnovějšími funkcemi a opravami zabezpečení.
- Podpora veřejného a privátního připojení: Integrovaný flexibilní server PgBouncer ve službě Azure Database for PostgreSQL poskytuje podporu pro veřejná i privátní připojení. To umožňuje uživatelům navázat zabezpečená připojení přes privátní sítě nebo se připojovat externě v závislosti na jejich konkrétních požadavcích.
- Vysoká dostupnost (HA): V případě převzetí služeb při selhání, kdy je pohotovostní server povýšen na primární roli, nástroj PgBouncer bez problémů restartuje v nově povýšené pohotovostním režimu bez jakýchkoli změn potřebných pro aplikaci připojovací řetězec. Tím zajistíte nepřetržitou dostupnost a minimalizujete přerušení aplikace.
- Nákladově efektivní: Je nákladově efektivní, protože uživatelé nemusí platit za dodatečné výpočetní prostředky, jako je virtuální počítač nebo kontejnery, i když má nějaký dopad na procesor, protože se jedná o jiný proces spuštěný na stejném počítači.
Díky integrovanému nástroji PgBouncer na flexibilním serveru Azure Database for PostgreSQL můžou uživatelé využívat výhod zjednodušené konfigurace, spolehlivosti spravované služby, podpory různých režimů sdružování a bezproblémové vysoké dostupnosti během scénářů převzetí služeb při selhání.
Omezení:
- U služby Burstable se nepodporuje: PgBouncer se v současné době nepodporuje u výpočetní úrovně serveru s možností burstable. Pokud změníte úroveň výpočetních prostředků z úrovně Pro obecné účely nebo Optimalizováno pro paměť na úroveň Burstable, ztratíte možnost PgBouncer .
- Opětovné navázání připojení po restartování: 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 se také restartuje spolu se serverovým virtuálním počítačem. Proto musí být existující připojení znovu navázána.
Probrali jsme různé způsoby implementace nástroje PgBouncer a tabulky shrnuje, kterou metodu nasazení zvolit:
Kritéria výběru | PgBouncer na virtuálním počítači aplikace | PgBouncer na virtuálním počítači pomocí ALB* | PgBouncer na AKS Sidecar | PgBouncer jako služba | Flexibilní server Azure Database for PostgreSQL integrovaný v nástroji PgBouncer |
---|---|---|---|---|---|
Zjednodušená správa | |||||
HA | |||||
Kontejnerizované aplikace | |||||
Nižší režijní náklady na síť a latence | |||||
Jemně odstupňované řízení monitorování a ladění |
Legenda
Úroveň obtížnosti | Symbol |
---|---|
Snadné | |
Střední | |
Obtížné |
*ALB: Azure Load Balancer.