🗄️ MySQL / MariaDB Active-Active 高可用性:3 ノード Galera Cluster によるマルチマスター同期 + 自動フェイルオーバー完全ガイド
従来の MySQL Master/Slave レプリケーションは、フェイルオーバーの遅延やデータ不整合が発生しやすく、 高可用性が求められる現代のシステムには不十分です。 このガイドでは、真の Active-Active(マルチマスター)構成を実現する MariaDB Galera Cluster(3 ノード構成)を用いて、 リアルタイム同期・自動復旧・無停止運用を実現する方法を詳しく解説します。
📌 1. なぜ Galera Cluster を選ぶのか?(True Multi-Master)
Galera は同期式マルチマスター方式を実現する最も成熟したソリューションです。
- ✔ すべてのノードで読み書き可能(Active-Active)
- ✔ レプリケーション遅延ゼロ(同期書き込み)
- ✔ Quorum による split-brain 防止
- ✔ IST/SST による自動ノード復旧
- ✔ 高可用性を要求するエンタープライズに最適
推奨される 3 ノード構成:
node1: 192.168.1.10
node2: 192.168.1.11
node3: 192.168.1.12
📡 2. 3 ノード Galera Cluster アーキテクチャ
┌────────────────────────┐
│ HAProxy + VIP │
│ (読み書き負荷分散層) │
└──────────┬──────────────┘
│
┌──────────────┴──────────────┐
│ │
┌────────┴────────┐ ┌────────┴────────┐
│ MariaDB Node 1 │ │ MariaDB Node 2 │
│ 192.168.1.10 │ │ 192.168.1.11 │
└────────┬─────────┘ └────────┬────────┘
│ │
└──────────────┬──────────────┬────┘
│ │
┌──────┴──────┐
│ MariaDB Node 3 │
│ 192.168.1.12 │
└──────────────┘
🛠 3. MariaDB + Galera のインストール(全ノード共通)
sudo dnf install mariadb mariadb-server galera -y
sudo systemctl enable mariadb
⚙️ 4. Galera 設定(全ノード)
/etc/my.cnf.d/galera.cnf を編集:
[galera]
wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_name="galera_cluster"
wsrep_cluster_address="gcomm://192.168.1.10,192.168.1.11,192.168.1.12"
wsrep_node_address="192.168.1.X"
wsrep_node_name="nodeX"
binlog_format=ROW
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
各ノードで wsrep_node_address / wsrep_node_name を変更してください。
🚀 5. クラスタの起動手順(重要)
1️⃣ 最初のノードをブートストラップ
galera_new_cluster
2️⃣ 残りのノードを起動
sudo systemctl start mariadb
クラスタサイズを確認:
mysql -e "SHOW STATUS LIKE 'wsrep_cluster_size';"
期待される出力:
3
🔁 6. レプリケーション方式:SST / IST
- SST(State Snapshot Transfer):新規ノード・フル同期
- IST(Incremental State Transfer):短時間の切断後に高速復旧
🧩 7. Quorum と split-brain 回避
3 ノード → 正常稼働
2 ノード → 過半数維持で稼働可能
1 ノード → 自動停止(整合性保護)
⚖️ 8. HAProxy による負荷分散
インストール:
sudo dnf install haproxy -y
設定:
/etc/haproxy/haproxy.cfg
frontend mysql-in
bind *:3306
mode tcp
default_backend galera
backend galera
mode tcp
balance roundrobin
option mysql-check user haproxy
server node1 192.168.1.10:3306 check
server node2 192.168.1.11:3306 check
server node3 192.168.1.12:3306 check
🏷 9. Keepalived + VIP による自動フェイルオーバー
HAProxy 層を Active-Active で冗長化。
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 50
priority 120
virtual_ipaddress {
192.168.1.200
}
}
クライアントは常に VIP を使用:
mysql -h 192.168.1.200 -u user -p
📦 10. ノード故障と復旧
🟡 ノード障害 → 他ノードが即時処理を継続
🟢 ノード復旧 → IST により自動同期
🔴 整合性破損 → SST で再構築
📘 まとめ
3 ノード構成の MariaDB Galera Cluster は、真の Active-Active マルチマスター方式を提供し、以下を実現します:
- すべてのノードで読み書き可能
- 同期レプリケーションによる強整合性
- HAProxy + VIP による無停止フェイルオーバー
- IST/SST による自動復旧
エンタープライズ向けデータベース、API バックエンド、高トラフィックシステムに最適な構成です。
🔗 関連記事
- Linux Firewall 統合:firewalld / iptables / nftables
- OpenVPN + PKI クライアントルーティングガイド
- Linux NFS 完全デプロイガイド
- Linux LVM PV / VG / LV Resize ガイド
— WWFandy・データベース&システムノート
沒有留言: