Galera Cluster är en av de mest populära högtillgänglighetslösningarna för MySQL. Det är ett praktiskt taget synkront kluster, vilket hjälper till att hålla replikeringsfördröjningen under kontroll. Tack vare flödeskontrollen kan Galera-klustret strypa sig självt och låta mer laddade noder komma ikapp resten av klustret. Den senaste versionen av Galera 4 gav nya funktioner och förbättringar. Vi täckte dem i ett blogginlägg där vi pratade om MariaDB 10.4 Galera Cluster och ett blogginlägg som diskuterade befintliga och kommande funktioner i Galera 4.
Hur går Galera 4 när den används i Amazon EC2? Som du säkert vet erbjuder Amazon Relational Database Services, som är utformade för att ge användare ett enkelt sätt att distribuera högt tillgänglig MySQL-databas. Min kollega, Ashraf Sharif, jämförde failover-tider för RDS MySQL och RDS Aurora i sitt blogginlägg. Failovertider för Aurora ser riktigt bra ut men det finns men. Först och främst är du tvungen att använda RDS. Du kan inte distribuera Aurora på de instanser du hanterar. Om de befintliga funktionerna och alternativen som finns tillgängliga i Aurora inte räcker för dig, har du inget annat alternativ än att distribuera något på egen hand. Här kommer Galera in. Galera, till skillnad från Aurora, är inte en proprietär svart låda. Tvärtom är det en programvara med öppen källkod, som kan användas fritt i alla miljöer som stöds. Du kan installera Galera Cluster på AWS Elastic Computing Cloud (EC2) och genom det bygga en högtillgänglig miljö där failover är nästan omedelbar:så snart du kan upptäcka nodens fel kan du återansluta till den andra Galera-noden. Hur distribuerar man Galera 4 i EC2? I det här blogginlägget kommer vi att ta en titt på det och vi kommer att ge dig en steg-för-steg-guide som visar vad som är det enklaste sättet att åstadkomma det.
Distribuera ett Galera 4-kluster på EC2
Första steget är att skapa en miljö som vi kommer att använda för vårt Galera-kluster. Vi kommer att använda Ubuntu 18.04 LTS virtuella maskiner.
Vi kommer att använda t2.medium instansstorlek för denna blogg posta. Du bör skala dina instanser baserat på den förväntade belastningen.
Vi kommer att distribuera tre noder i klustret. Varför tre? Vi har en blogg som förklarar hur Galera håller hög tillgänglighet.
Vi kommer att konfigurera lagring för dessa instanser.
Vi kommer också att välja lämplig säkerhetsgrupp för noderna. Återigen, i vårt fall är säkerhetsgruppen ganska öppen. Du bör se till att åtkomsten är begränsad så mycket som möjligt - endast noder som måste komma åt databaser ska tillåtas ansluta till dem.
Slutligen väljer vi antingen ett befintligt nyckelpar eller skapar ett nytt. Efter detta steg kommer våra tre instanser att lanseras.
När de är uppe kan vi ansluta till dem via SSH och börja konfigurera databasen.
Vi bestämde oss för att använda "node1, node2, node3" namnkonvention, därför var vi tvungna att redigera /etc/hosts på alla noder och lista dem tillsammans med sina respektive lokala IP-adresser. Vi gjorde också ändringen i /etc/hostname för att använda det nya namnet för noder. När detta är klart kan vi börja ställa in vårt Galera-kluster. I skrivande stund är den enda leverantören som tillhandahåller GA-versionen av Galera 4 MariaDB med dess 10.4, därför kommer vi att använda MariaDB 10.4 för vårt kluster. Vi kommer att fortsätta med installationen med hjälp av förslagen och guiderna från MariaDB-webbplatsen.
Distribuera ett MariaDB 10.4 Galera-kluster
Vi börjar med att förbereda förråd:
wget https://downloads.mariadb.com/MariaDB/mariadb_repo_setup
bash ./mariadb_repo_setup
Vi laddade ner skript som är avsett att ställa in arkiven och vi körde det för att se till att allt är korrekt inställt. Detta konfigurerade förråd för att använda den senaste MariaDB-versionen, som i skrivande stund är 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.
Som du kan se har arkiv för MariaDB 10.4 och MaxScale 2.4 konfigurerats. Nu kan vi fortsätta och installera MariaDB. Vi kommer att göra det steg för steg, nod för nod. MariaDB ger guide om hur du ska installera och konfigurera klustret.
Vi måste installera paket:
apt-get install mariadb-server mariadb-client galera-4 mariadb-backup
Det här kommandot installerar alla nödvändiga paket för att MariaDB 10.4 Galera ska köras. MariaDB skapar en uppsättning konfigurationsfiler. Vi kommer att lägga till en ny, som skulle innehålla alla nödvändiga inställningar. Som standard kommer den att inkluderas i slutet av konfigurationsfilen så att alla tidigare inställningar för de variabler vi ställer in kommer att skrivas över. Helst skulle du efteråt redigera befintliga konfigurationsfiler för att ta bort inställningar som vi har lagt in i galera.cnf för att undvika förvirring var en given inställning är konfigurerad.
[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"
När konfigurationen är klar kan vi börja.
[email protected]:~# galera_new_cluster
Detta bör starta det nya klustret på den första noden. Därefter bör vi fortsätta med liknande steg på återstående noder:installera nödvändiga paket och konfigurera dem med tanke på att den lokala IP-adressen ändras så vi måste ändra galera.cnf-filen därefter.
När konfigurationsfilerna är klara måste vi skapa en användare som kommer att användas för 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)
Vi bör göra det på den första noden. Återstående noder kommer att gå med i klustret och de kommer att få full status ögonblicksbild så att användaren kommer att överföras till dem. Nu är det enda vi behöver göra att starta de återstående noderna:
[email protected]:~# service mysql start
[email protected]:~# service mysql start
och verifiera att klustret verkligen har bildats:
MariaDB [(none)]> show global status like 'wsrep_cluster_size';
+--------------------+-------+
| Variable_name | Value |
+--------------------+-------+
| wsrep_cluster_size | 3 |
+--------------------+-------+
1 row in set (0.001 sec)
Allt är bra, klustret är uppe och det består av tre Galera-noder. Vi lyckades distribuera MariaDB 10.4 Galera Cluster på Amazon EC2.