57 lines
2.0 KiB
Markdown
57 lines
2.0 KiB
Markdown
# 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
|
|
1. Stelle sicher, dass auf allen Servern **Docker** installiert ist.
|
|
2. 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
|
|
bash docker/scripts/init_cluster_n1.sh
|
|
```
|
|
|
|
### 2. Auf Server 2 (10.233.1.102)
|
|
Tritt dem bestehenden Cluster bei.
|
|
```bash
|
|
bash docker/scripts/init_cluster_n2.sh
|
|
```
|
|
|
|
### 3. Auf Server 3 (10.233.1.103)
|
|
Tritt dem bestehenden Cluster bei.
|
|
```bash
|
|
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
|
|
bash docker/scripts/check_nodes.sh
|
|
```
|
|
Die Ausgabe sollte **`wsrep_cluster_size | 3`** anzeigen.
|
|
|
|
## 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. Die anderen Knoten können danach normal mit ihren jeweiligen Skripten beitreten.
|
|
|
|
### Verzeichnisstruktur
|
|
Die Skripte erwarten, dass die Verzeichnisstruktur (`docker/scripts/` und `docker/mariadb/n*/`) erhalten bleibt, da sie intern mit relativen Pfaden arbeiten.
|