服务器使用LVS+KEEPALIVED实现高可用负载均衡
服务器使用LVS+Keepalived实现高可用负载均衡,是一种成熟且广泛应用的解决方案,其核心原理和配置要点如下:
一、核心原理
- LVS(Linux Virtual Server)
- 作用:基于IP层(OSI第四层)实现高性能负载均衡,支持TCP/UDP协议(如HTTP、MySQL、Redis等)。
- 工作模式:
- NAT模式:修改请求/响应的目标/源IP地址,需LVS作为网关,性能较低但配置简单。
- DR模式(推荐):仅修改MAC地址,响应直接由后端服务器返回客户端,性能最高(大型网站主流选择)。
- TUN模式:通过IP隧道封装请求,支持跨子网,但配置复杂。
- 调度算法:支持轮询(rr)、加权轮询(wrr)、最小连接(wlc)等十种算法,可根据业务需求选择。
- Keepalived
- 作用:基于VRRP协议实现高可用,管理LVS节点状态、VIP漂移及后端服务器健康检查。
- 核心机制:
- 主备节点:主节点(MASTER)承载VIP,备节点(BACKUP)监听主节点状态,故障时自动接管VIP。
- 健康检查:通过TCP端口检测、HTTP请求等方式监控后端服务器,故障时自动剔除并恢复后重新加入。
- 优先级机制:主备节点配置不同优先级,主节点故障后,优先级高的备节点优先接管。
二、配置步骤(以DR模式为例)
1. 环境准备
- 服务器角色:
- 2台LVS节点(主/备),安装
ipvsadm
和keepalived
。 - 2台后端服务器(RealServer),部署Web服务(如Nginx/Apache)。
- 2台LVS节点(主/备),安装
- 网络要求:
- LVS节点与后端服务器在同一子网,且后端服务器需配置VIP的回环接口(
lo:0
)并禁用ARP响应。
- LVS节点与后端服务器在同一子网,且后端服务器需配置VIP的回环接口(
2. LVS节点配置
- 安装软件:
yum install ipvsadm keepalived -y - Keepalived主节点配置(
/etc/keepalived/keepalived.conf
):global_defs { router_id LVS_MASTER } vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 60 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.1.254/24 dev eth0 } } virtual_server 192.168.1.254 80 { delay_loop 6 lb_algo wlc lb_kind DR protocol TCP real_server 192.168.1.101 80 { weight 10 TCP_CHECK { connect_port 80 connect_timeout 3 retry 3 } } real_server 192.168.1.102 80 { weight 8 TCP_CHECK { connect_port 80 connect_timeout 3 retry 3 } } } - 备节点配置:修改
state
为BACKUP
,priority
为较低值(如90),其余参数与主节点一致。
3. 后端服务器配置
- 绑定VIP到回环接口:
ip addr add 192.168.1.254/32 dev lo:0 - 禁用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
4. 启动服务
- LVS节点:
bash
systemctl start keepalived systemctl enable keepalived - 验证LVS规则:
ipvsadm -Ln
三、关键优势
- 高可用性:主备节点自动切换,故障恢复时间秒级,确保服务连续性。
- 性能优化:DR模式避免响应数据经过LVS,减轻负载均衡器压力,适合高并发场景。
- 灵活扩展:支持多业务隔离(如Web/数据库VIP独立管理)和混合负载均衡(LVS+纯VRRP实例)。
- 监控与日志:通过
keepalived -S info
查看状态,独立日志文件便于故障排查。
四、注意事项
- 网络配置:确保LVS节点与后端服务器网络互通,且后端服务器不响应ARP请求。
- 优先级设置:主备节点优先级差值建议≥10,避免频繁切换。
- 健康检查:根据业务类型调整检查间隔(
delay_loop
)和超时时间(connect_timeout
)。 - 资源隔离:为不同实例分配独立CPU核心和内存限制,避免资源竞争。