V první části tohoto blogu jsme zmínili některé důležité koncepty související s dobrým prostředím replikace PostgreSQL. Nyní se podívejme, jak všechny tyto věci snadno zkombinovat pomocí ClusterControl. Za tímto účelem budeme předpokládat, že máte nainstalovaný ClusterControl, ale pokud ne, můžete přejít na oficiální stránku nebo si jej nainstalovat podle oficiální dokumentace.
Nasazení replikace streamování PostgreSQL
Chcete-li provést nasazení clusteru PostgreSQL z ClusterControl, vyberte možnost Nasadit a postupujte podle zobrazených pokynů.
Při výběru PostgreSQL musíte zadat uživatele, klíč nebo heslo a Port pro připojení pomocí SSH k vašim serverům. Můžete také přidat název svého nového clusteru a určit, zda chcete, aby ClusterControl nainstaloval odpovídající software a konfigurace za vás.
Po nastavení přístupových informací SSH je třeba definovat přihlašovací údaje k databázi , verze a datadir (volitelné). Můžete také určit, které úložiště použít.
V dalším kroku musíte přidat své servery do clusteru, který se chystáte vytvořit, pomocí IP adresy nebo názvu hostitele.
V posledním kroku si můžete vybrat, zda bude vaše replikace synchronní nebo Asynchronní a poté stačí stisknout Nasadit.
Po dokončení úlohy můžete svůj nový PostgreSQL Cluster vidět v hlavní obrazovka ClusterControl.
Nyní máte svůj cluster vytvořený, můžete na něm provádět několik úkolů, jako je přidání nástroje pro vyrovnávání zatížení (HAProxy), sdružování připojení (PgBouncer) nebo nového synchronního nebo asynchronního replikačního slave zařízení.
Přidání synchronních a asynchronních podřízených jednotek replikace
Přejděte na ClusterControl -> Akce clusteru -> Přidat replikační slave.
Můžete přidat nového replikačního slave zařízení nebo dokonce importovat existující. Vyberme první možnost a pokračujeme.
Zde musíte zadat hlavní server, IP adresu nebo název hostitele nový replikační slave, port a chcete-li ClusterControl, nainstalujte software nebo zahrňte tento uzel do existujícího nástroje pro vyrovnávání zatížení. Můžete také nakonfigurovat replikaci jako synchronní nebo asynchronní.
Nyní máte svůj PostgreSQL cluster na místě s odpovídajícími replikami, pojďme se podívat, jak zlepšit výkon přidáním fondu připojení.
Deployment PgBouncer
Přejděte do ClusterControl -> Vyberte PostgreSQL Cluster -> Cluster Actions -> Add Load Balancer -> PgBouncer. Zde můžete nasadit nový uzel PgBouncer, který bude nasazen ve vybraném databázovém uzlu, nebo dokonce importovat existující uzel PgBouncer.
Budete muset zadat IP adresu nebo název hostitele, port pro poslech a Přihlašovací údaje PgBouncer. Když stisknete Deploy PgBouncer, ClusterControl přistoupí k uzlu, nainstaluje a nakonfiguruje vše bez jakéhokoli ručního zásahu.
Pokrok můžete sledovat v části ClusterControl Activity Section. Po dokončení musíte vytvořit nový fond. Za tímto účelem přejděte na ClusterControl -> Vyberte klastr PostgreSQL -> Nodes -> uzel PgBouncer.
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 primárního uzlu PostgreSQL nebo vytvořte nového.
-
Režim fondu:Může to být:relace (výchozí), transakce nebo sdružování příkazů.
-
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ě.
Nyní byste měli vidět fond v sekci Uzel.
Chcete-li do databáze PostgreSQL přidat vysokou dostupnost, podívejme se, jak nasadit load balancer.
Nasazení nástroje Load Balancer
Chcete-li provést nasazení nástroje pro vyrovnávání zatížení, vyberte možnost Přidat nástroj pro vyrovnávání zatížení v nabídce Akce clusteru a vyplňte požadované informace.
Musíte přidat IP nebo název hostitele, port, zásady a uzly budete používat. Pokud používáte PgBouncer, můžete jej vybrat v rozbalovacím seznamu typu instance.
Abyste se vyhnuli jedinému bodu selhání, měli byste nasadit alespoň dva uzly HAProxy a použít Keepalived, což vám umožní používat ve vaší aplikaci virtuální IP adresu, která je přiřazena aktivnímu uzlu HAProxy. Pokud tento uzel selže, virtuální IP adresa bude migrována do sekundárního nástroje pro vyrovnávání zatížení, takže vaše aplikace může stále fungovat jako obvykle.
Keepalived Deployment
Chcete-li provést nasazení Keepalived, vyberte možnost Přidat Load Balancer v nabídce Akce clusteru a poté přejděte na kartu Keepalived.
Zde vyberte uzly HAProxy a zadejte virtuální IP adresu, která bude být použit pro přístup k databázi (nebo ke společnému fondu připojení).
V tuto chvíli byste měli mít následující topologii:
A to znamená:HAProxy + Keepalived -> PgBouncer -> Uzly databáze PostgreSQL , což je dobrá topologie pro váš PostgreSQL Cluster.
Funkce automatického obnovení ClusterControl
V případě selhání ClusterControl povýší nejpokročilejší pohotovostní uzel na primární a také vás upozorní na problém. Také selže při replikaci zbytku pohotovostního uzlu z nového primárního serveru.
Ve výchozím nastavení je HAProxy nakonfigurován se dvěma různými porty:čtení-zápis a pouze čtení. Na portu pro čtení a zápis máte uzel primární databáze (neboli PgBouncer) jako online a zbytek uzlů jako offline a na portu pouze pro čtení máte primární i pohotovostní uzel online.
Když HAProxy zjistí, že některý z vašich uzlů není přístupný, automaticky jej označí jako offline a nebere jej v úvahu při odesílání provozu na něj. Detekce se provádí pomocí skriptů kontroly stavu, které jsou konfigurovány ClusterControl v době nasazení. Tyto kontrolují, zda jsou instance aktivní, zda procházejí obnovením nebo jsou pouze pro čtení.
Když ClusterControl povýší pohotovostní uzel, HAProxy označí starý primární uzel jako offline pro oba porty a uvede povýšený uzel online do portu pro čtení a zápis.
Pokud vaše aktivní HAProxy, které je přiřazena virtuální IP adresa, ke které se vaše systémy připojují, selže, Keepalived automaticky migruje tuto IP adresu na pasivní HAProxy. To znamená, že vaše systémy jsou poté schopny normálně fungovat.
Závěr
Jak můžete vidět, mít dobrou topologii PostgreSQL je snadné, pokud používáte ClusterControl a pokud dodržujete základní koncepty osvědčených postupů pro replikaci PostgreSQL. Nejlepší prostředí samozřejmě závisí na pracovní zátěži, hardwaru, aplikaci atd., ale můžete jej použít jako příklad a přesouvat části, jak potřebujete.