流量入口 → LVS (Linux Virtual Server) + Keepalived 四層負載均衡(DR 模式) → 後端 Web 叢集 → 共享存儲/資料庫層。核心目標:高效能、高可用、高擴展性、無單點故障。
| 方案 | 類型 | 優點 | 缺點 |
|---|---|---|---|
| LVS + Keepalived | 軟體四層 | 效能極高(內核態轉發)、成熟穩定、開源免費、支援 DR/NAT/TUN 三模式 | 需內核模組、配置相對複雜、四層無法做七層路由 |
| HAProxy | 軟體四/七層 | 支援七層路由、ACL 豐富、健康檢查強 | 單進程模型極高併發略遜 LVS DR |
| Heartbeat + ldirectord | 軟體四層 | HA 生態成熟 | 組件較多、維護成本高 |
| F5 / Cisco ACE / Citrix NetScaler | 硬體負載均衡 | 效能強、功能全、商業支援 | 成本極高、廠商鎖定 |
| 角色 | IP | 說明 |
|---|---|---|
| LVS Master | 192.168.9.201 | 主調度器 |
| LVS Backup | 192.168.9.202 | 備用調度器 |
| VIP | 192.168.9.200 | 虛擬 IP,對外服務入口 |
| Web1 | 192.168.9.203 | Real Server 1 |
| Web2 | 192.168.9.204 | Real Server 2 |
| Netmask | 255.255.255.0 | |
| Gateway | 192.168.9.1 |
yum -y install ntp ntpdate time.nist.gov echo "0 1 * * * /usr/sbin/ntpdate time.nist.gov" >> /etc/crontab
cd /usr/local/src wget https://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz ln -sv /usr/src/kernels/2.6.18-194.el5-i686/ /usr/src/linux tar -zxvf ipvsadm-1.24.tar.gz cd ipvsadm-1.24 make && make install ipvsadm -v # 驗證版本
關鍵:內核源碼目錄必須鏈接至 /usr/src/linux,否則 ./configure 會失敗。
wget https://www.keepalived.org/software/keepalived-1.1.17.tar.gz tar -zxvf keepalived-1.1.17.tar.gz cd keepalived-1.1.17 yum -y install openssl-devel # 解決 configure 錯誤 ./configure make && make install
cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/ cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/ mkdir -p /etc/keepalived cp /usr/local/sbin/keepalived /usr/sbin/ vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email { admin@example.com }
notification_email_from admin@example.com
smtp_server smtp.example.com
router_id LVS_MASTER
}
vrrp_instance VI_1 {
state MASTER # Backup 改為 BACKUP
interface eth0
virtual_router_id 51
priority 100 # Backup 改為 90
advert_int 5
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.9.200
}
}
virtual_server 192.168.9.200 80 {
delay_loop 6
lb_algo wlc
lb_kind DR
persistence_timeout 60
protocol TCP
real_server 192.168.9.203 80 {
weight 100
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 192.168.9.204 80 {
weight 100
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
vi /root/lvs_real.sh
#!/bin/bash
VIP=192.168.9.200
case "$1" in
start)
/sbin/ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
/sbin/route add -host $VIP dev lo:0
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p >/dev/null 2>&1
echo "RealServer Start OK"
;;
stop)
/sbin/ifconfig lo:0 down
/sbin/route del $VIP >/dev/null 2>&1
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
echo "RealServer Stoped"
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
exit 0
chmod +x /root/lvs_real.sh /root/lvs_real.sh start echo "/root/lvs_real.sh start" >> /etc/rc.local
# Master 啟動 service keepalived start # Backup 啟動 service keepalived start # 驗證 VIP 掛載 ip addr show eth0 # 查看 LVS 規則 ipvsadm -Ln # 測試:解析域名指向 VIP,瀏覽器訪問 # 模擬 Master 故障:service keepalived stop → Backup 秒級漂移 VIP 接管 # 模擬 Real Server 故障:關閉 Web1 → Keepalived 健康檢查自動剔除 → 恢復後自動加入
yum install ipvsadm keepalived 避免版本不匹配。persistence_timeout 或應用層 Session 共享(Redis)。ipvsadm -Ln 連線數、Keepalived 狀態變更、Real Server 存活數。LVS DR 模式 + Keepalived VRRP 高可用,構建了電商百萬級流量入口的堅實基石。後端 Web 叢集、快取層、資料庫叢集、共享存儲同樣關鍵,需整體架構協同演進。