叢集系統旨在解決三大核心需求:高可用性(HA)、高性能計算(HPC)與負載均衡。高可用性透過叢集管理軟體,在主伺服器故障時自動切換至備機,確保服務不中斷;高性能計算則利用多節點並行處理複雜運算,廣泛應用於基因分析、化學模擬等科學領域;負載均衡依據演算法將流量分散至各節點,降低單點壓力與硬體門檻。Linux 平台上的叢集方案百花齊放,其中以 LVS(Linux Virtual Server)實現 Web 服務負載均衡最為常見且成熟。
LVS 由章文嵩博士發起,是眾多商業叢集產品(如 Red Hat Piranha、TurboCluster)的核心基礎。其廣泛部署案例可參考官網部署頁面。LVS 提供三種負載均衡模式:NAT、DR(Direct Routing)、IP Tunneling。生產環境最推薦 DR 模式,效能最優。本文以四台同網段機器透過交換機互聯為測試環境,實際部署建議將虛擬伺服器與真實伺服器置於不同網段,兼顧效能與安全。
測試環境採用三台同規格伺服器(LVS 支援異構硬體,可依負載動態調整權重):
VIP 192.168.0.101 為對外服務入口。
/usr/src/linuxipvs-1.0.6-2.2.19.tar.gz 並解壓至同目錄patch -p1 < ipvs-1.0.6-2.2.19/ipvs-1.0.6-2.2.19.patchCode maturity: [*] Prompt for development/incomplete code/drivers
Networking: [*] Kernel/User netlink socket, [*] Routing messages, [*] Netlink device emulation
[*] Network firewalls, [*] Socket Filtering, [*] Unix domain sockets, [*] TCP/IP networking
[*] IP: multicasting, [*] IP: advanced router, [*] IP: firewalling
[*] IP: transparent proxy support, [*] IP: masquerading, [*] IP: ICMP masquerading
[*] IP: masquerading special modules support, [*] IP: masquerading virtual server support (EXPERIMENTAL)
[*] IP Virtual Server debugging, (12) IP masquerading VS table size
[*] IPVS: round-robin, weighted round-robin, least-connection, weighted least-connection
[*] IPVS: locality-based least-connection, locality-based with replication
[*] IP: optimize as router not host, [*] IP: aliasing support, [*] IP: TCP syncookie support
/usr/src/linux/net/ 下是否存在 ipvs* 文件判斷。編寫 /etc/lvs/lvs_dr.conf:
LVS_TYPE=VS_DR
INITIAL_STATE=on
VIP=eth0:101 192.168.0.101 255.255.255.0 192.168.0.0
DIRECTOR_INSIDEIP=eth0 192.168.0.1 192.168.0.0 255.255.255.0 192.168.0.255
SERVICE=t telnet rr rs1:telnet rs2:telnet
SERVICE=t www rr rs1:www rs2:www
SERVER_VIP_DEVICE=dummy0
SERVER_NET_DEVICE=eth0
使用 configure 腳本生成 rc.lvs_dr,修改 /etc/rc.d/init.d/rc.local 加入:
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/ip_always_defrag
echo 10 > /proc/sys/net/ipv4/vs/debug_level
配置 NFS 共享 /etc/lvs 目錄供真實伺服器掛載,並調整 /etc/syslogd.conf 記錄核心除錯資訊至 /var/log/kernel_log。
httpd.conf 監聽 VIP:Listen 192.168.0.101:80rc.local 加入:
echo 1 > /proc/sys/net/ipv4/conf/all/hidden
ifconfig dummy0 up
ifconfig dummy0 192.168.0.101 netmask 255.255.255.0 broadcast 192.168.0.0 up
echo 1 > /proc/sys/net/ipv4/conf/dummy0/hidden
echo 1 > /proc/sys/net/ipv4/ip_forward
/etc/lvs/rc.lvs_dr,確認 Apache 與 telnet 已啟動telnet 192.168.0.101,連續登入應輪流顯示 [guest@rs1] 與 [guest@rs2]ipvsadm 驗證連接分發狀態,應顯示兩台真實伺服器均有連接計數test.html,瀏覽器刷新 https://192.168.0.101/test.html 應交替顯示;或使用 lynx -dump 迴圈測試避免瀏覽器快取干擾透過上述步驟,即可建立一套高效、可擴展的 LVS-DR 負載均衡叢集,為 Web 服務提供企業級高可用保障。