LVS-NAT模式配置与调优实战指南
2026/8/24 22:40:13 网站建设 项目流程

1. LVS-NAT模式实验配置详解

作为企业级负载均衡的经典方案,LVS(Linux Virtual Server)的NAT模式至今仍是许多中小规模应用的首选架构。我在过去五年里为三十多家企业部署过基于LVS的解决方案,其中60%的案例都采用了NAT模式。这种模式最大的优势在于真实服务器可以完全隐藏在内网,只需要负载均衡器拥有公网IP,既节省了IP资源又提升了安全性。

今天要分享的配置方案经过生产环境验证,支持单台LVS服务器处理8000+ QPS的HTTP请求。与DR模式相比,NAT模式对网络设备没有特殊要求,普通交换机即可部署,特别适合从传统架构向负载均衡架构过渡的场景。下面我会从内核参数调优到具体命令逐层解析,并分享几个只有踩过坑才知道的注意事项。

2. 环境准备与拓扑设计

2.1 基础网络规划

典型的LVS-NAT架构包含三个角色:

  • 负载均衡器(Director):双网卡配置,eth0连接公网(假设IP为203.0.113.10),eth1连接内网(192.168.100.1)
  • 真实服务器(Real Server):单网卡配置(192.168.100.11-13),默认网关指向Director的内网IP(192.168.100.1)
  • 客户端:任意互联网访问源

关键点:必须确保Real Server的默认网关指向Director,这是NAT模式正常工作的前提。我遇到过不止一个案例因为网关配置错误导致流量有去无回。

2.2 内核参数调优

在Director上需要调整以下参数(写入/etc/sysctl.conf):

net.ipv4.ip_forward = 1 net.ipv4.vs.conntrack = 1 net.ipv4.vs.expire_nodest_conn = 1

执行sysctl -p生效后,建议用以下命令验证:

cat /proc/sys/net/ipv4/ip_forward # 应返回1

3. 核心配置步骤

3.1 安装ipvsadm工具

在Director上执行:

yum install ipvsadm -y # CentOS/RHEL apt-get install ipvsadm -y # Ubuntu/Debian

安装后建议设置开机自启:

systemctl enable ipvsadm && systemctl start ipvsadm

3.2 配置虚拟服务

假设我们要暴露HTTP服务(VIP:203.0.113.10:80),后端有三台Real Server(192.168.100.11-13:8080):

ipvsadm -A -t 203.0.113.10:80 -s rr ipvsadm -a -t 203.0.113.10:80 -r 192.168.100.11:8080 -m ipvsadm -a -t 203.0.113.10:80 -r 192.168.100.12:8080 -m ipvsadm -a -t 203.0.113.10:80 -r 192.168.100.13:8080 -m

参数说明:

  • -A:添加虚拟服务
  • -t:指定TCP服务
  • -s rr:采用轮询(Round Robin)调度算法
  • -a:添加Real Server
  • -m:启用NAT模式(Masquerading)

3.3 持久化配置

为防止服务重启丢失配置,执行:

ipvsadm-save > /etc/sysconfig/ipvsadm # CentOS/RHEL ipvsadm-save > /etc/ipvsadm.rules # Ubuntu/Debian

4. 高级调优与监控

4.1 连接超时设置

默认TCP空闲超时为900秒,对于Web应用建议调整为:

ipvsadm --set 300 60 300

三个参数分别表示:

  • TCP会话超时(秒)
  • TCP FIN状态超时
  • UDP超时

4.2 健康检查方案

原生LVS缺乏健康检查机制,建议配合keepalived:

! Configuration File for keepalived global_defs { router_id LVS_DEVEL } 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 { 203.0.113.10 } } virtual_server 203.0.113.10 80 { delay_loop 6 lb_algo rr lb_kind NAT persistence_timeout 50 protocol TCP real_server 192.168.100.11 8080 { weight 1 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 8080 } } # 其他Real Server配置类似 }

5. 常见问题排查

5.1 流量不通排查步骤

  1. 检查Director的IP转发:

    cat /proc/sys/net/ipv4/ip_forward
  2. 验证iptables规则是否拦截:

    iptables -L -n -v
  3. 检查Real Server的网关配置:

    ip route show | grep default

5.2 性能瓶颈分析

当出现性能问题时,重点关注:

watch -n 1 ipvsadm -ln --stats

关键指标:

  • Conns:连接数
  • InPkts:入站包
  • OutPkts:出站包

6. 生产环境建议

经过多个项目实践,我总结出以下经验:

  1. 对于突发流量场景,建议将调度算法改为wlc(加权最小连接)
  2. NAT模式会修改源IP,如需获取真实客户端IP,需要在Real Server上安装toa内核模块
  3. 单个VIP建议后端Real Server不超过20台,否则会影响哈希表性能
  4. 监控方面建议采集:
    • 每秒新建连接数(CPS)
    • 活动连接数
    • Director的CPU软中断(softirq)使用率

最后分享一个真实案例:某电商网站在大促期间出现LVS性能下降,最终发现是因为NAT模式下没有开启nf_conntrack_tcp_be_liberal参数,导致大量无效连接占用哈希表。解决方法是在Director上添加:

echo 1 > /proc/sys/net/netfilter/nf_conntrack_tcp_be_liberal

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询