Galera Cluster ist eine der beliebtesten Hochverfügbarkeitslösungen für MySQL. Es handelt sich um einen praktisch synchronen Cluster, der dazu beiträgt, die Replikationsverzögerung unter Kontrolle zu halten. Dank der Flusskontrolle kann sich der Galera-Cluster selbst drosseln und mehr belasteten Knoten erlauben, den Rest des Clusters einzuholen. Die jüngste Veröffentlichung von Galera 4 brachte neue Funktionen und Verbesserungen. Wir haben sie in einem Blogbeitrag behandelt, in dem es um MariaDB 10.4 Galera Cluster ging, und in einem Blogbeitrag, in dem es um bestehende und kommende Funktionen von Galera 4 geht.
Wie funktioniert Galera 4, wenn es in Amazon EC2 verwendet wird? Wie Sie wahrscheinlich wissen, bietet Amazon relationale Datenbankdienste an, die darauf ausgelegt sind, Benutzern eine einfache Möglichkeit zu bieten, hochverfügbare MySQL-Datenbanken bereitzustellen. Mein Kollege Ashraf Sharif hat in seinem Blogbeitrag Failover-Zeiten für RDS MySQL und RDS Aurora verglichen. Failover-Zeiten für Aurora sehen wirklich gut aus, aber es gibt Aber. Zunächst einmal sind Sie gezwungen, RDS zu verwenden. Sie können Aurora nicht auf den von Ihnen verwalteten Instanzen bereitstellen. Wenn Ihnen die vorhandenen Funktionen und Optionen von Aurora nicht ausreichen, haben Sie keine andere Wahl, als selbst etwas bereitzustellen. Hier tritt Galera ein. Galera ist im Gegensatz zu Aurora keine proprietäre Blackbox. Im Gegenteil, es ist eine Open-Source-Software, die auf allen unterstützten Umgebungen frei verwendet werden kann. Sie können Galera Cluster auf AWS Elastic Computing Cloud (EC2) installieren und dadurch eine hochverfügbare Umgebung aufbauen, in der das Failover fast sofort erfolgt:Sobald Sie den Ausfall eines Knotens erkennen können, können Sie sich wieder mit dem anderen Galera-Knoten verbinden. Wie setzt man Galera 4 in EC2 ein? In diesem Blog-Beitrag werden wir uns das ansehen und Ihnen eine Schritt-für-Schritt-Anleitung zur Verfügung stellen, die zeigt, wie Sie dies am einfachsten erreichen können.
Bereitstellen eines Galera 4-Clusters auf EC2
Der erste Schritt besteht darin, eine Umgebung zu erstellen, die wir für unseren Galera-Cluster verwenden werden. Wir werden uns für virtuelle Ubuntu 18.04 LTS-Maschinen entscheiden.
Für diesen Blog verwenden wir die Instance-Größe t2.medium Post. Sie sollten Ihre Instanzen basierend auf der erwarteten Last skalieren.
Wir werden drei Knoten im Cluster bereitstellen. Warum drei? Wir haben einen Blog, der erklärt, wie Galera Hochverfügbarkeit aufrechterhält.
Wir werden den Speicher für diese Instanzen konfigurieren.
Wir werden auch die richtige Sicherheitsgruppe für die Knoten auswählen. Auch in unserem Fall ist die Sicherheitsgruppe ziemlich offen. Sie sollten sicherstellen, dass der Zugriff so weit wie möglich eingeschränkt ist – nur Knoten, die auf Datenbanken zugreifen müssen, sollten sich mit ihnen verbinden dürfen.
Schließlich wählen wir entweder ein vorhandenes Schlüsselpar aus oder erstellen ein neues. Nach diesem Schritt werden unsere drei Instanzen gestartet.
Sobald sie hochgefahren sind, können wir uns über SSH mit ihnen verbinden und mit der Konfiguration beginnen die Datenbank.
Wir haben uns für die Namenskonvention „Knoten1, Knoten2, Knoten3“ entschieden, daher mussten wir /etc/hosts auf allen Knoten bearbeiten und sie neben ihren jeweiligen lokalen IPs auflisten. Wir haben auch die Änderung in /etc/hostname vorgenommen, um den neuen Namen für Knoten zu verwenden. Wenn dies erledigt ist, können wir mit der Einrichtung unseres Galera-Clusters beginnen. Zum Zeitpunkt des Verfassens dieses Artikels ist MariaDB mit 10.4 der einzige Anbieter, der die GA-Version von Galera 4 bereitstellt. Daher werden wir MariaDB 10.4 für unseren Cluster verwenden. Wir werden mit der Installation fortfahren, indem wir die Vorschläge und Anleitungen von der MariaDB-Website verwenden.
Bereitstellen eines MariaDB 10.4 Galera-Clusters
Wir beginnen mit der Vorbereitung von Repositories:
wget https://downloads.mariadb.com/MariaDB/mariadb_repo_setup
bash ./mariadb_repo_setup
Wir haben ein Skript heruntergeladen, das die Repositories einrichten soll, und wir haben es ausgeführt, um sicherzustellen, dass alles richtig eingerichtet ist. Dadurch wurden die Repositorys so konfiguriert, dass sie die neueste MariaDB-Version verwenden, die zum Zeitpunkt des Schreibens 10.4 ist.
[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.
Wie Sie sehen können, wurden Repositories für MariaDB 10.4 und MaxScale 2.4 konfiguriert. Jetzt können wir fortfahren und MariaDB installieren. Wir werden es Schritt für Schritt tun, Knoten für Knoten. MariaDB bietet eine Anleitung zur Installation und Konfiguration des Clusters.
Wir müssen Pakete installieren:
apt-get install mariadb-server mariadb-client galera-4 mariadb-backup
Dieser Befehl installiert alle erforderlichen Pakete, damit MariaDB 10.4 Galera ausgeführt werden kann. MariaDB erstellt eine Reihe von Konfigurationsdateien. Wir werden eine neue hinzufügen, die alle erforderlichen Einstellungen enthalten würde. Standardmäßig wird es am Ende der Konfigurationsdatei eingefügt, sodass alle vorherigen Einstellungen für die von uns festgelegten Variablen überschrieben werden. Im Idealfall würden Sie danach vorhandene Konfigurationsdateien bearbeiten, um Einstellungen zu entfernen, die wir in die galera.cnf eingefügt haben, um Verwirrung zu vermeiden, wo eine bestimmte Einstellung konfiguriert ist.
[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"
Wenn die Konfiguration fertig ist, können wir beginnen.
[email protected]:~# galera_new_cluster
Dies sollte den neuen Cluster auf dem ersten Knoten booten. Als nächstes sollten wir mit ähnlichen Schritten auf den verbleibenden Knoten fortfahren:Installieren Sie die erforderlichen Pakete und konfigurieren Sie sie unter Berücksichtigung, dass sich die lokale IP ändert, sodass wir die Datei galera.cnf entsprechend ändern müssen.
Wenn die Konfigurationsdateien fertig sind, müssen wir einen Benutzer erstellen, der für den Snapshot State Transfer (SST) verwendet wird:
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)
Wir sollten das auf dem ersten Knoten machen. Die verbleibenden Knoten treten dem Cluster bei und erhalten einen vollständigen Status-Snapshot, sodass der Benutzer zu ihnen übertragen wird. Jetzt müssen wir nur noch die restlichen Knoten starten:
[email protected]:~# service mysql start
[email protected]:~# service mysql start
und überprüfen Sie, ob der Cluster tatsächlich gebildet wurde:
MariaDB [(none)]> show global status like 'wsrep_cluster_size';
+--------------------+-------+
| Variable_name | Value |
+--------------------+-------+
| wsrep_cluster_size | 3 |
+--------------------+-------+
1 row in set (0.001 sec)
Alles ist gut, der Cluster ist aktiv und besteht aus drei Galera-Knoten. Wir haben es geschafft, MariaDB 10.4 Galera Cluster auf Amazon EC2 bereitzustellen.