Wir erhalten regelmäßig Fragen dazu, wie man einen Galera-Cluster mit nur 2 Knoten aufsetzt.
Die Dokumentation besagt eindeutig, dass Sie mindestens 3 Galera-Knoten haben sollten, um eine Netzwerkpartitionierung zu vermeiden. Es gibt jedoch einige triftige Gründe, eine 2-Knoten-Bereitstellung in Betracht zu ziehen, z. B. wenn Sie eine hohe Datenbankverfügbarkeit erreichen möchten, aber nur ein begrenztes Budget für einen dritten Datenbankknoten haben. Oder vielleicht führen Sie Galera in einer Entwicklungs-/Sandbox-Umgebung aus und bevorzugen eine minimale Einrichtung.
Galera implementiert einen Quorum-basierten Algorithmus, um eine primäre Komponente auszuwählen, durch die es Konsistenz erzwingt. Die primäre Komponente muss eine Mehrheit der Stimmen haben, also würde es in einem 2-Knoten-System keine Mehrheit geben, was zu einem Split Brain führen würde. Glücklicherweise ist es möglich, einen garbd (Galera Arbitrator Daemon) hinzuzufügen, einen leichtgewichtigen zustandslosen Daemon, der als ungerader Knoten fungieren kann. Der Arbitrator-Ausfall wirkt sich nicht auf den Cluster-Betrieb aus und eine neue Instanz kann jederzeit wieder an den Cluster angefügt werden. Es kann mehrere Schiedsrichter im Cluster geben.
ClusterControl unterstützt die Bereitstellung von garbd auf Nicht-Datenbankhosts.
Normalerweise benötigt ein Galera-Cluster mindestens drei Hosts, um voll funktionsfähig zu sein. Zum Zeitpunkt der Bereitstellung würden jedoch zwei Knoten ausreichen, um eine primäre Komponente zu erstellen. Hier sind die Schritte:
- Stellen Sie einen Galera-Cluster mit zwei Knoten bereit,
- Nachdem der Cluster von ClusterControl bereitgestellt wurde, fügen Sie garbd auf dem ClusterControl-Knoten hinzu.
Sie sollten mit dem folgenden Setup enden:
Stellen Sie den Galera-Cluster bereit
Gehen Sie zum Abschnitt „ClusterControl-Bereitstellung“, um den Cluster bereitzustellen.
Nachdem wir die Technologie ausgewählt haben, die wir bereitstellen möchten, müssen wir Benutzer, Schlüssel oder Passwort und Port angeben, um eine SSH-Verbindung zu unseren Hosts herzustellen. Wir brauchen auch den Namen für unseren neuen Cluster und wenn wir möchten, dass ClusterControl die entsprechende Software und Konfigurationen für uns installiert.
Nach dem Einrichten der SSH-Zugangsinformationen müssen wir Anbieter/Version auswählen und das Datenbank-Admin-Passwort, Datadir und Port definieren. Wir können auch angeben, welches Repository verwendet werden soll.
Auch wenn ClusterControl Sie warnt, dass ein Galera-Cluster eine ungerade Anzahl von Knoten benötigt, fügen Sie dem Cluster nur zwei Knoten hinzu.
Die Bereitstellung eines Galera-Clusters löst einen ClusterControl-Job aus, der auf der Jobs-Seite überwacht werden kann.
Installieren Sie Garbd
Sobald die Bereitstellung abgeschlossen ist, installieren Sie garbd auf dem ClusterControl-Host. Wir haben die Option, garbd von ClusterControl bereitzustellen, aber diese Option funktioniert nicht, wenn wir es auf demselben ClusterControl-Server bereitstellen möchten. Dies dient dazu, einige Probleme im Zusammenhang mit den Datenbankversionen und Paketabhängigkeiten zu vermeiden.
Also müssen wir es manuell installieren und dann garbd in ClusterControl importieren.
Sehen wir uns die manuelle Installation von Percona Garbd auf CentOS 7 an.
Erstellen Sie die Percona-Repository-Datei:
$ vi /etc/yum.repos.d/percona.repo
[percona-release-$basearch]
name = Percona-Release YUM repository - $basearch
baseurl = http://repo.percona.com/release/$releasever/RPMS/$basearch
enabled = 1
gpgcheck = 0
[percona-release-noarch]
name = Percona-Release YUM repository - noarch
baseurl = http://repo.percona.com/release/$releasever/RPMS/noarch
enabled = 1
gpgcheck = 0
[percona-release-source]
name = Percona-Release YUM repository - Source packages
baseurl = http://repo.percona.com/release/$releasever/SRPMS
enabled = 0
gpgcheck = 0
Installieren Sie dann das garbd-Paket des Percona XtraDB-Clusters:
$ yum install Percona-XtraDB-Cluster-garbd-57
Jetzt müssen wir garbd konfigurieren. Dazu müssen wir die Datei /etc/sysconfig/garb bearbeiten:
$ vi /etc/sysconfig/garb
# Copyright (C) 2012 Codership Oy
# This config file is to be sourced by garb service script.
# A comma-separated list of node addresses (address[:port]) in the cluster
GALERA_NODES="192.168.100.192:4567,192.168.100.193:4567"
# Galera cluster name, should be the same as on the rest of the nodes.
GALERA_GROUP="Galera1"
# Optional Galera internal options string (e.g. SSL settings)
# see http://galeracluster.com/documentation-webpages/galeraparameters.html
# GALERA_OPTIONS=""
# Log file for garbd. Optional, by default logs to syslog
# Deprecated for CentOS7, use journalctl to query the log for garbd
# LOG_FILE=""
Ändern Sie die Parameter GALERA_NODES und GALERA_GROUP entsprechend der Konfiguration der Galera-Knoten. Außerdem müssen wir die Zeile # REMOVE THIS AFTER CONFIGURATION entfernen, bevor wir den Dienst starten.
Und jetzt können wir den Garb-Service starten:
$ service garb start
Redirecting to /bin/systemctl start garb.service
Jetzt können wir den neuen garbd in ClusterControl importieren.
Gehen Sie zu ClusterControl -> Cluster auswählen -> Load Balancer hinzufügen.
Wählen Sie dann Garbd und den Abschnitt Garbd importieren.
Hier müssen wir nur den Hostnamen oder die IP-Adresse und den Port des neuen Garbd angeben.
Das Importieren von garbd löst einen ClusterControl-Job aus, der auf der Seite Jobs überwacht werden kann. Nach Abschluss können Sie anhand eines grünen Häkchens in der oberen Leiste überprüfen, ob garbd ausgeführt wird:
Das ist es!
Unser minimaler Galera-Cluster mit zwei Knoten ist jetzt fertig!