sql >> Databáze >  >> RDS >> MariaDB

Použití MySQL Galera Cluster Replication k vytvoření geograficky distribuovaného clusteru:Část druhá

V předchozím blogu této série jsme diskutovali o výhodách a nevýhodách použití Galera Cluster k vytvoření geograficky distribuovaného clusteru. V tomto příspěvku navrhneme geo-distribuovaný cluster založený na Galeře a ukážeme, jak můžete nasadit všechny požadované součásti pomocí ClusterControl.

Návrh geograficky distribuovaného clusteru galerií

Začneme vysvětlením prostředí, které chceme vybudovat. Využijeme tři vzdálená datová centra, propojená přes Wide Area Network (WAN). Každé datové centrum bude přijímat zápisy z lokálních aplikačních serverů. Čtení bude také pouze místní. To má zabránit zbytečnému provozu protínajícímu WAN.

Pro toto nastavení je konektivita na místě a zajištěna, ale nebudeme přesně popisovat, jak toho lze dosáhnout. Existuje mnoho metod, jak zabezpečit konektivitu, počínaje proprietárním hardwarovým a softwarovým řešením přes OpenVPN a konče na SSH tunelech.

Jako loadbalancer použijeme ProxySQL. ProxySQL bude nasazen lokálně v každém datovém centru. Bude také směrovat provoz pouze do místních uzlů. Vzdálené uzly lze vždy přidat ručně a vysvětlíme případy, kdy by to mohlo být dobré řešení. Aplikaci lze nakonfigurovat pro připojení k jednomu z lokálních uzlů ProxySQL pomocí algoritmu round-robin. Můžeme také použít Keepalived a Virtual IP pro směrování provozu k jedinému uzlu ProxySQL, pokud by jediný uzel ProxySQL byl schopen zvládnout veškerý provoz.

Dalším možným řešením je spojit ProxySQL s aplikačními uzly a nakonfigurovat aplikaci pro připojení k proxy na localhost. Tento přístup funguje docela dobře za předpokladu, že je nepravděpodobné, že ProxySQL nebude k dispozici, přesto by aplikace fungovala na stejném uzlu. Typicky to, co vidíme, je buď selhání uzlu, nebo selhání sítě, což by ovlivnilo ProxySQL i aplikaci současně.

Výše uvedený diagram ukazuje verzi prostředí, kde je umístěn ProxySQL stejný uzel jako aplikace. ProxySQL je nakonfigurován tak, aby rozložil pracovní zátěž mezi všechny uzly Galera v místním datovém centru. Jeden z těchto uzlů by byl vybrán jako uzel pro odesílání zápisů, zatímco SELECTy by byly distribuovány mezi všechny uzly. Mít jeden vyhrazený zapisovací uzel v datovém centru pomáhá snížit počet možných konfliktů certifikace, což obvykle vede k lepšímu výkonu. Abychom to ještě více snížili, museli bychom začít posílat provoz přes připojení WAN, což není ideální, protože by se výrazně zvýšilo využití šířky pásma. Právě teď, když jsou segmenty na místě, se přes datová centra odesílají pouze dvě kopie sady zápisů – jedna na DC.

Hlavním problémem geograficky distribuovaných nasazení Galera Cluster je latence. To je něco, co musíte vždy před spuštěním prostředí vyzkoušet. Jsem v pořádku s časem odevzdání? Při každém potvrzení musí proběhnout certifikace, takže sady zápisů musí být odeslány a certifikovány na všech uzlech v clusteru, včetně vzdálených. Může se stát, že vysoká latence bude považovat nastavení za nevhodné pro vaši aplikaci. V takovém případě může být vhodnější více clusterů Galera připojených prostřednictvím asynchronní replikace. To by však bylo téma na další blogový příspěvek.

Nasazení geograficky distribuovaného clusteru Galera pomocí ClusterControl

Aby bylo jasno, ukážeme si, jak může nasazení vypadat. Nepoužijeme skutečné nastavení multi-DC, vše bude nasazeno v místní laboratoři. Předpokládáme, že latence je přijatelná a celé nastavení je životaschopné. Na ClusterControl je skvělé, že je nezávislá na infrastruktuře. Nezáleží na tom, zda jsou uzly blízko sebe, umístěné ve stejném datovém centru nebo zda jsou uzly distribuovány mezi více poskytovatelů cloudu. Dokud existuje připojení SSH z instance ClusterControl ke všem uzlům, proces nasazení vypadá úplně stejně. Proto vám to můžeme ukázat krok za krokem pouze pomocí místní laboratoře.

Instalace ClusterControl

Nejprve musíte nainstalovat ClusterControl. Můžete si jej stáhnout zdarma. Po registraci byste měli přejít na stránku s průvodcem ke stažení a instalaci ClusterControl. Je to stejně jednoduché jako spuštění skriptu shellu. Jakmile nainstalujete ClusterControl, zobrazí se vám formulář pro vytvoření administrátora:

Jakmile jej vyplníte, zobrazí se vám uvítací obrazovka a přístup na průvodce nasazením:

Přejdeme k nasazení. Otevře se průvodce nasazením:

Vybereme MySQL Galera. Musíme předat podrobnosti o připojení SSH – podporován je uživatel root nebo uživatel sudo. V dalším kroku definujeme servery v clusteru.

Chystáme se nasadit tři uzly v jednom z datových center. Potom budeme schopni rozšířit cluster a nakonfigurovat nové uzly v různých segmentech. Zatím nám nezbývá nic jiného, ​​než kliknout na „Deploy“ a sledovat ClusterControl, jak nasazuje cluster Galera.

Naše první tři uzly jsou v provozu, nyní můžeme přistoupit k přidávání další uzly v jiných datových centrech.

Můžete to udělat z nabídky akcí, jak je znázorněno na snímku obrazovky výše .

Zde můžeme přidávat další uzly, jeden po druhém. Co je důležité, měli byste změnit segment Galera na nenulový (0 se používá pro počáteční tři uzly).

Po chvíli skončíme se všemi devíti uzly rozdělenými do tří segmentů.

Nyní musíme nasadit proxy vrstvu. K tomu použijeme ProxySQL. Můžete jej nasadit v ClusterControl přes Manage -> Load Balancer:

Otevře se pole nasazení:

Nejprve se musíme rozhodnout, kam nasadit ProxySQL. Použijeme existující uzly Galera, ale do pole můžete napsat cokoli, takže je dokonale možné nasadit ProxySQL na aplikační uzly. Kromě toho musíte předat přístupové údaje pro administrátora a monitorujícího uživatele.

Potom musíme buď vybrat jednoho ze stávajících uživatelů v MySQL, nebo jednoho vytvořit právě teď. Chceme také zajistit, aby byl ProxySQL nakonfigurován tak, aby používal uzly Galera umístěné pouze ve stejném datovém centru.

Když máte jeden ProxySQL připravený v datovém centru, můžete jej použít jako zdroj konfigurace:

Toto je třeba opakovat pro každý aplikační server, který máte ve všech datových centrech . Poté je třeba aplikaci nakonfigurovat tak, aby se připojovala k lokální instanci ProxySQL, ideálně přes Unixový socket. To přichází s nejlepším výkonem a nejnižší latencí.

Po nasazení posledního ProxySQL je naše prostředí připraveno. Aplikační uzly se připojují k místnímu ProxySQL. Každý ProxySQL je nakonfigurován pro práci s uzly Galera ve stejném datovém centru:

Závěr

Doufáme, že vám tato dvoudílná série pomohla pochopit silné a slabé stránky geograficky distribuovaných clusterů Galera a jak ClusterControl velmi usnadňuje nasazení a správu takového clusteru.


  1. Jak převést číslo na slova - ORACLE

  2. Skrytá vylepšení výkonu a správy v SQL Server 2012 / 2014

  3. Funkce data a času MariaDB (úplný seznam)

  4. PostgreSQL Load Balancing &Vylepšení ProxySQL - ClusterControl 1.5