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

🌐 Linux Apache 高可用性:Active-Active 二重ノード構成の完全デプロイガイド

    🌐 Linux Apache 高可用性:Active-Active 二重ノード構成の完全デプロイガイド

    単一の Apache サーバーは、障害点(SPOF)や性能の限界が発生しやすいという課題があります。 本記事では、2 台の Apache が同時に稼働する Active-Active 高可用性構成を Linux 上で構築する方法を、 負荷分散、ヘルスチェック、仮想 IP(VIP)、フェイルオーバー、コンテンツ同期まで含めて詳細に解説します。

    📌 1. Active-Active とは?

    Active-Active は複数ノードが同時にリクエストを処理する構成を指し、以下の利点があります:

    • ⚡ パフォーマンス向上(負荷を分散)
    • 🛡️ 高可用性(片方がダウンしてもサービス継続)
    • 📈 スケーラビリティ(水平スケールが容易)
    
    構成要素:
    1. Apache — Web サーバーノード
    2. HAProxy / Nginx — 負荷分散
    3. Keepalived — VRRP + 仮想 IP + フェイルオーバー
    4. rsync / Unison / GlusterFS — Web コンテンツ同期
      

    📡 2. 全体アーキテクチャ

    
            +----------------------------+
            |    VIP 192.168.1.200       |
            |      (Keepalived)          |
            +-------------+--------------+
                          |
                  +-------+--------+
                  |  Load Balancer |
                  | (HAProxy/Nginx)|
                  +-------+--------+
                          |
         +----------------+----------------+
         |                                 |
    +----+-----------+          +----------+----+
    | Apache Node A  |          | Apache Node B |
    | 192.168.1.10   |          | 192.168.1.11  |
    +----------------+          +----------------+
      

    🛠 3. Apache のインストール(両ノード)

    # Rocky Linux / CentOS
    sudo dnf install httpd -y
    
    # Ubuntu / Debian
    sudo apt install apache2 -y
    
    sudo systemctl enable --now httpd
      

    テスト用のページを作成(後でロードバランサーの動作確認に使用):

    
    echo "Node A Web" | sudo tee /var/www/html/index.html
    echo "Node B Web" | sudo tee /var/www/html/index.html
      

    🔁 4. Web コンテンツ同期方法

    方法 A:rsync(簡潔・片方向)

    
    */1 * * * * rsync -az /var/www/html/ root@192.168.1.11:/var/www/html/
      

    方法 B:Unison(推奨・双方向)

    複数人で更新する環境に最適。

    方法 C:GlusterFS(エンタープライズ向け)

    リアルタイムでレプリケーションされるストレージ。


    ⚖️ 5. HAProxy / Nginx による負荷分散

    方法 A:HAProxy(最も推奨)

    sudo dnf install haproxy -y
    /etc/haproxy/haproxy.cfg
    
    frontend http-in
        bind *:80
        default_backend apache-backend
    
    backend apache-backend
        balance roundrobin
        mode http
        option httpchk
        server web1 192.168.1.10:80 check
        server web2 192.168.1.11:80 check
      

    方法 B:Nginx を LB として使用

    
    upstream apache_cluster {
        server 192.168.1.10;
        server 192.168.1.11;
    }
    
    server {
        listen 80;
        location / {
            proxy_pass http://apache_cluster;
        }
    }
      

    🏷 6. Keepalived + VIP フェイルオーバー

    Keepalived は VRRP を用いて仮想 IP を提供し、 負荷分散層(LB)の冗長化を行うための必須コンポーネントです。

    インストール

    
    sudo dnf install keepalived -y
      

    LB1(MASTER)設定

    /etc/keepalived/keepalived.conf
    
    vrrp_instance VI_1 {
        state MASTER
        interface ens33
        virtual_router_id 51
        priority 120
        advert_int 1
    
        authentication {
            auth_type PASS
            auth_pass 123456
        }
    
        virtual_ipaddress {
            192.168.1.200
        }
    }
      

    LB2(BACKUP)

    
    state BACKUP
    priority 100
      

    起動

    
    sudo systemctl enable --now keepalived
      

    🧪 7. Active-Active 動作確認

    
    while true; do curl -s http://192.168.1.200 | grep Node; sleep 1; done
      

    以下のように交互に表示されれば成功:

    
    Node A Web
    Node B Web
    Node A Web
    Node B Web
      

    📦 8. 障害テスト(必須)

    
    sudo systemctl stop httpd  # Node A を停止
    curl http://192.168.1.200
      

    結果:サービスは途切れず、Node B の応答が継続。

    📘 まとめ

    HAProxy、Apache、Keepalived による Active-Active 構成は、 高可用性、負荷分散、拡張性を同時に実現できる強力なアーキテクチャです。 API、企業 Web サイト、高トラフィック環境に最適で、必要に応じて Kubernetes や CephFS、 Redis セッション共有などの上位ソリューションへ発展させることも可能です。


    🔗 関連記事

    — WWFandy・システム&ネットワークノート

    🔗 分享這篇 LINE Facebook X

    沒有留言:

    字級