如何在Linux上配置高可用的网络负载均衡

来源:站长工具作者:俊华头衔:草根站长
导读:本期聚焦于小伙伴创作的《如何在Linux上配置高可用的网络负载均衡》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何在Linux上配置高可用的网络负载均衡》有用,将其分享出去将是对创作者最好的鼓励。

在Linux系统中,通过LVS(Linux Virtual Server)结合Keepalived可以搭建出高可用的网络负载均衡集群,既能够实现流量的均匀分发,又能在主节点故障时自动切换到备用节点,避免单点故障影响业务运行。

如何在Linux上配置高可用的网络负载均衡

环境准备

本次部署需要两台负载均衡节点(主节点和备节点)以及至少两台后端真实服务器,所有节点均使用CentOS 7及以上版本的Linux系统,网络互通且关闭防火墙或开放对应端口。节点角色规划如下:

  • 主负载均衡节点:IP为192.168.0.10
  • 备负载均衡节点:IP为192.168.0.11
  • 虚拟IP(VIP):192.168.0.100,对外提供负载均衡服务
  • 后端真实服务器1:IP为192.168.0.20,运行Web服务
  • 后端真实服务器2:IP为192.168.0.21,运行Web服务

安装依赖软件

在两台负载均衡节点上都需要安装LVS和Keepalived,执行以下命令完成安装:

# 安装LVS管理工具
yum install -y ipvsadm
# 安装Keepalived
yum install -y keepalived

后端真实服务器需要安装Web服务用于测试,这里以Nginx为例:

yum install -y nginx
systemctl start nginx
systemctl enable nginx

配置后端真实服务器

为了让LVS能够正确转发流量到后端服务器,需要在后端真实服务器上配置VIP到回环接口,并且调整内核参数避免ARP冲突,执行以下脚本完成配置:

#!/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

将脚本保存为rs_config.sh,赋予执行权限后运行,两台后端服务器都需要执行该操作。

配置Keepalived实现高可用负载均衡

主节点配置

编辑主节点的Keepalived配置文件/etc/keepalived/keepalived.conf,内容如下:

global_defs {
   router_id LVS_MASTER  # 节点标识,主备节点需不同
}

vrrp_instance VI_1 {
    state MASTER  # 主节点角色
    interface eth0  # 绑定的网卡名称,根据实际调整
    virtual_router_id 51  # 虚拟路由ID,主备需一致
    priority 100  # 优先级,主节点高于备节点
    advert_int 1  # 心跳间隔,单位秒
    authentication {
        auth_type PASS
        auth_pass 1111  # 认证密码,主备需一致
    }
    virtual_ipaddress {
        192.168.0.100  # 虚拟IP地址
    }
}

virtual_server 192.168.0.100 80 {
    delay_loop 6  # 健康检查间隔
    lb_algo rr  # 负载均衡算法,rr为轮询
    lb_kind DR  # LVS工作模式,DR模式性能最优
    persistence_timeout 0  # 会话保持时间,0为不保持
    protocol TCP  # 协议类型

    real_server 192.168.0.20 80 {
        weight 1  # 权重
        TCP_CHECK {
            connect_timeout 3  # 连接超时时间
            retry 3  # 重试次数
            delay_before_retry 3  # 重试间隔
        }
    }

    real_server 192.168.0.21 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            retry 3
            delay_before_retry 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配置和主节点完全一致
virtual_server 192.168.0.100 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    persistence_timeout 0
    protocol TCP

    real_server 192.168.0.20 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }

    real_server 192.168.0.21 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }
}

启动服务与验证

分别在主备负载均衡节点上启动Keepalived服务:

systemctl start keepalived
systemctl enable keepalived

可以通过以下方式验证配置是否生效:

  • 在主节点执行ip addr show eth0,可以看到eth0网卡上绑定了192.168.0.100的VIP
  • 执行ipvsadm -Ln,可以看到LVS的规则已经加载,后端服务器列表正常
  • 在客户端访问http://192.168.0.100,多次刷新可以看到请求轮流分发到两台后端服务器
  • 关闭主节点的Keepalived服务,VIP会自动漂移到备节点,访问服务不受影响,实现高可用切换

关键参数说明

参数说明
lb_algo负载均衡算法,可选rr(轮询)、wrr(加权轮询)、lc(最少连接)等
lb_kindLVS工作模式,DR模式性能最好,还有NAT、TUN模式可选
priorityKeepalived节点优先级,数值越高优先级越高,主节点需高于备节点
TCP_CHECK后端服务器的健康检查方式,这里使用TCP端口连通性检查

按照以上步骤操作,就可以在Linux系统上完成高可用网络负载均衡的部署,满足业务的高并发和高可用需求。如果后续需要扩容后端服务器,只需要在Keepalived配置中添加对应的real_server配置并重启服务即可。

Linux负载均衡高可用KeepalivedLVS修改时间:2026-07-16 09:54:33

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