🌐 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 等擴充方案。
🔗 延伸閱讀
- Linux 防火牆整合:firewalld / iptables / nftables
- OpenVPN + PKI 企業用戶端路由完整教學
- Linux 監控工具:top、htop、glances、nmon、dstat 完整指南
- Linux NFS 企業部署完整指南
— WWFandy・系統與網路筆記
沒有留言: