Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> 電腦軟體教學 >> 伺服器技術 >> Web 伺服器

百萬級電商架構實戰:LVS + Keepalived 四層負載均衡器部署全紀錄(DR 模式)

編輯:Web 伺服器

架構定位

流量入口 → LVS (Linux Virtual Server) + Keepalived 四層負載均衡(DR 模式) → 後端 Web 叢集 → 共享存儲/資料庫層。核心目標:高效能、高可用、高擴展性、無單點故障。

關鍵技術選型對比

方案類型優點缺點
LVS + Keepalived軟體四層效能極高(內核態轉發)、成熟穩定、開源免費、支援 DR/NAT/TUN 三模式需內核模組、配置相對複雜、四層無法做七層路由
HAProxy軟體四/七層支援七層路由、ACL 豐富、健康檢查強單進程模型極高併發略遜 LVS DR
Heartbeat + ldirectord軟體四層HA 生態成熟組件較多、維護成本高
F5 / Cisco ACE / Citrix NetScaler硬體負載均衡效能強、功能全、商業支援成本極高、廠商鎖定

LVS 三種 IP 負載均衡模式

  • VS/NAT:位址轉換,請求回應皆經 Director,易成單點與頻寬瓶頸。
  • VS/TUN:IP 隧道封裝,Real Server 可跨公網,但需支援隧道、效能折損。
  • VS/DR (Direct Routing):本方案採用。Director 僅負責調度請求,Real Server 直接回應客戶端,Director 不經回應流量,效能最強、擴展性最好。

實驗環境規劃

角色IP說明
LVS Master192.168.9.201主調度器
LVS Backup192.168.9.202備用調度器
VIP192.168.9.200虛擬 IP,對外服務入口
Web1192.168.9.203Real Server 1
Web2192.168.9.204Real Server 2
Netmask255.255.255.0
Gateway192.168.9.1

核心部署步驟(CentOS 5.6 32 位,源碼編譯)

1. 系統時間同步

yum -y install ntp
ntpdate time.nist.gov
echo "0 1 * * * /usr/sbin/ntpdate time.nist.gov" >> /etc/crontab

2. 編譯安裝 ipvsadm

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 會失敗。

3. 編譯安裝 Keepalived

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

4. 部署 Keepalived 配置檔

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
        }
    }
}

5. Real Server 端配置(關鍵:VIP 綁定在 lo:0 並抑制 ARP)

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

6. 啟動與驗證

# 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 健康檢查自動剔除 → 恢復後自動加入

生產環境關鍵提醒

  • 64 位系統編譯風險:內核頭文件路徑差異導致編譯失敗,建議使用發行版套件管理器 yum install ipvsadm keepalived 避免版本不匹配。
  • 網路設備 VRRP 封包:智能交換機/防火牆可能攔截 VRRP 多播封包(224.0.0.18),需允許 VRRP 通訊或改用單播模式。
  • 健康檢查策略:生產環境建議七層檢查(HTTP GET /healthz 期望 200),而非僅 TCP 連線。
  • 持久化連接:電商購物車等有狀態服務需 persistence_timeout 或應用層 Session 共享(Redis)。
  • 監控告警:接入 Zabbix/Prometheus 監控 ipvsadm -Ln 連線數、Keepalived 狀態變更、Real Server 存活數。

總結

LVS DR 模式 + Keepalived VRRP 高可用,構建了電商百萬級流量入口的堅實基石。後端 Web 叢集、快取層、資料庫叢集、共享存儲同樣關鍵,需整體架構協同演進。

Copyright © Windows教程網 All Rights Reserved