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

🌐 Linux Apache 高可用架構:雙節點 Active-Active 完整部署指南

    🌐 Linux Apache 高可用架構:雙節點 Active-Active 完整部署指南

    在企業級 Web 架構中,單一 Apache 伺服器很容易成為效能瓶頸與單點故障(SPOF)。 本指南教你打造 兩台 Apache 同時提供服務的 Active-Active HA 架構,包含負載平衡、健康檢查、Session 同步與故障切換流程,一次帶你完成生產等級部署。

    📌 一、架構概覽(Active-Active 是什麼?)

    Active-Active 指兩台以上主機「同時提供服務」,請求平均分散至多個節點,以提升:

    • ⚡ 效能(負載分散)
    • 🛡️ 高可用(任一節點故障仍不中斷)
    • 📈 可擴充性(水平擴展 Web 節點)
    
    使用到的元件:
    1. Apache(Web Server)
    2. HAProxy / Nginx(負載平衡器)
    3. Keepalived(VIP + 健康檢查/Failover)
    4. rsync / unison / GlusterFS(網站資料同步選項)
      

    📡 二、架構拓撲圖

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

    🛠 三、安裝 Apache(兩台都要)

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

    確認能從兩台看到不同頁面(方便後續驗證負載平衡):

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

    🔁 四、網站資料同步(3 種方式)

    選項 A:rsync 排程同步(簡單、安全)

    
    # Node A → Node B
    */1 * * * * rsync -az /var/www/html/ root@192.168.1.11:/var/www/html/
      

    選項 B:Unison 雙向同步(推薦)

    適合雙向修改的情境,例如多人開發。

    選項 C:GlusterFS(企業級)

    兩節點組成 replicated volume,實現即時同步。


    ⚖️ 五、部署負載平衡(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
      
    sudo systemctl enable --now haproxy

    選項 B:Nginx 當 Load Balancer

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

    🏷 六、Keepalived + VIP(真正做到不中斷)

    讓 LB 形成 Active-Standby 或 Active-Active(雙 VIP)。此處示範常用 Active-Standby 以避免 ARP 混亂。

    安裝:

    sudo dnf install keepalived -y

    設定主節點(LB1):

    /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):

    
    state BACKUP
    priority 100
      

    啟動:

    sudo systemctl enable --now keepalived

    🧪 七、驗證 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
      

    📦 八、故障測試(必做)

    # 關掉 Node A Apache
    sudo systemctl stop httpd
    
    # 觀察是否仍正常服務
    curl http://192.168.1.200
      

    應只看到 Node B,但不會中斷。

    📘 結語

    透過 HAProxy + Keepalived + Apache,你已完成企業級 Active-Active 高可用架構。 此架構具備負載均衡、故障切換、資料同步,可應用於中大型網站、API、後端服務等場景。 若需更大型架構,可再引入 Kubernetes、CephFS、Redis Session Cluster 等擴充方案。


    🔗 延伸閱讀

    — WWFandy・系統與網路筆記

    🔗 分享這篇 LINE Facebook X

    沒有留言:

    字級