サウス IDC
PRACTICAL FIELD SOP · TUTORIAL

KeepalivedとHAProxyによるレイヤ4 / 7冗長化クラスタ構築――VRRPスプリットブレイン防止と高信頼ヘルスチェック実務

2026-11-05 | サウス IDC インフラ運用チーム
要旨:Webサービス、DNSキャッシュ基盤、APIゲートウェイなど、クリティカルな公開フロントエンドにおいて単一障害点(SPOF)を排除するためには、HAProxyによる負荷分散とKeepalived(VRRP)によるVIP(仮想IP)フェイルオーバーの組み合わせが定番かつ最も堅牢な構成である。本稿では、商用運用で頻発するVRRPスプリットブレイン障害の防止策、HAProxyプロセス監視スクリプトの実装、非同期ヘルスチェックのチューニング手順をまとめる。

1. レイヤ4/7高可用性クラスタのシステム構成図

2台のLinuxロードバランサー(Primary / Backup)を用意し、VIP(Virtual IP: 仮想IPアドレス)をKeepalivedのVRRPプロトコルによって共有する。クライアントからのインバウンド通信は常にVIP宛に届き、Primaryノード上のHAProxyがバックエンドのWeb/アプリサーバ群へトラフィックをインテリジェントに負荷分散する。Primaryノードのハードウェア障害やHAProxyプロセスのダウン時には、サブ秒単位でBackupノードへVIPが自動移行する。

2. Keepalived設定とHAProxyヘルスチェックスクリプト

単なるpingによる死活監視ではなく、HAProxyプロセスが正常に応答しているかを監視するチェックスクリプト(track_script)を構成する。HAProxyが異常停止した場合は即座に優先度(priority)を引き下げ、健全なBackupノードへVIPをフェイルオーバーさせる。

# /etc/keepalived/keepalived.conf (Primaryノード)
vrrp_script chk_haproxy {
    script "/usr/bin/killall -0 haproxy"
    interval 2
    weight -20
    fall 2
    rise 2
}

vrrp_instance VI_STATIC {
    state MASTER
    interface bond0
    virtual_router_id 51
    priority 101
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass Secr3tP@ssw0rd!
    }
    virtual_ipaddress {
        192.0.2.10/24 dev bond0
    }
    track_script {
        chk_haproxy
    }
}

3. スプリットブレイン(Dual Master)防止の運用鉄則

ネットワーク瞬断やスイッチ間トランクの障害により、PrimaryとBackupの両者が互いのVRRPアドバタイズメントを見失い、双方で同一VIPが重複起動してしまう「スプリットブレイン障害」は、パケット消失やセッション切断を招く最悪の事態である。これを確実に防ぐため、以下の3重防壁を導入する。

← 実践チュートリアル一覧に戻る