熱門分類
載入中…
目錄0%

🗄️ MySQL / MariaDB Active-Active 高可用性:3 ノード Galera Cluster によるマルチマスター同期 + 自動フェイルオーバー完全ガイド

    🗄️ 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 バックエンド、高トラフィックシステムに最適な構成です。


    🔗 関連記事

    — WWFandy・データベース&システムノート

    🔗 分享這篇 LINE Facebook X

    沒有留言:

    字級