LVS-NAT模式配置与调优实战指南

📅 2026/8/15 8:30:25
LVS-NAT模式配置与调优实战指南
1. LVS-NAT模式实验配置详解作为企业级负载均衡的经典方案LVSLinux 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.10eth1连接内网192.168.100.1真实服务器Real Server单网卡配置192.168.100.11-13默认网关指向Director的内网IP192.168.100.1客户端任意互联网访问源关键点必须确保Real Server的默认网关指向Director这是NAT模式正常工作的前提。我遇到过不止一个案例因为网关配置错误导致流量有去无回。2.2 内核参数调优在Director上需要调整以下参数写入/etc/sysctl.confnet.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 # 应返回13. 核心配置步骤3.1 安装ipvsadm工具在Director上执行yum install ipvsadm -y # CentOS/RHEL apt-get install ipvsadm -y # Ubuntu/Debian安装后建议设置开机自启systemctl enable ipvsadm systemctl start ipvsadm3.2 配置虚拟服务假设我们要暴露HTTP服务VIP:203.0.113.10:80后端有三台Real Server192.168.100.11-13:8080ipvsadm -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模式Masquerading3.3 持久化配置为防止服务重启丢失配置执行ipvsadm-save /etc/sysconfig/ipvsadm # CentOS/RHEL ipvsadm-save /etc/ipvsadm.rules # Ubuntu/Debian4. 高级调优与监控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 流量不通排查步骤检查Director的IP转发cat /proc/sys/net/ipv4/ip_forward验证iptables规则是否拦截iptables -L -n -v检查Real Server的网关配置ip route show | grep default5.2 性能瓶颈分析当出现性能问题时重点关注watch -n 1 ipvsadm -ln --stats关键指标Conns连接数InPkts入站包OutPkts出站包6. 生产环境建议经过多个项目实践我总结出以下经验对于突发流量场景建议将调度算法改为wlc加权最小连接NAT模式会修改源IP如需获取真实客户端IP需要在Real Server上安装toa内核模块单个VIP建议后端Real Server不超过20台否则会影响哈希表性能监控方面建议采集每秒新建连接数CPS活动连接数Director的CPU软中断softirq使用率最后分享一个真实案例某电商网站在大促期间出现LVS性能下降最终发现是因为NAT模式下没有开启nf_conntrack_tcp_be_liberal参数导致大量无效连接占用哈希表。解决方法是在Director上添加echo 1 /proc/sys/net/netfilter/nf_conntrack_tcp_be_liberal