如何应对Linux系统中的故障转移和负载均衡问题

来源:Nodejs社区作者:桃乃木香奈头衔:网络博主
导读:本期聚焦于小伙伴创作的《如何应对Linux系统中的故障转移和负载均衡问题》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何应对Linux系统中的故障转移和负载均衡问题》有用,将其分享出去将是对创作者最好的鼓励。

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

如何应对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

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。