如何使用Linux进行网络负载均衡

来源:3D模型作者:厦门程序员头衔:程序员
导读:本期聚焦于小伙伴创作的《如何使用Linux进行网络负载均衡》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何使用Linux进行网络负载均衡》有用,将其分享出去将是对创作者最好的鼓励。

在Linux系统中实现网络负载均衡,核心是通过软件层面的流量分发机制,将客户端请求均匀分配到多个后端服务器,避免单台服务器过载,同时提升整体服务的可用性。Linux生态下有多种成熟的负载均衡实现方案,可满足不同规模和场景的需求。

常见Linux负载均衡方案分类

Linux下的网络负载均衡方案主要分为用户空间和内核空间两类,不同方案的工作原理和适用场景有明显区别,具体对比如下:

方案名称工作层级核心优势适用场景
iptables网络层、传输层系统原生自带,无需额外安装组件,配置灵活小规模流量分发,简单的负载均衡需求
LVS传输层内核级转发,性能极高,支持多种转发模式高并发、大流量的核心负载均衡场景
keepalived传输层、应用层自带高可用机制,可配合LVS实现主备切换需要负载均衡节点高可用的生产环境

基于iptables的简单负载均衡配置

iptables是Linux系统自带的防火墙工具,同时支持基于随机、轮询等策略的流量分发,适合入门级负载均衡需求。

配置前提

  • 准备一台Linux负载均衡器,假设IP为192.168.0.100
  • 准备两台后端服务器,IP分别为192.168.0.101和192.168.0.102,均开启80端口的Web服务
  • 关闭负载均衡器的防火墙或者开放对应转发端口

配置随机分发策略

通过iptables的 statistic 模块实现请求随机分配到两台后端服务器,具体配置命令如下:

# 开启系统IP转发功能
echo 1 > /proc/sys/net/ipv4/ip_forward

# 添加PREROUTING链规则,将到达80端口的流量随机分发
iptables -t nat -A PREROUTING -p tcp --dport 80 -m statistic --mode random --probability 0.5 -j DNAT --to-destination 192.168.0.101:80
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.0.102:80

# 添加POSTROUTING链规则,做源地址转换
iptables -t nat -A POSTROUTING -j MASQUERADE

# 保存iptables规则,避免重启后丢失
iptables-save > /etc/iptables.rules

上述配置中,--probability 0.5表示50%的概率将流量转发到第一台后端服务器,剩余流量自动转发到第二台,实现基础的负载均衡效果。

基于LVS的高性能负载均衡配置

LVS(Linux Virtual Server)是Linux内核自带的负载均衡模块,运行在内核空间,转发性能远高于用户空间的方案,适合高并发场景。

LVS的三种转发模式

  • NAT模式:请求和响应都经过负载均衡器,配置简单但负载均衡器压力较大
  • DR模式:响应直接由后端服务器返回给客户端,性能最高,需要后端服务器和负载均衡器在同一网段
  • TUN模式:通过IP隧道转发请求,后端服务器可以跨网段部署

DR模式配置示例

以下是LVS DR模式的配置步骤,负载均衡器IP为192.168.0.100,虚拟IP(VIP)为192.168.0.200,后端服务器为192.168.0.101和192.168.0.102。

负载均衡器配置

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

# 配置VIP到网卡子接口
ifconfig eth0:0 192.168.0.200 netmask 255.255.255.255 up

# 添加LVS集群服务,使用轮询调度算法
ipvsadm -A -t 192.168.0.200:80 -s rr

# 添加两台后端服务器,使用DR模式
ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.101:80 -g
ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.102:80 -g

# 查看配置结果
ipvsadm -Ln

后端服务器配置

DR模式下后端服务器需要绑定VIP到回环接口,并且关闭ARP响应,避免IP冲突:

# 绑定VIP到lo接口
ifconfig lo:0 192.168.0.200 netmask 255.255.255.255 up

# 调整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

基于keepalived的高可用负载均衡配置

keepalived可以在LVS的基础上提供主备高可用能力,当主负载均衡节点故障时,自动切换到备节点,避免单点故障。

基础配置示例

假设主节点IP为192.168.0.100,备节点IP为192.168.0.103,VIP为192.168.0.200,后端服务器为192.168.0.101和192.168.0.102。

主节点keepalived配置文件/etc/keepalived/keepalived.conf内容如下:

global_defs {
   router_id LVS_DEVEL_01  # 节点唯一标识
}

vrrp_instance VI_1 {
    state MASTER  # 主节点角色
    interface eth0
    virtual_router_id 51
    priority 100  # 优先级,主节点高于备节点
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.0.200  # 绑定的VIP
    }
}

virtual_server 192.168.0.200 80 {
    delay_loop 6
    lb_algo rr  # 轮询调度算法
    lb_kind DR  # DR转发模式
    persistence_timeout 50
    protocol TCP

    real_server 192.168.0.101 80 {
        weight 1
        TCP_CHECK {  # 健康检查
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }

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

备节点配置只需将state改为BACKUPpriority改为低于100的数值(如90)即可。启动keepalived服务后,主备节点会自动协商VIP的归属,主节点故障时VIP会自动漂移到备节点。

注意事项

  • 生产环境中建议优先选择LVS+keepalived的组合,兼顾性能和高可用
  • 配置完成后需要通过curl VIP:端口的方式验证负载均衡是否生效
  • 后端服务器的健康检查机制需要根据业务类型合理配置,避免将流量转发到故障节点
  • 所有配置规则建议写入开机启动脚本,避免服务器重启后配置丢失

Linux网络负载均衡iptableskeepalivedLVS修改时间:2026-06-15 09:04:05

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