Uživatelé databází s otevřeným zdrojovým kódem musí ke správě svých produkčních databázových prostředí často používat směs nástrojů a domácích skriptů. I když máte v řešení vlastní domácí skripty, je těžké je udržovat a držet krok s novými funkcemi databáze, bezpečnostními požadavky nebo upgrady. S novými hlavními verzemi databáze, včetně MySQL 8.0, může být tento úkol ještě těžší.
Srdcem ClusterControl je jeho automatizační funkce, která vám umožní automatizovat databázové úlohy, které musíte pravidelně provádět, jako je nasazování nových databází, přidávání a škálování nových uzlů, správa záloh, vysoká dostupnost a převzetí služeb při selhání, změny topologie, upgrady a další. Automatizované postupy jsou přesné, konzistentní a opakovatelné, takže můžete minimalizovat riziko změn v produkčním prostředí.
Navíc díky ClusterControl již uživatelé MySQL nepodléhají uzamčení dodavatele; něco, co v poslední době mnozí zpochybňovali. Můžete zdarma nasadit a importovat různé verze MySQL a dodavatele z jediné konzole.
V tomto článku vám ukážeme, jak nasadit MySQL 8.0 s bitvou testovanou konfigurací a spravovat ji automatizovaným způsobem. Zde najdete postup:
- Instalace ClusterControl
- Proces nasazení MySQL
- Nasaďte nový cluster
- Import stávajícího clusteru
- Škálování MySQL
- Zabezpečení MySQL
- Monitorování a trendy
- Zálohování a obnovení
- Automatické obnovení uzlů a klastru (automatické převzetí služeb při selhání)
Instalace ClusterControl
Chcete-li začít s ClusterControl, potřebujete vyhrazený virtuální počítač nebo hostitele. Požadavky na VM a podporované systémy jsou popsány zde. Základní virtuální počítač může začínat na 2 GB, 2 jádrech a na disku 20 GB úložného prostoru, a to buď on-prem, nebo v cloudu.
Instalace je dobře popsána v dokumentaci, ale v zásadě si stáhnete instalační skript, který vás provede jednotlivými kroky. Skript průvodce nastaví interní databázi, nainstaluje potřebné balíčky, úložiště a další nezbytná vylepšení. Pro prostředí bez přístupu k internetu můžete použít proces instalace offline.
ClusterControl vyžaduje přístup SSH k hostitelům databáze a monitorování může být založené na agentech nebo bez agentů. Management je bez agenta.
Chcete-li nastavit SSH bez hesla pro všechny cílové uzly (ClusterControl a všechny hostitele databáze), spusťte na serveru ClusterControl následující příkazy:
$ ssh-keygen -t rsa # press enter on all prompts
$ ssh-copy-id -i ~/.ssh/id_rsa [ClusterControl IP address]
$ ssh-copy-id -i ~/.ssh/id_rsa [Database nodes IP address] # repeat this to all target database nodes
Jedním z nejpohodlnějších způsobů, jak vyzkoušet ovládání clusteru, může být možnost spustit jej v kontejneru docker.
docker run -d --name clustercontrol \
--network db-cluster \
--ip 192.168.10.10 \
-h clustercontrol \
-p 5000:80 \
-p 5001:443 \
-v /storage/clustercontrol/cmon.d:/etc/cmon.d \
-v /storage/clustercontrol/datadir:/var/lib/mysql \
-v /storage/clustercontrol/sshkey:/root/.ssh \
-v /storage/clustercontrol/cmonlib:/var/lib/cmon \
-v /storage/clustercontrol/backups:/root/backups \
severalnines/clustercontrol
Po úspěšném nasazení byste měli mít přístup k webovému uživatelskému rozhraní ClusterControl na adrese {host's IP address}:{host's port}, například:
HTTP: http://192.168.10.100:5000/clustercontrol
HTTPS: https://192.168.10.100:5001/clustercontrol
Nasazení a škálování
Nasaďte MySQL 8.0
Jakmile vstoupíme do rozhraní ClusterControl, první věc, kterou musíte udělat, je nasadit novou databázi nebo importovat existující. Nová verze 1.7.2 zavádí podporu pro verzi 8.0 Oracle Community Edition a Percona Server. V době psaní tohoto blogu jsou aktuální verze Oracle MySQL Server 8.0.15 a Percona Server pro MySQL 8.0-15. Vyberte možnost „Deploy Database Cluster “ a postupujte podle zobrazených pokynů.
ClusterControl:Nasazení databázového klastruPři výběru MySQL musíme zadat uživatele, klíč nebo heslo a port pro připojení pomocí SSH k našim serverům. Potřebujeme také název pro náš nový cluster a pokud chceme, aby ClusterControl nainstaloval odpovídající software a konfigurace za nás.
Po nastavení přístupových informací SSH musíme zadat údaje pro přístup k naší databázi. Můžeme také určit, které úložiště použít. Konfigurace úložiště je důležitým aspektem pro databázové servery a clustery. Při nasazování databázového serveru/klastru pomocí ClusterControl můžete mít tři typy úložišť:
- Používejte úložiště dodavatelů
Poskytujte software nastavením a používáním preferovaného softwarového úložiště dodavatele databáze. ClusterControl nainstaluje nejnovější verzi toho, co poskytuje úložiště dodavatele databáze. - Nenastavujte úložiště dodavatelů
Poskytování softwaru pomocí již existujícího softwarového úložiště již nastaveného na uzlech. Uživatel musí ručně nastavit softwarové úložiště na každém databázovém uzlu a ClusterControl použije toto úložiště pro nasazení. To je dobré, pokud databázové uzly běží bez připojení k internetu. - Používejte zrcadlená úložiště (vytvořit nové úložiště)
Vytvořte a zrcadlte úložiště aktuálního dodavatele databáze a poté nasaďte pomocí místního zrcadleného úložiště. To vám umožní „zmrazit“ aktuální verze softwarových balíčků.
V dalším kroku musíme přidat naše servery do clusteru, který se chystáme vytvořit. Při přidávání našich serverů můžeme zadat IP nebo název hostitele a poté zvolit síťové rozhraní. V druhém případě musíme mít server DNS nebo jsme přidali naše servery MySQL do souboru místního rozlišení (/etc/hosts) našeho ClusterControl, aby mohl přeložit odpovídající název, který chcete přidat.
Na obrazovce můžeme vidět příklad nasazení s jedním master a dvěma slave servery. Seznam serverů je dynamický a umožňuje vám vytvářet sofistikované topologie, které lze po počáteční instalaci rozšířit.
ClusterControl:Definice topologieKdyž je vše nastaveno, stiskněte tlačítko nasazení. Stav vytváření našeho nového nastavení replikace můžete sledovat z monitoru aktivity ClusterControl. Proces nasazení se také postará o instalaci oblíbených mysql nástrojů, jako je percona toolkit a percona-xtradb-backup.
ClusterControl:Podrobnosti o nasazení clusteruPo dokončení úlohy můžeme vidět náš cluster na hlavní obrazovce ClusterControl a v zobrazení topologie. Všimněte si, že jsme také přidali nástroj pro vyrovnávání zatížení (ProxySQL) před instance databáze.
ClusterControl:TopologieJak můžeme vidět na obrázku, jakmile máme vytvořený cluster, můžeme na něm provádět několik úkolů přímo ze sekce topologie.
ClusterControl:Správa topologieImportovat nový klastr
Máme také možnost spravovat stávající nastavení jeho importem do ClusterControl. Takové prostředí lze vytvořit pomocí ClusterControl nebo jinými metodami (loutka, kuchař, ansible, docker…). Tento proces je jednoduchý a nevyžaduje speciální znalosti.
ClusterControl:Import existujícího clusteruNejprve musíme zadat přihlašovací údaje SSH pro přístup k našim serverům. Poté zadáme přístupové údaje do naší databáze, datový adresář serveru a verzi. Přidáme uzly podle IP nebo názvu hostitele stejným způsobem jako při nasazení a stiskneme Importovat. Po dokončení úkolu jsme připraveni spravovat náš cluster z ClusterControl. V tomto okamžiku můžeme také definovat možnosti pro automatické obnovení uzlu nebo clusteru.
Škálování MySQL
S ClusterControl je přidání dalších serverů na server snadným krokem. Můžete to udělat z GUI nebo CLI. Pro pokročilejší uživatele můžete použít ClusterControl Developer Studio a napsat základní podmínku zdrojů pro automatické rozšíření vašeho clusteru.
Při přidávání nového uzlu do nastavení máte možnost použít stávající zálohu, takže není potřeba zahlcovat hlavní produkční uzel další prací.
ClusterControl Scaling MySQLS vestavěnou podporou pro load balancery (ProxySQL, Maxscale, HAProxy) můžete dynamicky přidávat a odebírat MySQL uzly. Pokud se chcete dozvědět více do hloubky o tom, jak nejlépe řídit replikaci a shlukování MySQL, přečtěte si prosím whitepaper replikace MySQL pro replikaci HA.
Zabezpečení MySQL
MySQL přichází s velmi malým zabezpečením hned po vybalení. To bylo v poslední verzi vylepšeno, ale systémy produkčního stupně stále vyžadují vylepšení ve výchozí konfiguraci my.cnf.
ClusterControl odstraňuje lidskou chybu a poskytuje přístup k sadě bezpečnostních funkcí, které automaticky chrání vaše databáze před hackery a jinými hrozbami.
ClusterControl umožňuje podporu SSL pro připojení MySQL. Povolení SSL přidává další úroveň zabezpečení pro komunikaci mezi aplikacemi (včetně ClusterControl) a databází. Klienti MySQL otevírají šifrovaná připojení k databázovým serverům a ověřují identitu těchto serverů před přenosem jakýchkoli citlivých informací.
ClusterControl provede všechny potřebné kroky, včetně vytvoření certifikátů na všech databázových uzlech. Takové certifikáty lze později udržovat na kartě Správa klíčů.
ClusterControl:SSL klíče správceInstalace serveru Percona přichází s další podporou pro auditní plugin. Nepřetržitý audit je nezbytným úkolem pro monitorování vašeho databázového prostředí. Auditováním databáze můžete dosáhnout odpovědnosti za provedené akce nebo přístup k obsahu. Kromě toho může audit zahrnovat některé kritické systémové komponenty, jako jsou ty, které jsou spojené s finančními údaji, aby podpořily přesný soubor předpisů, jako je SOX nebo nařízení EU GDPR. Řízený proces vám umožňuje vybrat, co by mělo být auditováno a jak udržovat soubory protokolu auditu.
ClusterControl:Povolit protokol auditu pro Percona Server 8.0Monitorování
Při práci s databázovými systémy byste měli být schopni je monitorovat. To vám umožní identifikovat trendy, plánovat upgrady nebo vylepšení nebo efektivně reagovat na jakékoli problémy nebo chyby, které mohou nastat.
Nový ClusterControl 1.7.2 přichází s aktualizovaným monitorováním ve vysokém rozlišení pro MySQL 8.0. Používá Prometheus jako úložiště dat s dotazovacím jazykem PromQL. Seznam dashboardů zahrnuje MySQL Server General, MySQL Server Caches, MySQL InnoDB Metrics, MySQL Replication Master, MySQL Replication Slave, System Overview a Cluster Overview Dashboards.
ClusterControl instaluje agenty Prometheus, konfiguruje metriky a udržuje přístup ke konfiguraci exportérů Prometheus prostřednictvím svého GUI, takže můžete lépe spravovat konfiguraci parametrů, jako jsou příznaky kolektorů pro exportéry (Prometheus). Co lze v poslední době monitorovat, jsme podrobně popsali v článku Jak monitorovat MySQL pomocí Prometheus &ClusterControl.
ClusterControl:DashboardUpozornění
Jako provozovatel databáze potřebujeme být informováni, kdykoli se v naší databázi vyskytne něco kritického. Mezi tři hlavní metody v ClusterControl pro získání výstrahy patří:
- e-mailová upozornění
- integrace
- poradci
E-mailová upozornění můžete nastavit na uživatelské úrovni. Přejděte do Nastavení> E-mailová upozornění . Kde si můžete vybrat mezi kritičností a typem upozornění, které se má odeslat.
ClusterControl:UpozorněníDalší metodou je použití integračních služeb. Jde o předání konkrétní kategorie událostí jiné službě, jako jsou vstupenky ServiceNow, Slack, PagerDuty atd., abyste mohli vytvořit pokročilé způsoby oznamování a integrace v rámci vaší organizace.
ClusterControl:IntegracePoslední možností je zapojit sofistikovanou analýzu metrik v sekci Poradce, kde můžete vytvářet inteligentní kontroly a spouštěče.
ClusterControl:Automatic AdvisorsZálohování a obnovení
Nyní, když máte MySQL v provozu a máte své monitorování na místě, je čas na další krok:ujistěte se, že máte zálohu svých dat.
ClusterControl:Vytvořit zálohuClusterControl poskytuje rozhraní pro správu záloh MySQL s podporou plánování a kreativních sestav. Poskytuje vám dvě možnosti metod zálohování.
- Logické:mysqldump
- Binární:xtrabackup/mariabackup
Dobrá strategie zálohování je kritickou součástí každého systému správy databází. ClusterControl nabízí mnoho možností pro zálohování a obnovu/obnovu.
ClusterControl:Plán zálohování a úložiště zálohUchovávání záloh ClusterControl je konfigurovatelné; můžete si vybrat, zda chcete zálohu uchovat na jakékoli časové období nebo nikdy zálohy neodstranit. Šifrování AES256 se používá k zabezpečení vašich záloh proti podvodným prvkům. Pro rychlou obnovu lze zálohy obnovit přímo do nového clusteru – ClusterControl se stará o celý proces obnovy od spuštění nového nastavení databáze až po obnovu dat, přičemž z procesu odstraňuje manuální kroky náchylné k chybám.
Zálohy lze po dokončení automaticky ověřit a poté nahrát do služeb cloudového úložiště (AWS, Azure a Google). Pro místní zálohy v datovém centru i pro zálohy, které se nahrávají do cloudu, lze definovat různé zásady uchovávání.
Automatické obnovení uzlu a clusteru
ClusterControl poskytuje pokročilou podporu pro detekci a řešení poruch. Umožňuje vám také nasadit různé proxy a integrovat je do vašeho zásobníku HA, takže není třeba upravovat připojovací řetězec aplikace nebo záznam DNS pro přesměrování aplikace na nový hlavní uzel.
Když je hlavní server mimo provoz, ClusterControl vytvoří úlohu, která provede automatické převzetí služeb při selhání. ClusterControl provádí veškerou práci na pozadí při výběru nového hlavního serveru, nasazení záložních podřízených serverů a konfiguraci nástrojů pro vyrovnávání zátěže.
ClusterControl:Automatické obnovení uzluAutomatické převzetí služeb při selhání ClusterControl bylo navrženo s následujícími principy:
- Před převzetím služeb při selhání se ujistěte, že je hlavní server skutečně mrtvý
- Přechod při selhání pouze jednou
- Nepřebírejte na nekonzistentní slave
- Pište pouze hlavnímu serveru
- Neobnovujte automaticky neúspěšnou hlavní stránku
Díky vestavěným algoritmům lze převzetí služeb při selhání často provést velmi rychle, takže si můžete zajistit nejvyšší SLA pro vaše databázové prostředí.
Proces je vysoce konfigurovatelný. Dodává se s několika parametry, které můžete použít k přizpůsobení obnovy specifikům vašeho prostředí. Mezi různými možnostmi můžete najít replication_stop_on_error, replication_auto_rebuild_slave, replication_failover_blacklist, replication_failover_whitelist, replication_skip_apply_missing_txs, replication_onfail_failover_script a mnoho dalších.