LVS+Keepalived 高可用负载均衡集群实战指南
·
LVS+Keepalived 高可用负载均衡集群实战指南
前言
随着互联网业务规模扩大,单点服务器已无法满足高并发访问需求。本文详解基于Linux Virtual Server(LVS)和Keepalived搭建的高可用负载均衡架构,通过VIP漂移、健康检查和流量调度实现服务7×24小时不间断运行。
一、什么是LVS(Linux Virtual Server)
LVS是章文嵩博士开发的开源四层负载均衡解决方案,作为Linux内核模块实现高性能流量转发,核心组成:
- IP虚拟服务器模块(IPVS):基于Netfilter框架实现流量调度
- 管理工具ipvsadm:用于配置虚拟服务器规则
- 集群节点调度器/RealServer:处理实际业务请求的服务器
官方定位:“A highly scalable and available server built on a cluster of real servers”
二、LVS的工作原理与调度算法
2.1 核心工作机制
采用OSI四层模型进行流量转发:
客户端 -> 调度器(VIP) -> RealServer -> 返回路径直接回源(非对称路由)
关键特性:
- 支持百万级并发连接
- CPU/内存消耗极低(<5%)
- 支持TCP/UDP协议
2.2 工作模式对比
| 模式 | 数据包修改 | 回程路径 | 性能损耗 | 场景 |
|---|---|---|---|---|
| DR | MAC地址 | 直接返回 | ≈0% | 高性能需求场景 |
| NAT | IP地址 | 经调度器 | 10-30% | 内部网络测试 |
| TUN | 封装隧道 | 直接返回 | 5-15% | 跨地域部署 |
2.3 调度算法选择
| 算法 | 特点 | 适用场景 |
|---|---|---|
rr (Round Robin) | 轮询分发 | 均匀分布 |
wrr (Weighted RR) | 加权轮询 | 异构服务器集群 |
lc (Least Connection) | 最少连接优先 | 动态负载变化场景 |
sh (Source Hashing) | 源IP哈希 | 会话保持需求 |
三、什么是Keepalived
Keepalived是专为LVS设计的高可用性解决方案,通过VRRP协议实现:
- VIP自动漂移
- 节点健康检测
- 配置同步管理
核心功能矩阵:

四、Keepalived工作原理深度解析
4.1 VRRP状态机

状态转换条件:
- MASTER定期发送VRRP通告包
- BACKUP连续3个周期未收到通告触发接管
- 优先级数值决定选举结果(默认抢占模式)
4.2 健康检查机制
多维度检测体系:
TCP连接检查 → 应用层HTTP检测 → 自定义脚本检查
典型检测参数:
connect_timeout 3 # 连接超时时间
nb_get_retry 3 # 重试次数
delay_before_retry 1 # 重试间隔
##五、生产环境详细配置过程
###5.1 网络规划
+-------------------+
| Client Browser |
+-------------------+
||
VIP:192.168.3.1
+----------------------------+
| Keepalived Master (调度器)|
| IP:192.168.3.2 |
+----------------------------+
+----------------------------+
| Keepalived Backup (调度器)|
| IP:192.168.3.3 |
+----------------------------+
/ \
/ \
+--------------------+ +--------------------+
| Web Server 1 | | Web Server 2 |
| IP:192.168.3.4 | | IP:192.168.3.5 |
+--------------------+ +--------------------+
5.2 调度器基础配置
内核参数优化
cat >> /etc/sysctl.conf << EOF
net.ipv4.ip_forward = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.$(ls /sys/class/net | grep ens).send_redirects = 0
EOF
sysctl -p
5.3 Keepalived主配置文件
Master节点 /etc/keepalived/keepalived.conf:
global_defs {
router_id LVS_MASTER
}
vrrp_instance VI_1 {
state MASTER
interface ens192
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass lvs123
}
virtual_ipaddress {
192.168.3.1/24 dev ens192 label ens192:0
}
}
virtual_server 192.168.3.1 80 {
delay_loop 6
lb_algo rr
lb_kind DR
protocol TCP
real_server 192.168.3.4 80 {
weight 1
TCP_CHECK {
connect_timeout 3
retry 3
delay_before_retry 1
}
}
real_server 192.168.3.5 80 {
weight 1
TCP_CHECK {
connect_timeout 3
retry 3
delay_before_retry 1
}
}
}
Backup节点配置差异:
- state MASTER
- priority 100
+ state BACKUP
+ priority 90
5.4 RealServer配置
# 环回口配置
cat > /etc/sysconfig/network-scripts/ifcfg-lo:0 << EOF
DEVICE=lo:0
IPADDR=192.168.3.1
NETMASK=255.255.255.255
ONBOOT=yes
NAME=loopback-vip
EOF
ifup lo:0
route add -host 192.168.3.1 dev lo:0
# ARP参数优化
cat >> /etc/sysctl.conf << EOF
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2
EOF
sysctl -p
5.5 IPVS规则持久化
modprobe ip_vs
ipvsadm -C
ipvsadm -A -t 192.168.3.1:80 -s rr
ipvsadm -a -t 192.168.3.1:80 -r 192.168.3.4 -g -w 1
ipvsadm -a -t 192.168.3.1:80 -r 192.168.3.5 -g -w 1
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl enable ipvsadm
5.6 服务启动与验证
systemctl start keepalived
systemctl enable keepalived
#查看VIP绑定
ip addr show ens192
#查看转发规则
ipvsadm -ln
#测试访问
curl -I http://192.168.3.1
六、总结与运维建议
6.1 架构优势
✅ 单VIP可承载10万+并发
✅ 故障切换<1秒(VRRP心跳间隔1s)
✅ 无单点故障(双活架构)
6.2 生产运维要点
1.健康检查优化
- HTTP检测建议添加URL路径(如
/health.html) - 复杂业务建议编写自定义检测脚本
- 日志监控
tail -f /var/log/messages # 观察VRRP状态变化
- 防脑裂措施
- 使用双网卡交叉线直连
- 配置仲裁机制(如共享存储锁文件)
- 性能调优
# 开启IPVS连接跟踪
echo 1 > /proc/sys/net/ipv4/vs/conntrack
- 灾备方案
# 配置异地容灾keepalived实例
vrrp_instance DR_2 {
unicast_peer 10.0.0.100 # 跨数据中心通信
...
}
“📌 最佳实践 :结合Prometheus+Grafana实现可视化监控,配合Alertmanager设置VIP漂移告警,构建完整的LVS集群管理体系。 "
更多推荐


所有评论(0)