Zátěžové balancéry jsou základní součástí vysoké dostupnosti databáze; zejména při zprůhlednění změn topologie pro aplikace a implementaci funkce rozdělení čtení a zápisu. ClusterControl poskytuje řadu funkcí pro bezpečné nasazení, monitorování a konfiguraci předních technologií pro vyrovnávání zátěže s otevřeným zdrojovým kódem.
V minulém roce jsme přidali podporu pro ProxySQL a přidali několik vylepšení pro HAProxy a Maxscale MariaDB. V této tradici pokračujeme s nejnovější verzí ClusterControl 1.5.
Na základě zpětné vazby, kterou jsme obdrželi od našich uživatelů, jsme zlepšili způsob správy ProxySQL. Také jsme přidali podporu pro HAProxy a Keepalived, aby běžely na klastrech PostgreSQL.
V tomto příspěvku na blogu se podíváme na tato vylepšení...
ProxySQL – Vylepšení správy uživatelů
Dříve vám uživatelské rozhraní umožňovalo pouze vytvořit nového uživatele nebo přidat stávajícího, a to po jednom. Jedna zpětná vazba, kterou jsme od našich uživatelů dostali, byla, že je docela těžké spravovat velký počet uživatelů. Poslouchali jsme a v ClusterControl 1.5 je nyní možné importovat velké dávky uživatelů. Pojďme se podívat, jak to můžete udělat. Nejprve musíte mít nasazený ProxySQL. Poté přejděte do uzlu ProxySQL a na kartě Uživatelé byste měli vidět tlačítko „Importovat uživatele“.

Jakmile na něj kliknete, otevře se nové dialogové okno:

Zde můžete vidět všechny uživatele, které ClusterControl zjistil ve vašem clusteru. Můžete mezi nimi procházet a vybrat ty, které chcete importovat. Můžete také vybrat nebo zrušit výběr všech uživatelů z aktuálního zobrazení.

Jakmile začnete psát do pole Hledat, ClusterControl odfiltruje neodpovídající výsledky a zúží seznam pouze na uživatele relevantní pro vaše vyhledávání.

Pomocí tlačítka „Vybrat vše“ můžete vybrat všechny uživatele, kteří odpovídají vašemu vyhledávání. Po výběru uživatelů, které chcete importovat, můžete samozřejmě vymazat vyhledávací pole a zahájit další hledání:

Všimněte si prosím „(7 vybraných)“ – říká vám, kolik uživatelů celkem (nejen z tohoto vyhledávání) jste vybrali k importu. Můžete na něj také kliknout a zobrazit pouze uživatele, které jste vybrali k importu.

Jakmile budete se svou volbou spokojeni, můžete kliknout na „Další“ a přejít na další obrazovku.

Zde se musíte rozhodnout, jaká by měla být výchozí hostitelská skupina pro každého uživatele. Můžete to udělat pro jednotlivé uživatele nebo globálně, pro celou množinu nebo podmnožinu uživatelů vyplývajících z vyhledávání.

Jakmile kliknete na tlačítko „Importovat uživatele“, uživatelé budou importováni a zobrazí se na kartě Uživatelé.
ProxySQL – Správa plánovače
Plánovač ProxySQL je modul podobný cron, který umožňuje ProxySQL spouštět externí skripty v pravidelných intervalech. Plán může být poměrně podrobný – až jedno provedení každou milisekundu. Plánovač se obvykle používá ke spouštění skriptů kontroly Galera (jako je proxysql_galera_checker.sh), ale lze jej také použít ke spouštění jakéhokoli jiného skriptu, který chcete. V minulosti ClusterControl používal plánovač k nasazení skriptu kontroly Galera, ale to nebylo odhaleno v uživatelském rozhraní. Po spuštění ClusterControl 1.5 máte nyní plnou kontrolu.

Jak můžete vidět, bylo naplánováno spuštění jednoho skriptu každé 2 sekundy (2000 milisekund) – toto je výchozí konfigurace pro cluster Galera.

Výše uvedený snímek obrazovky nám ukazuje možnosti úprav stávajících záznamů. Vezměte prosím na vědomí, že ProxySQL podporuje až 5 argumentů pro skripty, které bude provádět prostřednictvím plánovače.

Pokud chcete, aby byl do plánovače přidán nový skript, můžete kliknout na tlačítko „Přidat nový skript“ a zobrazí se obrazovka jako výše. Můžete si také prohlédnout, jak bude celý skript vypadat po spuštění. Poté, co vyplníte všechna pole „Argument“ a definujete interval, můžete kliknout na tlačítko „Přidat nový skript“.

V důsledku toho bude skript přidán do plánovače a bude viditelný v seznamu naplánovaných skriptů.
Stáhněte si Whitepaper Today Správa a automatizace PostgreSQL s ClusterControlZjistěte, co potřebujete vědět k nasazení, monitorování, správě a škálování PostgreSQLStáhněte si WhitepaperPostgreSQL – vytváření balíčku vysoké dostupnosti
Nastavení replikace s automatickým převzetím služeb při selhání je dobré, ale aplikace potřebují jednoduchý způsob, jak sledovat zapisovatelnou master. Proto jsme přidali podporu pro HAProxy a Keepalived nad klastry PostgreSQL. To umožňuje našim uživatelům PostgreSQL nasadit plný zásobník s vysokou dostupností pomocí ClusterControl.

Na podzáložce Load Balancer můžete nyní nasadit HAProxy – pokud jste obeznámeni s tím, jak ClusterControl nasazuje replikaci MySQL, je to velmi podobné nastavení. Nainstalujeme HAProxy na daný hostitel, dva backendy, čte na portu 3308 a zapisuje na port 3307. Používá tcp-check, přičemž očekává návrat konkrétního řetězce. K vytvoření tohoto řetězce se na všech uzlech databáze provedou následující kroky. Nejprve je xinet.d nakonfigurován tak, aby spouštěl službu na portu 9201 (aby nedošlo k záměně s nastavením MySQL, které používá port 9200).
# default: on
# description: postgreschk
service postgreschk
{
flags = REUSE
socket_type = stream
port = 9201
wait = no
user = root
server = /usr/local/sbin/postgreschk
log_on_failure += USERID
disable = no
#only_from = 0.0.0.0/0
only_from = 0.0.0.0/0
per_source = UNLIMITED
Služba spustí skript /usr/local/sbin/postgreschk, který ověří stav PostgreSQL a řekne, zda je daný hostitel dostupný a jaký typ hostitele je (master nebo slave). Pokud je vše v pořádku, vrátí řetězec očekávaný HAProxy.
Stejně jako u MySQL jsou uzly HAProxy v clusterech PostgreSQL vidět v uživatelském rozhraní a lze přistupovat na stavovou stránku:

Zde můžete vidět oba backendy a ověřit, že pouze master je pro r/w backend a ke všem uzlům lze přistupovat přes backend pouze pro čtení. Můžete také získat nějaké statistiky o provozu a připojení.
HAProxy pomáhá zlepšit vysokou dostupnost, ale může se stát jediným bodem selhání. Musíme udělat něco navíc a nakonfigurovat redundanci s pomocí Keepalived.

V části Manage -> Load Balancer -> Keepalived si vyberete hostitele HAProxy, které chcete používat, a Keepalived bude nasazen nad nimi s virtuální IP připojenou k rozhraní dle vašeho výběru.
Od této chvíle by veškerá konektivita měla jít do VIP, která bude připojena k jednomu z HAProxy uzlů. Pokud tento uzel selže, Keepalived odejme VIP na tomto uzlu a přivede jej na jiný HAProxy uzel.
To je vše pro funkce vyrovnávání zátěže představené v ClusterControl 1.5. Vyzkoušejte je a dejte nám vědět, jak jste