在Linux系统运维场景中,故障转移和负载均衡是保障业务连续性的核心能力。故障转移可以在主服务节点出现故障时自动将流量切换到备用节点,避免服务中断;负载均衡则能将请求合理分配到多个后端节点,提升整体处理效率,两者结合可以构建高可用的服务架构。

核心概念说明
故障转移(Failover)指的是当集群中的主节点发生故障时,系统自动将服务接管到备用节点的过程,整个过程对客户端透明,最大程度减少服务 downtime。负载均衡(Load Balancing)是通过调度算法将客户端请求分发到多个后端真实服务器,避免单节点压力过大。
常见的Linux下实现组合是Keepalived配合LVS(Linux Virtual Server),Keepalived负责健康检查与故障转移,LVS负责四层负载均衡调度,两者搭配可以满足大部分Web服务、数据库代理等场景的高可用需求。
环境准备
我们需要准备以下节点:
- 2台负载均衡器节点(主备),系统为CentOS 7及以上版本,IP分别为192.168.0.10(主)、192.168.0.11(备)
- 2台后端真实服务器,IP分别为192.168.0.20、192.168.0.21,运行Nginx服务作为测试
- 虚拟IP(VIP)设置为192.168.0.100,对外提供服务入口
负载均衡与故障转移配置步骤
1. 安装依赖软件
在所有负载均衡器节点执行以下命令安装Keepalived和LVS管理工具:
# 安装epel源 yum install -y epel-release # 安装keepalived和ipvsadm yum install -y keepalived ipvsadm
2. 配置主负载均衡器
修改主节点的Keepalived配置文件/etc/keepalived/keepalived.conf,内容如下:
global_defs {
# 节点标识,主备节点需要不同
router_id LVS_MASTER
}
vrrp_instance VI_1 {
# 初始状态,主节点为MASTER,备节点为BACKUP
state MASTER
# 绑定的网卡名称,根据实际环境修改
interface eth0
# 虚拟路由ID,主备节点需要一致
virtual_router_id 51
# 优先级,主节点高于备节点
priority 100
# 检查间隔,单位秒
advert_int 1
# 认证配置
authentication {
auth_type PASS
auth_pass 1111
}
# 虚拟IP地址,可配置多个
virtual_ipaddress {
192.168.0.100
}
}
# LVS配置段
virtual_server 192.168.0.100 80 {
# 健康检查间隔
delay_loop 6
# 负载均衡算法,rr为轮询
lb_algo rr
# LVS模式,DR为直接路由模式
lb_kind DR
# 持久化连接时间
persistence_timeout 50
# 协议类型
protocol TCP
# 后端真实服务器1
real_server 192.168.0.20 80 {
# 权重
weight 1
# HTTP健康检查
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
# 后端真实服务器2
real_server 192.168.0.21 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
3. 配置备负载均衡器
备节点的配置文件和主节点大部分一致,仅需要修改以下参数:
global_defs {
router_id LVS_BACKUP
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
# 优先级低于主节点
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.0.100
}
}
# 下方的virtual_server配置和主节点完全一致,无需修改
4. 后端服务器配置
在DR模式下,后端服务器需要配置VIP到回环网卡,并且关闭ARP响应,执行以下脚本(保存为lvs_dr_rs.sh):
#!/bin/bash VIP=192.168.0.100 # 绑定VIP到回环网卡 ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP # 添加路由 route add -host $VIP 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
在两台后端服务器上执行该脚本,并启动Nginx服务。
5. 启动服务验证
在主备负载均衡器节点启动Keepalived服务:
systemctl start keepalived systemctl enable keepalived
此时主节点会持有VIP 192.168.0.100,通过ip addr show eth0可以查看到VIP绑定。访问http://192.168.0.100会轮询到两台后端Nginx服务器。
故障测试与运维技巧
我们可以进行以下测试验证故障转移效果:
- 关闭主负载均衡器的Keepalived服务,观察VIP是否自动漂移到备节点,服务访问是否正常
- 关闭其中一台后端Nginx服务器,观察Keepalived是否自动将该节点从调度列表中移除,请求仅转发到正常节点
日常运维中可以通过以下命令排查问题:
ipvsadm -Ln:查看LVS调度规则与后端节点状态tail -f /var/log/messages:查看Keepalived的运行日志,定位故障原因ping 192.168.0.100:验证VIP的连通性
如果业务需要七层负载均衡,也可以将LVS替换为Nginx,Keepalived仍然负责故障转移,Nginx负责七层请求分发,配置逻辑类似,仅需调整对应的服务配置即可。
Linux故障转移负载均衡KeepalivedLVS修改时间:2026-07-05 17:00:29