MariaDB Galera Cluster Setup (3 Server)
Dieses Setup ist für den Betrieb auf drei separaten Servern optimiert.
Server-Struktur
- Server 1: 10.233.1.101 (Bootstrap-Knoten)
- Server 2: 10.233.1.102 (Cluster-Knoten)
- Server 3: 10.233.1.103 (Cluster-Knoten)
Vorbereitung
- Stelle sicher, dass auf allen Servern Docker installiert ist.
- Die Firewall muss folgende Ports zwischen den Servern erlauben:
3306(MySQL/MariaDB)4567(Galera Cluster Kommunikation)4568(Incremental State Transfer - IST)4444(State Snapshot Transfer - SST)
Installations-Ablauf
Kopiere das docker/ Verzeichnis auf alle drei Server.
1. Auf Server 1 (10.233.1.101)
Initialisiere den Cluster (Bootstrap). Dieser Knoten wird der erste Master.
bash docker/scripts/init_cluster_n1.sh
2. Auf Server 2 (10.233.1.102)
Tritt dem bestehenden Cluster bei.
bash docker/scripts/init_cluster_n2.sh
3. Auf Server 3 (10.233.1.103)
Tritt dem bestehenden Cluster bei.
bash docker/scripts/init_cluster_n3.sh
Status prüfen
Nachdem alle Knoten gestartet sind, kannst du den Status mit dem bereitgestellten Skript prüfen:
bash docker/scripts/check_nodes.sh
Die Ausgabe sollte wsrep_cluster_size | 3 anzeigen.
Web-Dashboard (Optional)
Du kannst einen kleinen Webserver starten, der den Status des Clusters grafisch im Browser anzeigt:
- Starte den Webserver:
bash docker/scripts/init_webserver.sh - Öffne im Browser:
http://[SERVER-IP]:8080
Wichtige Hinweise
Network Mode Host
Die Container nutzen network_mode: host. Das sorgt für maximale Performance, da kein Docker-Netzwerk-Overhead entsteht. MariaDB ist direkt über die IP des Host-Servers erreichbar.
Neustart des Clusters
Falls der gesamte Cluster gestoppt wurde, muss der erste Knoten immer wieder mit dem init_cluster_n1.sh Skript (Bootstrap) gestartet werden, um den Cluster neu zu initialisieren.
Fehlerbehebung (Recovery)
Falls der Cluster nach einem harten Neustart im "Restart-Loop" hängt, nutze auf Server 1 das Recovery-Skript:
bash docker/scripts/recover_cluster.sh
Dieses Skript forciert den Bootstrap von Node 1. Sobald dieser fertig ist, kannst du Node 2 und 3 normal starten.
Verzeichnisstruktur
Die Skripte erwarten, dass die Verzeichnisstruktur (docker/scripts/ und docker/mariadb/n*/) erhalten bleibt, da sie intern mit relativen Pfaden arbeiten.