Moderní aplikace, jako jsou mikroslužby, obvykle vyžadují mnoho databázových připojení a tato připojení také velmi rychle využívají a uvolňují. Když byl před téměř 25 lety vyvinut PostgreSQL, jeho vývojáři se rozhodli nepoužívat vlákna pro nové požadavky, ale místo toho vytvořit pro každý požadavek nový proces. I když to rozhodnutí tehdy pravděpodobně dávalo smysl, mnoho spojení může být dnes vážným problémem. Jedním z řešení tohoto problému je fond připojení. V tomto příspěvku na blogu probereme PgBouncer Connection Pool a jak jej využít v ClusterControl 1.8.2.
Proč používat fond připojení
Krátká odpověď na tuto otázku je, že je to jednoduché, ale efektivní řešení pro zlepšení výkonu vašich aplikací a zároveň snižuje zatížení serveru PostgreSQL. Pojďme na to trochu hlouběji, ano?
Společnost připojení lze definovat jako mezipaměť otevřených databázových připojení, kterou mohou klienti znovu použít. Jinými slovy, zmírní zatížení databáze snížením požadavků na každé nové připojení. Tato nová připojení jsou v podstatě vytvářena procesem postmaster pokaždé, když je navázáno připojení, které obvykle zabere přibližně 2 až 3 MB paměti na připojení.
Bez fondu připojení to povede k problému, kdykoli je počet připojení příliš vysoký, protože správce pošty potřebuje poskytnout hodně paměti. V PostgreSQL spravuje fond připojení PgBouncer.
Co je PgBouncer
PgBouncer je odlehčený, single-binární, open-source a pravděpodobně nejoblíbenější fond připojení pro PostgreSQL. PgBouncer je jednoduchý nástroj, který dělá přesně jednu věc, sedí mezi databází a klienty a mluví s protokolem PostgreSQL a kopíruje server PostgreSQL. V době psaní tohoto článku je nejnovější verze PgBouncer 1.15.0.
Podívejme se, jaké jsou některé z nejlepších funkcí, které nabízí, a pravděpodobně důvod, proč je tak populární ve světě PostgreSQL:
-
Lehká – pouze jeden proces, všechny požadavky od klienta a odpovědi ze serveru procházejí PgBouncerem bez dalších zpracování
-
Snadné nastavení – nevyžaduje žádné změny kódu na straně klienta a nastavení jednoho z nejjednodušších sdružování připojení PostgreSQL
-
Škálovatelnost a výkon – dobře se škáluje pro velký počet klientů a zároveň výrazně zvyšuje počet transakcí za sekundu, kterou může server PostgreSQL podporovat
Kroky k nastavení PgBouncer s ClusterControl
K instalaci a konfiguraci PgBouncer s ClusterControl existuje několik kroků. V této části projdeme kroky za předpokladu, že již máte nasazený cluster PostgreSQL. Pokud cluster ještě nemáte, můžete postupovat podle průvodce v tomto příspěvku na blogu.
Z vašeho webového uživatelského rozhraní> Vyberte PostgreSQL Cluster> Spravovat> Load Balancer> Vyberte kartu PgBouncer a zobrazí se následující snímek obrazovky. Zde si můžete vybrat, zda chcete nasadit nebo importovat PgBouncer, v tomto příkladu zvolíme Deploy.:
Můžete vybrat uzel z rozevírací nabídky, určit port, přidat „ PgBouncer Admin User', stejně jako heslo a klikněte na 'Deploy PgBouncer'. Úloha se spustí a na této obrazovce se začne zobrazovat stav, který můžete také sledovat na kartě „Aktivita“.
Po úspěšném nasazení uzlu PgBouncer je dalším krokem vytvoření fondu připojení. Z vašeho Clusteru> Nodes> Vyberte uzel PgBouncer a objeví se následující snímek obrazovky:
Po kliknutí na „Vytvořit fond připojení“ se zobrazí obrazovka připojení knoflík. Můžete vyplnit všechny informace a aktualizovat hodnotu v závislosti na vašem nastavení, pro tento příklad použijeme výchozí hodnotu pro „Režim fondu“, „Velikost fondu“ a „Maximální připojení k databázi“:
Zde budete muset přidat následující informace:
-
Název hostitele PgBouncer:Vyberte hostitele uzlů pro vytvoření fondu připojení.
-
Název fondu:Názvy fondu a databáze musí být stejné.
-
Uživatelské jméno: Vyberte uživatele z hlavního uzlu PostgreSQL nebo vytvořte nového.
-
Režim fondu:relace (výchozí), transakce nebo sdružování výpisů.
-
relace (výchozí):Server je po odpojení klienta uvolněn zpět do fondu
-
transakce:Server je po dokončení transakce uvolněn zpět do fondu
-
příkaz:Server je po dokončení dotazu uvolněn zpět do fondu. Transakce zahrnující více výpisů jsou v tomto režimu zakázány
-
-
Velikost fondu:Maximální velikost fondu pro tuto databázi. Výchozí hodnota je 20.
-
Max. databázová připojení:Nakonfigurujte maximum pro celou databázi. Výchozí hodnota je 0, což znamená neomezeně.
Po kliknutí na tlačítko „Dokončit“ se zobrazí fond připojení podle níže uvedeného snímku obrazovky a PgBouncer i fond připojení jsou nyní připraveny:
Závěr
Použití fondu připojení a PgBouncer jsou některé z kroků ke zlepšení výkonu vaší aplikace, pokud jde o vysokou dostupnost. S ClusterControl můžete nasadit PgBouncer a také snadno a rychle vytvořit fond připojení.
Aby to bylo ještě lepší, doporučujeme kromě PgBounceru nasadit také HAProxy. Funkce HAProxy je dostupná v ClusterControl a v době psaní tohoto článku je verze, kterou používáme, 1.8.23.