Galera Cluster je jedním z nejoblíbenějších řešení vysoké dostupnosti pro MySQL. Jde o prakticky synchronní cluster, který pomáhá udržet zpoždění replikace pod kontrolou. Díky řízení toku se může cluster Galera sám přiškrtit a umožnit více zatíženým uzlům dohnat zbytek clusteru. Nedávné vydání Galery 4 přineslo nové funkce a vylepšení. Pokryli jsme je v blogovém příspěvku o MariaDB 10.4 Galera Cluster a blogovém příspěvku pojednávajícím o stávajících a připravovaných funkcích Galera 4.
Jak si Galera 4 stojí při použití v Amazon EC2? Jak asi víte, Amazon nabízí služby relačních databází, které jsou navrženy tak, aby uživatelům poskytovaly snadný způsob nasazení vysoce dostupné databáze MySQL. Můj kolega Ashraf Sharif ve svém příspěvku na blogu porovnal doby převzetí služeb při selhání pro RDS MySQL a RDS Aurora. Failover times pro Auroru vypadá opravdu skvěle, ale má svá ale. V první řadě jste nuceni používat RDS. Auroru nemůžete nasadit na instance, které spravujete. Pokud vám stávající funkce a možnosti dostupné v Auroře nestačí, nemáte jinou možnost, než nasadit něco vlastními silami. Zde vstupuje Galera. Galera, na rozdíl od Aurory, není proprietární černá skříňka. Naopak se jedná o open source software, který lze volně používat ve všech podporovaných prostředích. Galera Cluster můžete nainstalovat na AWS Elastic Computing Cloud (EC2) a díky tomu vytvořit vysoce dostupné prostředí, kde je převzetí služeb při selhání téměř okamžité:jakmile zjistíte selhání uzlu, můžete se znovu připojit k jinému uzlu Galera. Jak se nasadí Galera 4 v EC2? V tomto příspěvku na blogu se na to podíváme a poskytneme vám podrobného průvodce, který ukazuje, jak toho nejjednodušeji dosáhnout.
Nasazení clusteru Galera 4 na EC2
Prvním krokem je vytvoření prostředí, které budeme používat pro náš cluster Galera. Budeme používat virtuální stroje Ubuntu 18.04 LTS.
Pro účely tohoto blogu použijeme velikost instance t2.medium pošta. Měli byste škálovat své instance na základě očekávaného zatížení.
Chystáme se nasadit tři uzly v clusteru. Proč tři? Máme blog, který vysvětluje, jak Galera udržuje vysokou dostupnost.
Nakonfigurujeme úložiště pro tyto instance.
Také vybereme správnou bezpečnostní skupinu pro uzly. V našem případě je bezpečnostní skupina opět zcela otevřená. Měli byste zajistit, aby byl přístup co nejvíce omezen – pouze uzly, které mají přístup k databázím, by měly mít povoleno se k nim připojit.
Nakonec buď vybereme existující klíčový par, nebo vytvoříme nový. Po tomto kroku budou spuštěny naše tři instance.
Jakmile budou aktivní, můžeme se k nim připojit přes SSH a začít konfigurovat databáze.
Rozhodli jsme se použít konvenci pojmenování 'node1, node2, node3', proto jsme museli upravit /etc/hosts na všech uzlech a uvést je vedle jejich příslušných místních IP adres. Také jsme provedli změnu v /etc/hostname, abychom pro uzly používali nový název. Až to bude hotové, můžeme začít nastavovat náš cluster Galera. V době psaní tohoto článku je jediným dodavatelem, který poskytuje GA verzi Galera 4, MariaDB se svou 10.4, proto budeme pro náš cluster používat MariaDB 10.4. Budeme pokračovat v instalaci pomocí návrhů a průvodců z webu MariaDB.
Nasazení MariaDB 10.4 Galera Cluster
Začneme s přípravou repozitářů:
wget https://downloads.mariadb.com/MariaDB/mariadb_repo_setup
bash ./mariadb_repo_setup
Stáhli jsme skript, který je určen k nastavení repozitářů, a spustili jsme jej, abychom se ujistili, že je vše správně nastaveno. Toto nakonfigurovalo úložiště pro použití nejnovější verze MariaDB, která je v době psaní tohoto článku 10.4.
[email protected]:~# apt update
Hit:1 http://eu-central-1.ec2.archive.ubuntu.com/ubuntu bionic InRelease
Hit:2 http://eu-central-1.ec2.archive.ubuntu.com/ubuntu bionic-updates InRelease
Hit:3 http://eu-central-1.ec2.archive.ubuntu.com/ubuntu bionic-backports InRelease
Hit:4 http://downloads.mariadb.com/MariaDB/mariadb-10.4/repo/ubuntu bionic InRelease
Ign:5 http://downloads.mariadb.com/MaxScale/2.4/ubuntu bionic InRelease
Hit:6 http://downloads.mariadb.com/Tools/ubuntu bionic InRelease
Hit:7 http://downloads.mariadb.com/MaxScale/2.4/ubuntu bionic Release
Hit:8 http://security.ubuntu.com/ubuntu bionic-security InRelease
Reading package lists... Done
Building dependency tree
Reading state information... Done
4 packages can be upgraded. Run 'apt list --upgradable' to see them.
Jak můžete vidět, úložiště pro MariaDB 10.4 a MaxScale 2.4 byla nakonfigurována. Nyní můžeme pokračovat a nainstalovat MariaDB. Uděláme to krok za krokem, uzel po uzlu. MariaDB poskytuje průvodce, jak byste měli nainstalovat a nakonfigurovat cluster.
Potřebujeme nainstalovat balíčky:
apt-get install mariadb-server mariadb-client galera-4 mariadb-backup
Tento příkaz nainstaluje všechny požadované balíčky pro spuštění MariaDB 10.4 Galera. MariaDB vytvoří sadu konfiguračních souborů. Přidáme nový, který by obsahoval všechna požadovaná nastavení. Ve výchozím nastavení bude zahrnut na konci konfiguračního souboru, takže všechna předchozí nastavení pro proměnné, které jsme nastavili, budou přepsána. V ideálním případě byste poté upravili existující konfigurační soubory a odstranili nastavení, která jsme vložili do souboru galera.cnf, abyste se vyhnuli nejasnostem, kde je dané nastavení nakonfigurováno.
[email protected]:~# cat /etc/mysql/conf.d/galera.cnf
[mysqld]
bind-address=10.0.0.103
default_storage_engine=InnoDB
binlog_format=row
innodb_autoinc_lock_mode=2
# Galera cluster configuration
wsrep_on=ON
wsrep_provider=/usr/lib/galera/libgalera_smm.so
wsrep_cluster_address="gcomm://10.0.0.103,10.0.0.130,10.0.0.62"
wsrep_cluster_name="Galera4 cluster"
wsrep_sst_method=mariabackup
wsrep_sst_auth='sstuser:pa55'
# Cluster node configuration
wsrep_node_address="10.0.0.103"
wsrep_node_name="node1"
Když je konfigurace připravena, můžeme začít.
[email protected]:~# galera_new_cluster
To by mělo zavést nový cluster na prvním uzlu. Dále bychom měli pokračovat podobnými kroky na zbývajících uzlech:nainstalovat požadované balíčky a nakonfigurovat je s ohledem na to, že místní IP se mění, takže musíme odpovídajícím způsobem změnit soubor galera.cnf.
Když jsou konfigurační soubory připraveny, musíme vytvořit uživatele, který bude použit pro Snapshot State Transfer (SST):
MariaDB [(none)]> CREATE USER 'sstuser'@'localhost' IDENTIFIED BY 'pa55';
Query OK, 0 rows affected (0.022 sec)
MariaDB [(none)]> GRANT PROCESS, RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'sstuser'@'localhost';
Query OK, 0 rows affected (0.022 sec)
Měli bychom to udělat na prvním uzlu. Zbývající uzly se připojí ke clusteru a obdrží úplný snímek stavu, takže uživatel na ně bude převeden. Teď už zbývá jen spustit zbývající uzly:
[email protected]:~# service mysql start
[email protected]:~# service mysql start
a ověřte, že se cluster skutečně vytvořil:
MariaDB [(none)]> show global status like 'wsrep_cluster_size';
+--------------------+-------+
| Variable_name | Value |
+--------------------+-------+
| wsrep_cluster_size | 3 |
+--------------------+-------+
1 row in set (0.001 sec)
Vše je v pořádku, cluster je aktivní a skládá se ze tří uzlů Galera. Podařilo se nám nasadit MariaDB 10.4 Galera Cluster na Amazon EC2.