Galera Cluster is een van de meest populaire high-availability-oplossingen voor MySQL. Het is een vrijwel synchroon cluster, dat helpt om de replicatievertraging onder controle te houden. Dankzij de flow control kan het Galera-cluster zichzelf vertragen en kunnen meer belaste nodes de rest van het cluster inhalen. De recente release van Galera 4 bracht nieuwe functies en verbeteringen. We hebben ze behandeld in een blogpost over MariaDB 10.4 Galera Cluster en een blogpost waarin de bestaande en toekomstige functies van Galera 4 worden besproken.
Hoe presteert Galera 4 bij gebruik in Amazon EC2? Zoals u waarschijnlijk weet, biedt Amazon Relational Database Services, die zijn ontworpen om gebruikers een gemakkelijke manier te bieden om een zeer beschikbare MySQL-database te implementeren. Mijn collega, Ashraf Sharif, vergeleek de failover-tijden voor RDS MySQL en RDS Aurora in zijn blogpost. Failover-tijden voor Aurora zien er echt geweldig uit, maar er zijn maaren. Allereerst ben je genoodzaakt om RDS te gebruiken. U kunt Aurora niet implementeren op de instanties die u beheert. Als de bestaande functies en opties die beschikbaar zijn in Aurora niet genoeg voor je zijn, heb je geen andere optie dan zelf iets te implementeren. Hier komt Galera binnen. Galera is, in tegenstelling tot Aurora, geen gepatenteerde zwarte doos. Integendeel, het is een open source software, die vrij kan worden gebruikt in alle ondersteunde omgevingen. U kunt Galera Cluster installeren op AWS Elastic Computing Cloud (EC2) en daardoor een omgeving met hoge beschikbaarheid bouwen waarin failover vrijwel onmiddellijk is:zodra u de storing van een knooppunt kunt detecteren, kunt u opnieuw verbinding maken met het andere Galera-knooppunt. Hoe zet je Galera 4 in EC2 in? In deze blogpost bekijken we het en geven we je een stapsgewijze handleiding die laat zien wat de eenvoudigste manier is om dat te bereiken.
Een Galera 4-cluster implementeren op EC2
De eerste stap is het creëren van een omgeving die we gaan gebruiken voor ons Galera-cluster. We gaan voor Ubuntu 18.04 LTS virtuele machines.
We gaan voor deze blog voor de instantiegrootte t2.medium na. U moet uw instanties schalen op basis van de verwachte belasting.
We gaan drie knooppunten in het cluster implementeren. Waarom drie? We hebben een blog waarin wordt uitgelegd hoe Galera een hoge beschikbaarheid behoudt.
We gaan de opslag voor die instanties configureren.
We zullen ook de juiste beveiligingsgroep voor de knooppunten kiezen. Nogmaals, in ons geval is de beveiligingsgroep vrij open. U moet ervoor zorgen dat de toegang zoveel mogelijk wordt beperkt - alleen knooppunten die toegang moeten hebben tot databases, mogen hiermee verbinding maken.
Ten slotte kiezen we een bestaande sleutelpar of maken we een nieuwe. Na deze stap worden onze drie instanties gelanceerd.
Zodra ze zijn geactiveerd, kunnen we er verbinding mee maken via SSH en beginnen met configureren de database.
We hebben besloten om de naamgevingsconventie 'node1, node2, node3' te gebruiken, daarom moesten we /etc/hosts op alle knooppunten bewerken en ze naast hun respectieve lokale IP's vermelden. We hebben ook de wijziging aangebracht in /etc/hostname om de nieuwe naam voor nodes te gebruiken. Als dit klaar is, kunnen we beginnen met het opzetten van ons Galera-cluster. Op het moment van schrijven is de enige leverancier die GA-versie van Galera 4 levert MariaDB met zijn 10.4, daarom gaan we MariaDB 10.4 gebruiken voor ons cluster. We gaan verder met de installatie met behulp van de suggesties en handleidingen van de MariaDB-website.
Een MariaDB 10.4 Galera-cluster implementeren
We beginnen met het voorbereiden van repositories:
wget https://downloads.mariadb.com/MariaDB/mariadb_repo_setup
bash ./mariadb_repo_setup
We hebben een script gedownload dat bedoeld is om de repositories in te stellen en we hebben het uitgevoerd om te controleren of alles correct is ingesteld. Dit heeft repositories geconfigureerd om de nieuwste MariaDB-versie te gebruiken, die op het moment van schrijven 10.4 is.
[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.
Zoals je kunt zien, zijn de opslagplaatsen voor MariaDB 10.4 en MaxScale 2.4 geconfigureerd. Nu kunnen we doorgaan en MariaDB installeren. We zullen het stap voor stap doen, knooppunt voor knooppunt. MariaDB biedt een handleiding over hoe u het cluster moet installeren en configureren.
We moeten pakketten installeren:
apt-get install mariadb-server mariadb-client galera-4 mariadb-backup
Deze opdracht installeert alle vereiste pakketten om MariaDB 10.4 Galera te laten draaien. MariaDB maakt een set configuratiebestanden. We zullen een nieuwe toevoegen, die alle vereiste instellingen zou bevatten. Standaard wordt het aan het einde van het configuratiebestand opgenomen, zodat alle eerdere instellingen voor de variabelen die we hebben ingesteld, worden overschreven. In het ideale geval zou u daarna bestaande configuratiebestanden bewerken om instellingen te verwijderen die we in de galera.cnf hebben geplaatst om verwarring te voorkomen waar een bepaalde instelling is geconfigureerd.
[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"
Als de configuratie klaar is, kunnen we beginnen.
[email protected]:~# galera_new_cluster
Dit zou het nieuwe cluster op het eerste knooppunt moeten opstarten. Vervolgens moeten we vergelijkbare stappen volgen voor de resterende knooppunten:installeer de vereiste pakketten en configureer ze, rekening houdend met het feit dat het lokale IP-adres verandert, dus we moeten het bestand galera.cnf dienovereenkomstig wijzigen.
Als de configuratiebestanden klaar zijn, moeten we een gebruiker aanmaken die zal worden gebruikt voor de 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)
We zouden dat op het eerste knooppunt moeten doen. De resterende knooppunten worden lid van het cluster en ontvangen een momentopname van de volledige status, zodat de gebruiker naar hen wordt overgedragen. Nu hoeven we alleen nog de resterende knooppunten te starten:
[email protected]:~# service mysql start
[email protected]:~# service mysql start
en controleer of dat cluster inderdaad is gevormd:
MariaDB [(none)]> show global status like 'wsrep_cluster_size';
+--------------------+-------+
| Variable_name | Value |
+--------------------+-------+
| wsrep_cluster_size | 3 |
+--------------------+-------+
1 row in set (0.001 sec)
Alles is goed, het cluster staat op en bestaat uit drie Galera-knooppunten. We zijn erin geslaagd om MariaDB 10.4 Galera Cluster te implementeren op Amazon EC2.