sql >> Databáze >  >> RDS >> Mysql

Konfigurace vysoké dostupnosti pro uzly ClusterControl pomocí CMON HA

V našem předchozím blogu jsme probírali ClusterControl CMON HA for Distributed Database High Availability, který napsal Krzysztof Ksiazek ve dvou samostatných příspěvcích. V tomto blogu se budeme zabývat distribucí uzlů prostřednictvím on-prem a na veřejném cloudu (pomocí Google Cloud Platform (GCP)).

Důvodem, proč jsme napsali tento blog, je to, že jsme obdrželi dotazy ohledně toho, jak implementovat instanci ClusterControl s vysokou dostupností, která má uzel CMON spuštěný on-prem a jiný uzel CMON běžící na jiné datové centrum (například veřejný cloud). V našem předchozím blogu ClusterControl CMON HA pro distribuovanou databázi High Availability jsme používali uzly Galera Cluster, ale tentokrát použijeme replikaci MySQL pomocí Percona Server 5.7. Ideálním nastavením je vždy zapouzdřit komunikaci uzlů z vašeho on-prem a vašich uzlů umístěných ve veřejném cloudu prostřednictvím VPN nebo zabezpečeného kanálu.

ClusterControl CMON HA je v raných fázích, pro které se domníváme, že ještě není dostatečně zralý. Naše CMON HA je však schopna poskytnout vám pocit funkčnosti pro nasazení ClusterControl, aby byla vysoce dostupná. Pokračujme tím, jak můžete nasadit a nastavit distribuci uzlů prostřednictvím on-prem  prostřednictvím veřejného cloudu.

Co je CMON?

Než přejdeme k hlavnímu tématu, dovolte nám představit vám, co je CMON. CMON je zkratka pro ClusterControl Controller, což je „primární mozek“ ClusterControl. Backendová služba provádějící automatizaci, správu, monitorování, plánování a také dostupnost HA. Shromážděná data se ukládají do databáze CMON, pro kterou jako úložiště dat používáme databáze kompatibilní s MySQL.

Architektonické nastavení

Někteří z vás možná nevěděli o možnostech ClusterControl, které může provádět a být nastaven na vysokou dostupnost. Pokud máte spuštěno více uzlů ClusterControl (nebo CMON), je to možné zdarma. Možná budete moci spustit spoustu uzlů ClusterControl, kdykoli budete potřebovat.

Pro toto nastavení budeme mít nad ClusterControl uzly ClusterControl, abychom mohli vytvořit nebo nasadit uzly databáze a spravovat automatické převzetí služeb při selhání, kdykoli například dojde k selhání. I když můžete použít MHA, Orchestrator nebo Maxscale ke správě automatického přepnutí při selhání, ale kvůli efektivitě a rychlosti použiji ClusterControl k provádění speciálních věcí, které jiné nástroje, které jsem zmínil, nemají.

Podívejme se tedy na schéma tohoto nastavení:

Nastavení založené na tomto diagramu ukazuje, že na vrcholu tříuzlového CMON , je nad nimi běžící CMON (ClusterControl), který bude sledovat automatické převzetí služeb při selhání. Poté bude HAProxy moci načíst rovnováhu mezi monitorovanými třemi uzly CMON, přičemž jeden uzel je umístěn v samostatné oblasti hostované v GCP pro tento blog. Možná jste si všimli, že jsme nezahrnuli Keepalived, protože nemůžeme umístit VIP pod GCP, protože je v jiné síti.

Jak jste si mohli všimnout, umísťujeme celkem tři uzly. CMON HA vyžaduje, abychom potřebovali alespoň 3 uzly, abychom mohli pokračovat v procesu hlasování nebo takzvaném kvóru. Pro toto nastavení tedy požadujeme, abyste měli alespoň 3 uzly, abyste měli vyšší dostupnost.

Nasazení uzlů On-Prem ClusterControl

V této části očekáváme, že jste již nastavili nebo nainstalovali své uživatelské rozhraní ClusterControl, které použijeme k nasazení tříuzlového clusteru replikace MySQL pomocí serveru Percona.

Pojďme nejprve vytvořit cluster nasazením nové replikace MySQL, jak je uvedeno níže.

Upozorňuji, že zde používám Percona Server 5.7, pro který je výchozí nastavení pomocí ClusterControl funguje efektivně.

Potom definujte název hostitele nebo IP svých uzlů,

V tuto chvíli očekáváme, že jste již nastavili dva uzel Replikace Master/Slave, která je hostována nebo spuštěna na místě. Níže uvedený snímek obrazovky by měl ukázat, jak budou vaše uzly vypadat:

Nastavení a instalace ClusterControl a povolení CMON HA na prvním uzlu

Z tohoto předchozího blogu  ClusterControl CMON HA pro distribuovanou databázi High Availability jsme stručně poskytli kroky, jak toho dosáhnout. Pojďme znovu dolů a proveďte uvedené kroky, ale pro toto konkrétní nastavení replikace Master/Slave.

Nejprve vyberte jeden uzel, na který chcete nainstalovat první ClusterControl (v tomto nastavení skončím instalaci nejprve na uzlu 192.168.70.80) a proveďte níže uvedené kroky.

Krok jedna

Instalovat ClusterControl

$ wget http://www.severalnines.com/downloads/CMON/install-cc

$ chmod +x install-cc

$ sudo ./install-cc   # omit sudo if you run as root

Vezměte na vědomí, že jakmile budete vyzváni, aby byla detekována aktuální instance mysql, musíte nechat ClusterControl používat existující spuštěný mysqld, protože to je jeden z našich cílů zde pro CMON HA a pro toto nastavení používat již nastavili MySQL.

Krok dva

Navázat CMON nejen na povolení přes localhost, ale také na konkrétní IP adresu (protože povolíme HA)

## edit /etc/default/CMON  and modify the line just like below or add the line if it doesn't exist

RPC_BIND_ADDRESSES="127.0.0.1,192.168.70.80"

Krok tři

Potom restartujte CMON,

service CMON restart

Krok čtyři

Instalovat nástroje CLI s9s

$ wget http://repo.severalnines.com/s9s-tools/install-s9s-tools.sh

$ chmod 755 install-s9s-tools.sh

$ ./install-s9s-tools.sh

Během této instalace nástroj s9s nastaví uživatele admin, kterého můžete použít při práci s příkazem s9s, stejně jako povolení CMON HA.

Pátý krok

Povolte CMON HA

$ s9s controller --enable-CMON-ha

Krok šest

Nakonec upravte soubor /etc/my.cnf a přidejte,

slave-skip-errors = 1062

v části [mysqld]. Po přidání nezapomeňte restartovat mysql jako,

service mysql restart

nebo

systemctl restart mysql

V současné době je toto omezení, kterému čelíme u CMON HA, protože se pokouší vložit položky protokolu do slave, ale to může být prozatím v pořádku.

Nastavení, instalace ClusterControl a povolení CMON HA na druhém uzlu

Jednoduché jako pro první uzel. Nyní, na 2. uzlu (192.168.70.70),  musíme provést stejné kroky, ale místo toho musíme v krocích provést určité úpravy, aby bylo toto HA možné.

Krok jedna

Zkopírujte konfiguraci do 2. uzlu (192.168.70.70) z prvního uzlu (192.168.70.80)

$ scp -r /etc/CMON* 192.168.70.70:/etc/

Krok dva

V 2. uzlu upravte soubor /etc/CMON.cnf a ujistěte se, že je hostitel správně nakonfigurován. např.

vi /etc/CMON.cnf

Poté přiřaďte parametr hostitele jako,

hostname=192.168.70.70

Krok tři

Instalovat ClusterControl,

$ wget http://www.severalnines.com/downloads/CMON/install-cc

$ chmod +x install-cc

$ sudo ./install-cc   # omit sudo if you run as root

Přeskočte však instalaci CMON (nebo ClusterControl Controller), jakmile narazíte na tento řádek,

=> An existing Controller installation detected!

=> A re-installation of the Controller will overwrite the /etc/CMON.cnf file

=> Install the Controller? (y/N):

Zbytek udělejte to, co jste udělali na prvním uzlu, jako je nastavení názvu hostitele, použijte existující spuštěnou instanci mysqld, poskytněte heslo MySQL a heslo pro váš CMON, které musí být oba mají stejné heslo s prvním uzlem.

Krok čtyři

Instalovat nástroje CLI s9s

$ wget http://repo.severalnines.com/s9s-tools/install-s9s-tools.sh

$ chmod 755 install-s9s-tools.sh

$ ./install-s9s-tools.sh

Pátý krok

Zkopírujte zbývající konfiguraci z 1. uzlu do 2. uzlu.

$ scp -r ~/.s9s/ 192.168.70.70:/root/

$ scp /etc/s9s.conf 192.168.70.70:/etc/

$ scp /var/www/html/clustercontrol/bootstrap.php 192.168.70.70:/var/www/html/clustercontrol/

Krok šest

Nainstalujte balíček clustercontrol-controller,

Pro Ubuntu/Debian

$ apt install -y clustercontrol-controller

Pro RHEL/CentOS/Fedora,

$ yum install -y clustercontrol-controller

Krok sedm

Zkopírujte soubor /etc/default/CMON a upravte IP adresu pro adresu vazby RPC

scp /etc/default/CMON 192.168.70.70:/etc/default

RPC_BIND_ADDRESSES="127.0.0.1,10.0.0.103"

Potom restartujte CMON následovně,

service CMON restart

Krok 8

Upravte soubor /etc/my.cnf a přidejte,

slave-skip-errors = 1062

v části [mysqld]. Po přidání nezapomeňte restartovat mysql jako,

service mysql restart

nebo

systemctl restart mysql

V současné době je toto omezení, kterému čelíme u CMON HA, protože se pokouší vložit položky protokolu do slave, ale to může být prozatím v pořádku.

Krok devět

Nakonec zkontrolujte, jak vypadají uzly CMON HA,

[[email protected] ~]#  s9s controller --list --long

S VERSION    OWNER GROUP NAME            IP PORT COMMENT

l 1.7.5.3735 system admins 192.168.70.80   192.168.70.80 9501 Acting as leader.

f 1.7.5.3735 system admins 192.168.70.70   192.168.70.70 9501 Accepting heartbeats.

Total: 2 controller(s)

Nasazení uzlu ClusterControl v cloudu

Jak jsme již zmínili, ideální nastavení pro komunikaci je zapouzdření paketů přes VPN nebo jiné prostředky zabezpečeného kanálu. Pokud máte obavy, jak to udělat, podívejte se na náš předchozí blog Multi-DC PostgreSQL:Nastavení pohotovostního uzlu v jiné geografické poloze přes VPN, pro který jsme řešili, jak můžete vytvořit jednoduché nastavení VPN pomocí OpenVPN.

V této části tedy očekáváme, že jste již nastavili připojení VPN. Nyní se chystáme přidat slave, který máme distribuovat dostupnost CMON do Google Cloud Platform. Chcete-li to provést, přejděte na Add Replication Slave, kterou najdete kliknutím na ikonu clusteru v pravém rohu. Podívejte se, jak to vypadá níže:

Takhle skončíme s:

Nyní, protože jsme přidali nového slave zařízení, které je hostováno pod GCP, možná budete muset znovu sledovat to, co jsme udělali dříve na 2. uzlu. Předám vám, abyste postupovali podle těchto kroků a řídili se pokyny, jak jsme dopadli na 2. uzlu.

Jakmile to budete mít správně, skončíte s následujícím výsledkem:

[[email protected] ~]# s9s controller --list --long

S VERSION    OWNER GROUP NAME            IP PORT COMMENT

l 1.7.5.3735 system admins 192.168.70.80   192.168.70.80 9501 Acting as leader.

f 1.7.5.3735 system admins 192.168.70.70   192.168.70.70 9501 Accepting heartbeats.

f 1.7.5.3735 system admins 10.142.0.39     10.142.0.39 9501 Accepting heartbeats.

kde v uzlech 

  • 192.168.70.80 -  (uzel8) a sídlí v mém on-prem
  • 192.168.70.70 - (node7) a sídlí v mém on-prem
  • 10.142.0.39  – (gnode1) je hostován v GCP a v jiné oblasti

CMON HA v akci

Můj kolega Krzysztof Ksiazek již poskytl nastavení pro HA pomocí HAProxy zde na tomto blogu ClusterControl CMON HA pro distribuovanou databázi High Availability – část 2 (GUI Access Setup).

Chcete-li postupovat podle postupu uvedeného v blogu, ujistěte se, že máte balíčky xinetd a pathlib. Můžete nainstalovat xinetd a pathlib následovně,

$ sudo yum install -y xinetd python-pathlib.noarch

Ujistěte se také, že máte CMONhachk definovaný v /etc/services, jak je uvedeno níže:

[[email protected] ~]# grep 'CMONhachk' /etc/services 

CMONhachk       9201/tcp

a zajistěte změny a restartujte xinetd,

service xinetd restart

Přeskočím postup Keepalived a HAProxy a očekávám, že jste se nastavili podle toho. Jednou věcí, kterou musíte u tohoto nastavení zvážit, je to, že použití Keepalived nelze použít, pokud rozptylujete VIP z místní sítě do veřejné cloudové sítě, protože jde o zcela odlišnou síť.

Nyní se podívejme, jak CMON HA reaguje, pokud jsou uzly vypnuté. Jak bylo ukázáno dříve, uzel 192.168.70.80 (uzel8) se choval jako vedoucí stejně jako níže:

Kde databáze hlavního uzlů také ukazuje uzel8, je hlavní z pohledu topologie ClusterControl . Zkusme zabít node8 a uvidíme, jak CMON HA postupuje,

Jak vidíte, gnode1 (uzel GCP) přebírá vedení jak uzel8 klesá. Kontrola výsledků HAProxy na následující,

a naše uzly ClusterControl ukazují, že uzel 8 je mimo provoz, zatímco uzel GCP přijímá jako hlavní,

A konečně přístup k mému HAProxy uzlu, který běží na hostiteli 192.168.10.100 na port 81 zobrazuje následující uživatelské rozhraní,

Závěr

Naše ClusterControl CMON HA je od verze 1.7.2, ale byla to pro nás také výzva, protože různé otázky a preference, jak to nasadit, jako je použití replikace MySQL přes Galera Cluster.

Naše CMON HA ještě není zralá, ale nyní je připravena uspokojit vaše potřeby vysoké dostupnosti. Různé přístupy mohou být použitelné, pokud vaše kontroly určí správný uzel, který je v provozu.

Doporučujeme vám nastavit a nasadit pomocí CMON HA a dejte nám vědět, jak dobře vyhovuje vašim potřebám, nebo pokud problém přetrvává, dejte nám prosím vědět, jak vám pomoci zajistit vysokou dostupnost.


  1. ScaleGrid PostgreSQL na cloudové infrastruktuře VMware

  2. Rychlý skript, který vrací všechny vlastnosti ze SERVERPROPERTY() v SQL Server 2017/2019

  3. Jak navrhnout systém připravený na lokalizaci

  4. Základy automatizace úloh serveru SQL Server