LVS负载均衡集群NAT模式怎么搭建与配置?

来源:Webpack教程作者:清原小日向头衔:网络博主
导读:本期聚焦于清原小日向创作的《LVS负载均衡集群NAT模式怎么搭建与配置?》,敬请观看详情。为什么基于NAT模式的LVS集群搭建总是卡在网络转发这一步?其实问题往往出在IP转发没开启或者网关没指向Director。本文以LVS的NAT模式为例,从工作原理讲起,手把手演示在Director调度器和RealServer真实服务器上的完整配置流程,包括ip_vs模块加载、ipvsadm命令添加集群服务与后端节点、开启内核转发参数、后端服务器网关指向等关键步骤,同时整理了连接测试与常见故障的排查思路,帮助你快速搭建一套可用的四层负载均衡环境。

LVS(Linux Virtual Server)是章文嵩博士发起的开源四层负载均衡方案,工作在传输层,性能极高。它支持三种典型工作模式:NAT、DR和TUN。其中NAT模式配置最简单、对后端服务器没有任何要求,是初学者理解LVS集群结构的最佳入口。本文将完整演示如何用三台机器搭建一个基于NAT模式的LVS负载均衡集群,并详细解释每一步配置背后的原理。

LVS负载均衡集群NAT模式怎么搭建与配置?

一、NAT模式的工作原理与实验环境规划

NAT模式的核心思想是:Director同时作为集群的入口和出口。客户端的请求先到达Director的外网IP(VIP),Director根据调度算法改写请求的目标地址,转发给某台RealServer;RealServer处理完请求后,把响应发回Director的内网IP(DIP),Director再把响应的源地址改写为VIP发回客户端。整个过程对客户端完全透明。

这意味着两件事:第一,进出流量都要经过Director,所以Director容易成为性能瓶颈;第二,RealServer必须把默认网关指向Director的内网IP,否则响应包会绕过Director直接发往客户端,导致连接中断。

实验环境规划如下:Director使用CentOS系统,配置两块网卡,外网网卡IP为192.168.10.100(作为VIP),内网网卡IP为10.0.0.1(作为DIP)。两台RealServer只需要一块内网网卡,RS1的IP为10.0.0.11,RS2的IP为10.0.0.12,两台后端服务器的网关都必须设置为10.0.0.1。

二、Director调度器上的配置

首先确认内核已经加载了ip_vs模块。LVS是直接构建在Linux内核中的,主流发行版的内核默认都已支持,只需要检查一下:

lsmod | grep ip_vs
# 如果没有输出,手动加载模块
modprobe ip_vs
modprobe ip_vs_wlc

接下来安装用户态的管理工具ipvsadm。这个工具负责向内核的IPVS框架添加、删除虚拟服务和后端节点,所有LVS规则都通过它来维护:

yum install -y ipvsadm

NAT模式要求Director具备路由转发能力,这是最容易遗漏的一步。默认情况下Linux内核的IP转发是关闭的,不开的话数据包到了Director就被丢弃了。需要修改内核参数并立即生效:

# 临时开启转发,立即生效
echo 1 > /proc/sys/net/ipv4/ip_forward
# 永久生效,写入配置文件
echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
sysctl -p

最后添加虚拟服务和后端节点。假设两台RealServer上都跑着Nginx,监听80端口,这里使用加权轮询(wlc或wrr)算法:

# 添加一个虚拟服务,协议TCP,调度算法为加权轮询
ipvsadm -A -t 192.168.10.100:80 -s wrr
# 添加两台RealServer,-m表示NAT(masquerade)模式
ipvsadm -a -t 192.168.10.100:80 -r 10.0.0.11:80 -m -w 1
ipvsadm -a -t 192.168.10.100:80 -r 10.0.0.12:80 -m -w 2

命令中-A表示添加虚拟服务,-t指定TCP协议和VIP端口,-s指定调度算法,-a表示往已有服务中追加RealServer,-m是NAT模式的标志,-w是权重。权重设为2的后端服务器会被分配到大约两倍于权重为1的服务器的请求量,适合后端机器配置不一致的场景。

三、RealServer后端服务器的配置

NAT模式对RealServer的要求极低,不需要配置任何虚拟IP,也不需要绑定VIP到回环接口,只要保证两点即可:IP地址和Director的内网网卡处于同一网段,并且默认网关指向Director的DIP。

以RS1为例,修改网卡配置文件/etc/sysconfig/network-scripts/ifcfg-eth0

IPADDR=10.0.0.11
NETMASK=255.255.255.0
GATEWAY=10.0.0.1

修改后重启网络服务systemctl restart network,RS2做同样的操作,把IP改为10.0.0.12即可。网关这一步至关重要,很多初学者配置完Director后发现访问不了,八成是RealServer的网关没有指向DIP。因为Director转发请求时会做目标地址转换,但响应包的源地址改写发生在Director上,如果响应包不经过Director,客户端收到的源IP对不上,TCP握手就永远完成不了。

然后在两台RealServer上分别部署测试服务,最简单的办法是用Nginx输出不同的页面内容方便区分:

yum install -y nginx
echo 'This is RS1' > /usr/share/nginx/html/index.html
systemctl start nginx

四、连接测试与常见故障排查

配置完成后,在客户端上反复访问http://192.168.10.100,如果看到页面在This is RS1和This is RS2之间轮换出现,说明集群已经正常工作。同时在Director上执行ipvsadm -Ln可以查看规则列表,执行ipvsadm -Lnc可以查看当前连接状态,观察请求是否被分发到了两台后端。

ipvsadm -Ln --stats
# 输出中每台RealServer的InPkts、OutPkts会持续增长,说明转发正常

如果访问失败,按照以下顺序排查。第一,在RealServer上ping 10.0.0.1确认内网互通;第二,检查Director上ip_forward是否为1;第三,确认RealServer的网关确实指向了DIP,用route -n查看;第四,确认两台后端的Nginx自身可以正常响应,即在内网直接curl对方的80端口。还有一个隐蔽的坑:如果Director上同时运行了firewalld,转发链可能拦截流量,测试阶段建议systemctl stop firewalld排除干扰。

需要保存规则以便重启后自动恢复时,可以使用ipvsadm -S > /etc/sysconfig/ipvsadm保存,或安装ipvsadm服务后通过systemctl enable ipvsadm实现开机加载。生产环境中,NAT模式适合中小规模集群,如果流量巨大,可以进一步迁移到DR模式,让响应流量不再经过Director,从而大幅提升整体吞吐能力。

LVS负载均衡NAT模式ipvsadm修改时间:2026-09-14 22:20:36

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