LVS+Keepalived高可用集群搭建
一、核心原理与技术理论
LVS架构解析:
-
DR模式工作流程:
-
客户端请求发送到VIP
-
Director通过IPVS进行流量分发
-
真实服务器直接响应客户端(不经过Director)
-
ARP抑制确保真实服务器不暴露MAC地址
-
-
关键组件协作:
Keepalived高可用机制:
-
VRRP协议实现主备心跳检测(默认端口112)
-
优先级机制(priority值决定主备角色)
-
毫秒级故障转移(VIP漂移+IPVS服务接管)
二、背景需求与实现目标
行业痛点:
-
单点故障导致服务中断
-
硬件负载均衡设备成本高昂
-
突发流量冲击单机性能瓶颈
解决方案优势:
-
零成本:开源软件构建企业级高可用
-
高性能:DR模式吞吐量可达10Gbps+
-
无缝切换:故障转移用户无感知
-
灵活扩展:支持动态添加后端服务器
三、详细部署步骤
1. 环境准备
角色 | 要求 |
---|---|
Director节点 | 2台(主备配置相同) |
Real Server | ≥2台(部署相同服务) |
VIP | 与物理IP同网段 |
2. Director节点配置
-
安装必要软件:
yum install keepalived ipvsadm -y
-
配置Keepalived:
-
编辑配置文件:
vi /etc/keepalived/keepalived.conf
-
主节点配置:
vrrp_instance VI_1 {state MASTERinterface ens33virtual_router_id 51priority 150advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.1.100 # VIP地址} }
备份节点配置(差异部分):
state BACKUP priority 100
-
-
配置LVS服务:
virtual_server 192.168.1.100 80 {delay_loop 3lb_algo rrlb_kind DRprotocol TCPreal_server 192.168.1.20 80 {weight 1TCP_CHECK {connect_timeout 3nb_get_retry 3}}real_server 192.168.1.21 80 {weight 1TCP_CHECK {connect_timeout 3nb_get_retry 3}} }
-
启动服务:
systemctl start keepalived systemctl enable keepalived
3. 真实服务器配置
- 配置ARP抑制:
-
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
-
- 绑定VIP到本地回环:
-
ifconfig lo:0 192.168.1.100 netmask 255.255.255.255 up
-
- 添加路由记录:
-
route add -host 192.168.1.100 dev lo:0
-
四、典型问题排查指南
问题1:VIP无法访问
排查步骤:
-
检查VIP绑定状态:
-
ip addr show ens33
-
-
验证防火墙设置:
-
firewall-cmd --list-ports
-
-
检查真实服务器ARP抑制:
-
sysctl -a | grep arp_ignore
-
问题2:主备切换失败
解决方案:
-
检查VRRP通信:
-
tcpdump -i ens33 vrrp
-
-
确认配置一致性:
-
virtual_router_id值
-
认证密码
-
网卡名称
-
问题3:真实服务器状态异常
处理流程:
-
手动测试服务连通性:
-
curl -I http://真实服务器IP
-
-
检查健康检查配置:
-
connect_timeout值
-
nb_get_retry重试次数
-
端口设置是否正确
-
五、实践总结与优化建议
核心价值验证:
-
支撑10万+QPS高并发场景
-
故障切换时间<1秒
-
硬件成本节约90%+
最佳实践总结:
-
调度算法选择:
-
小规模集群:轮询(rr)
-
异构服务器:加权最小连接(wlc)
-
会话保持:源地址哈希(sh)
-
-
安全加固措施:
-
vrrp_strict # 启用VRRP安全模式 enable_script_security
-
-
监控方案:
-
实时流量统计:
ipvsadm -Ln --stats
-
存活状态检测:
systemctl status keepalived
-
Prometheus监控集成
-
架构演进建议:
-
容器化部署:将LVS+Keepalived打包为Docker镜像
-
多云部署:跨云厂商实现异地高可用
-
自动化扩缩容:根据流量自动增减Real Server
实战经验:
在电商大促场景中,通过以下优化实现50万QPS:
调度算法从rr改为wlc
增加健康检查频率:delay_loop 1
开启内核参数:net.ipv4.vs.conn_reuse_mode=0
最终效果验证:
[root@director ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.1.100:80 wlc-> 192.168.1.20:80 Route 3 1256 8742-> 192.168.1.21:80 Route 2 942 6218