对比 LVS 负载均衡群集的 NAT 模式和 DR 模式,比较其各自的优势。
NAT模式,全称是网络地址转换模式。NAT模式下,负载均衡器(Director)会修改请求和响应的IP地址。客户端的请求先到达Director,Director将请求的目标地址改成后端真实服务器的地址,然后转发给后端服务器。后端服务器处理完请求后,将响应返回给Director,Director再将响应的源地址改回自己的虚拟IP(VIP),最后返回给客户端。这样的话,对于客户端来说,它只知道Director的地址,不知道后端服务器的存在。
DR模式,即直接路由模式。DR模式下,Director和后端服务器都配置了同一个虚拟IP地址。当客户端请求到达Director时,Director通过修改请求的目标MAC地址,将请求转发给选中的后端服务器。后端服务器处理请求后,直接通过自己的网络接口将响应返回给客户端,而不需要经过Director。这样响应数据可以直接从服务器到客户端,减少了Director的负担。
1. NAT模式(Network Address Translation)
-
优势:
-
网络拓扑灵活:
-
后端服务器(Real Server)可使用私有IP地址,无需暴露公网IP。
-
支持跨子网部署,Real Server可位于不同网络环境中(如云服务器跨可用区)。
-
-
配置简单:
-
Real Server无需特殊配置,只需设置默认网关为Director(负载均衡器)。
-
无需修改Real Server的内核参数(如ARP抑制)。
-
-
安全性较高:
-
Real Server隐藏在Director后,对外不可见,避免直接暴露于公网。
-
-
支持端口映射:
-
Director可修改目标端口,实现灵活的端口转换(如将80端口请求转发到后端8080端口)。
-
-
-
适用场景:
-
中小规模流量场景。
-
需要跨子网或混合云部署。
-
对后端服务器安全性要求较高。
-
2. DR模式(Direct Routing)
-
优势:
-
高性能与低延迟:
-
响应数据直接由Real Server返回客户端,无需经过Director,避免带宽瓶颈。
-
吞吐量高,适合高并发、大流量场景(如视频流、大规模Web应用)。
-
-
扩展性强:
-
Director仅处理入站请求,后端服务器数量增加时性能影响较小。
-
-
资源利用率高:
-
Real Server直接使用公网带宽,减轻Director的网络负载。
-
-
-
适用场景:
-
高并发、大流量场景(如电商大促、在线游戏)。
-
对吞吐量和延迟敏感的服务。
-
需充分利用Real Server的公网带宽。
-
关键对比总结
特性 | NAT模式 | DR模式 |
---|---|---|
网络拓扑 | 支持跨子网,Real Server可私有IP | 必须同一局域网,Real Server需公网IP |
性能 | 受限于Director的带宽和处理能力 | 高性能,Real Server直接响应客户端 |
配置复杂度 | 简单(Real Server无需特殊配置) | 复杂(需配置ARP抑制、VIP绑定等) |
安全性 | 高(Real Server隐藏) | 较低(Real Server暴露公网IP) |
端口映射 | 支持 | 不支持 |
适用规模 | 中小规模 | 大规模、高并发 |
选择建议
-
NAT模式:适合网络环境复杂、对安全性要求高、流量适中的场景。
-
DR模式:适合追求极致性能、大流量且网络环境可控的场景。
实际部署中,可结合两者优势,例如在DR模式下通过Keepalived实现Director的高可用,进一步提升系统可靠性。
基于 openEuler 构建 LVS-DR 群集
1. 环境准备
-
操作系统:openEuler 20.03 LTS 或更高版本。
-
网络拓扑:
-
Director:1台,配置双网卡(一个公网IP,一个内网IP)。
-
Real Server:至少2台,配置内网IP。
-
客户端:1台,用于测试。
-
-
IP规划:
-
Director:
-
公网IP(VIP):
192.168.234.10
-
内网IP(DIP):192.168.234.11
-
-
Real Server 1:
-
内网IP(RIP):192.168.234.14
-
-
Real Server 2:
-
内网IP(RIP):
192.168.234.15
-
-
客户端:
-
公网IP:
192.168.234.13
-
-
配置 Real Server(后端服务器)
在 Real Server 上启动 Web 服务
在两个Real Server上安装并启动nginx服务:
yum install nginx -y systemctl start nginx systemctl enable nginx
在Real Server 1上创建测试页面
echo "web test page,ip is `hostname -I`" > /usr/share/nginx/html/index.html![]()
在Real Server 2上创建测试页面
echo "web test page,ip is `hostname -I`" > /usr/share/nginx/html/index.html
在两个Real Server上都绑定VIP
nmcli connection add type dummy ifname dummy1 ipv4.method manual ipv4.addresses 192.168.234.10/32
ip address查看:
配置 ARP 抑制
防止Real Server响应VIP的ARP请求:
vim /etc/sysctl.conf
,添加以下内容:
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
应用配置:
sysctl -p
配置 Director(负载均衡器)
1.安装 LVS 工具
yum install ipvsadm -y
2.配置 VIP
nmcli connection add type dummy ifname dummy1 ipv4.method manual ipv4.addresses 192.168.234.10/32
3. 配置 LVS 规则
使用 ipvsadm
配置负载均衡规则:
ipvsadm -A -t 192.168.234.10:80 -s rr
ipvsadm -a -t 192.168.234.10:80 -r 192.168.234.14:80 -g
ipvsadm -a -t 192.168.234.10:80 -r 192.168.234.15:80 -g
4.在Director上查看LVS状态:
ipvsadm -Ln
5.从客户端访问 VIP
在客户端使用 curl
或浏览器访问VIP: