# LINUX中Keepalive+LVS主從DR負載均衡實現詳解
## 一、前言
在現代互聯網架構中,高可用性和負載均衡是保證服務穩定性的關鍵技術。Linux Virtual Server(LVS)配合Keepalived實現的主從DR(Direct Routing)模式,是構建高性能、高可用服務集群的經典方案。本文將深入探討該技術的實現原理和詳細配置步驟。
## 二、核心組件介紹
### 2.1 LVS基礎架構
LVS是由章文嵩博士開發的Linux內核級負載均衡解決方案,包含三個核心組件:
1. **負載調度器(Load Balancer)**:運行ipvs內核模塊的前端服務器
2. **真實服務器(Real Server)**:實際提供服務的后端節點
3. **共享存儲**:為集群提供一致的數據服務
### 2.2 DR模式工作原理
DR(直接路由)模式的特點:
- 請求流量通過調度器轉發
- 響應數據直接從Real Server返回客戶端
- 需要配置VIP(Virtual IP)的ARP抑制
數據流向示意圖:
```mermaid
sequenceDiagram
Client->>Director: 請求包(VIP)
Director->>RealServer: 轉發請求(目標MAC修改)
RealServer-->>Client: 直接響應(VIP)
Keepalived主要提供兩大功能: 1. 健康檢查:實時監控Real Server狀態 2. VRRP協議實現:主備節點自動切換
角色 | IP配置 | 主機名 |
---|---|---|
主調度器 | DIP:192.168.1.10 | lvs-master |
從調度器 | DIP:192.168.1.11 | lvs-backup |
Real Server 1 | RIP:192.168.1.20 | web-node1 |
Real Server 2 | RIP:192.168.1.21 | web-node2 |
VIP | 192.168.1.100 | - |
systemctl stop firewalld
setenforce 0
安裝必要軟件包
yum install -y keepalived ipvsadm
內核參數調整
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
Keepalived主配置文件(/etc/keepalived/keepalived.conf) “`conf global_defs { router_id LVS_DEVEL }
vrrp_instance VI_1 { state MASTER # 備機改為BACKUP interface eth0 virtual_router_id 51 priority 100 # 備機設置較低優先級 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.1.100⁄24 dev eth0 } }
virtual_server 192.168.1.100 80 { delay_loop 6 lb_algo wrr # 加權輪詢算法 lb_kind DR # DR模式 persistence_timeout 50 protocol TCP
real_server 192.168.1.20 80 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.1.21 80 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
### 4.2 Real Server配置
1. 配置VIP和ARP抑制
```bash
# 創建VIP配置腳本
cat > /etc/init.d/lvs-dr <<EOF
#!/bin/bash
VIP=192.168.1.100
case "\$1" in
start)
echo "Start LVS of DR Mode"
/sbin/ifconfig lo:0 \$VIP broadcast \$VIP netmask 255.255.255.255 up
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
;;
stop)
/sbin/ifconfig lo:0 down
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 "Usage: \$0 {start|stop}"
exit 1
esac
EOF
chmod +x /etc/init.d/lvs-dr
service lvs-dr start
yum install -y nginx
echo "Welcome to $(hostname)" > /usr/share/nginx/html/index.html
systemctl start nginx
檢查VIP綁定
# 在主調度器執行
ip addr show eth0
查看LVS規則
ipvsadm -Ln
測試負載均衡
for i in {1..10}; do curl 192.168.1.100; done
模擬主調度器故障
# 在主調度器執行
systemctl stop keepalived
觀察VIP漂移
# 在備機查看VIP綁定
ip addr show eth0
real_server 192.168.1.20 80 {
weight 1
HTTP_GET {
url {
path /health
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 2
}
}
virtual_server 192.168.1.100 80 {
persistence_timeout 3600 # 會話保持1小時
persistence_granularity 255.255.255.0
}
VIP無法訪問
主備切換異常
負載不均衡
# 查看實時連接
ipvsadm -lcn
# 檢查VRRP狀態
journalctl -u keepalived -f
# 網絡連通性測試
tcpdump -i eth0 vrrp
通過本文的詳細配置指南,我們實現了基于Keepalived+LVS的DR模式負載均衡集群。該方案具有以下優勢:
實際生產環境中,建議結合監控系統(如Prometheus)對集群狀態進行實時監控,并定期進行故障演練,確保系統可靠性。
”`
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。