对比 LVS 负载均衡群集的 NAT 模式和 DR 模式,比较其各自的优势。
NAT模式,全称是网络地址转换模式。NAT模式下,负载均衡器(Director)会修改请求和响应的IP地址。客户端的请求先到达Director,Director将请求的目标地址改成后端真实服务器的地址,然后转发给后端服务器。后端服务器处理完请求后,将响应返回给Director,Director再将响应的源地址改回自己的虚拟IP(VIP),最后返回给客户端。这样的话,对于客户端来说,它只知道Director的地址,不知道后端服务器的存在。
DR模式,即直接路由模式。DR模式下,Director和后端服务器都配置了同一个虚拟IP地址。当客户端请求到达Director时,Director通过修改请求的目标MAC地址,将请求转发给选中的后端服务器。后端服务器处理请求后,直接通过自己的网络接口将响应返回给客户端,而不需要经过Director。这样响应数据可以直接从服务器到客户端,减少了Director的负担。
- NAT模式(Network Address Translation)
1.优势:
1.网络拓扑灵活:
2.后端服务器(Real Server)可使用私有IP地址,无需暴露公网IP。
3.支持跨子网部署,Real Server可位于不同网络环境中(如云服务器跨可用区)。
2.配置简单:
1.Real Server无需特殊配置,只需设置默认网关为Director(负载均衡器)。
2.无需修改Real Server的内核参数(如ARP抑制)。
3.安全性较高:
1.Real Server隐藏在Director后,对外不可见,避免直接暴露于公网。
4.支持端口映射:
1.Director可修改目标端口,实现灵活的端口转换(如将80端口请求转发到后端8080端口)。
5.适用场景:
1.中小规模流量场景。
2.需要跨子网或混合云部署。
3.对后端服务器安全性要求较高。
- DR模式(Direct Routing)
1.优势:
1.高性能与低延迟:
1.响应数据直接由Real Server返回客户端,无需经过Director,避免带宽瓶颈。
吞吐量高,适合高并发、大流量场景(如视频流、大规模Web应用)。
2.扩展性强:
1.Director仅处理入站请求,后端服务器数量增加时性能影响较小。
3.资源利用率高:
1.Real Server直接使用公网带宽,减轻Director的网络负载。
4.适用场景:
1.高并发、大流量场景(如电商大促、在线游戏)。
2.对吞吐量和延迟敏感的服务。
3.需充分利用Real Server的公网带宽。
以下是 NAT模式 与 DR模式 的对比表格:
对比项 | NAT模式 | DR模式 |
---|---|---|
工作层次 | 传输层(四层)或应用层(七层) | 数据链路层(二层)或网络层(三层) |
IP地址处理 | 修改目标/源IP(客户端IP→负载均衡器IP→后端IP) | 仅修改目标MAC地址,IP地址保持不变 |
流量路径 | 请求和响应均经过负载均衡器 | 请求经过负载均衡器,响应直接返回客户端 |
性能 | 受限于负载均衡器带宽,吞吐量较低 | 高吞吐量,适用于高并发场景 |
网络结构 | 后端服务器通常位于私有网络 | 负载均衡器与服务器需在同一局域网(LAN) |
后端服务器要求 | 可配置私有IP,无需公网路由 | 需配置公网IP或VIP,支持直接路由 |
配置复杂度 | 简单,适合小规模部署 | 复杂(需配置ARP抑制、VIP绑定等) |
透明性 | 客户端感知负载均衡器IP,隐藏后端服务器 | 客户端直接收到后端响应,但IP仍为负载均衡器VIP |
适用场景 | 中小规模、对性能要求不高 | 大规模高并发(如Web服务、CDN) |
端口转换支持 | 支持(可修改目标端口) | 不支持(保持原始端口) |
服务器数量限制 | 受限于负载均衡器性能 | 可横向扩展更多服务器 |
优缺点 | 优点 :配置简单、隐藏后端; 缺点:性能瓶颈、扩展性差 | 优点 :高性能、扩展性强; 缺点:网络配置复杂 |
IP规划
- Director :
- 公网IP(VIP):192.168.234.10
- 内网IP(DIP):192.168.234.11
- Real Server :
- 内网IP(RIP):192.168.234.14 和 192.168.234.15
- 客户端 :
- 公网IP:192.168.234.13
NAT模式配置步骤
1. 配置Real Server
在Real Server上安装Web服务,例如Nginx,并启动服务。
bash
复制
yum install nginx -y
systemctl start nginx
systemctl enable nginx
创建测试页面并设置默认网关为Director的DIP。
bash
复制
echo "web test page,ip is `hostname -I`" > /usr/share/nginx/html/index.html
route add default gw 192.168.234.11
2. 配置Director
安装LVS管理工具ipvsadm
。
bash
复制
yum install ipvsadm -y
配置VIP和NAT规则。
bash
复制
ifconfig eth0:1 192.168.234.10 netmask 255.255.255.255 up
ipvsadm --add-service --tcp-service 192.168.234.10:80 --scheduler rr
ipvsadm --add-server --tcp-service 192.168.234.10:80 --real-server 192.168.234.14:80 --masquerade
ipvsadm --add-server --tcp-service 192.168.234.10:80 --real-server 192.168.234.15:80 --masquerade
开启IP转发。
bash
复制
echo 1 > /proc/sys/net/ipv4/ip_forward
3. 测试
从客户端访问VIP,检查是否能够轮询访问到不同的Real Server。
bash
复制
curl 192.168.234.10
DR模式配置步骤
1. 配置Real Server
与NAT模式相同,安装Web服务并创建测试页面。
bash
复制
yum install nginx -y
systemctl start nginx
systemctl enable nginx
echo "web test page,ip is `hostname -I`" > /usr/share/nginx/html/index.html
绑定VIP到dummy接口并配置ARP抑制。
bash
复制
nmcli connection add type dummy ifname dummy1 ipv4.method manual ipv4.addresses 192.168.234.10/32
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
2. 配置Director
安装ipvsadm
并配置VIP和DR规则。
bash
复制
yum install ipvsadm -y
ifconfig eth0:1 192.168.234.10 netmask 255.255.255.255 up
ipvsadm --add-service --tcp-service 192.168.234.10:80 --scheduler rr
ipvsadm --add-server --tcp-service 192.168.234.10:80 --real-server 192.168.234.14:80 --gatewaying
ipvsadm --add-server --tcp-service 192.168.234.10:80 --real-server 192.168.234.15:80 --gatewaying
3. 测试
与NAT模式相同,从客户端访问VIP并检查响应。
