云原生第六次作业

1. 对比 LVS 负载均衡群集的 NAT 模式和 DR 模式,比较其各自的优势 。

LVS(Linux Virtual Server)的 NAT 模式DR 模式是两种主流的负载均衡实现方式,各有其适用场景和优缺点。以下是它们的核心对比:


1. NAT 模式(Network Address Translation)

工作原理
  • 请求流程:客户端请求到达负载均衡器(Director),Director 修改目标 IP 为后端 Real Server 的 IP,转发请求;Real Server 响应时需经过 Director,由 Director 将源 IP 改回虚拟 IP(VIP)后返回客户端。
  • 网络要求 :Real Server 通常使用私有 IP,且网关需指向 Director。
模式特点:

集群节点,必须在一个网络中

真实服务器必须将网关指向负载调度器

RIP 通常都是私有 IP,仅用于各个集群节点通信

负载调度器必须位于客户端和真实服务器之间,充当网关

支持端口映射

2. DR 模式(Direct Routing)

工作原理
  • 请求流程:Director 仅修改请求帧的 MAC 地址,直接将请求转发给 Real Server;Real Server 处理后直接响应客户端(不再经过 Director)。
  • 网络要求:Director 和 Real Server 需在同一物理网络(二层互通),Real Server 需配置 VIP 并抑制 ARP 响应。
  • 所有集群节点RS必须和Director在相同的物理网段(即同一个局域网中);
    2)所有客户端入站(而不是出站)请求由Director首先接收,并转发给集群节点RS;
    3)集群节点RS通常来说最好带外部IP,而不使用Director及某固定机器作为默认网关,以便将数据包直
    接回复给客户端计算机,且不会产生回包的瓶颈;
    4)所有集群节点RS上必须在lo网卡上绑定VIP地址,以便验证通过目的IP非RS的数据包;
    5)由于所有集群节点RS上必须在lo网卡上绑定VIP地址,因此,带来arp问题,即集群节点RS默认会相
    应发往Director VIP的数据包。因此要对所有集群节点RS做ARP抑制处理,把响应VIP的请求交给LVS
    Director;
    6)很多操作系统都可以用在集群内部的RS真实服务器上只要该操作系统能够实现ARP隐藏,如:
    Windows,linux,unix;
    7)LVS/DR模式不需要开启调度器转发功能,这点和LVS/NAT模式是不同的。
    8)LVS/DR Director(服务器数量100台)可以比LVS-NAT Director(服务器数量10-20台)承受更多的
    并发请求和转发更多的服务器数量。

对比总结

特性 NAT 模式 DR 模式
性能 低(响应需经 Director) 高(响应直达客户端)
网络要求 支持跨网段部署 必须同一二层网络
端口映射 支持 不支持
安全性 高(后端隐藏) 较低(后端暴露 VIP)
配置复杂度 简单 复杂(需 ARP 抑制)
适用场景 中小规模、私有网络环境 高并发、低延迟场景(如 CDN、大流量)

选择建议

  • NAT 模式:适合对灵活性要求高、规模较小或需跨网段部署的场景(如测试环境或内网服务)。
  • DR 模式:适合追求极致性能、高吞吐量的生产环境(如 Web 服务、API 网关)。

实际应用中,DR 模式更常见于大型互联网服务,而 NAT 模式多用于需简化部署的场景。若需更高容错性,可结合 Keepalived 实现 Director 的高可用。

2. 基于 openEuler 构建 LVS-DR 群集。

1

复制代码
nmcli connection add type dummy ifname dummy2 ipv4.method manual ipv4.addresses 192.168.234.137/32
yum install ipvsadm -y
ipvsadm -Ln
ipvsadm -At 192.168.234.137:80 -s rr
ipvsadm -at 192.168.234.137:80 -r 192.168.234.140:80 -g
ipvsadm -at 192.168.234.137:80 -r 192.168.234.141:80 -g
ipvsadm -Ln
curl 192.168.234.140
systemctl stop firewalld

2

复制代码
yum install -y nginx
echo "web test page,ip is `hostname -I`." > /usr/share/nginx/html/index.html
systemctl enable --now nginx
curl localhost
nmcli connection add type dummy ifname dummy2 ipv4.method manual ipv4.addresses 192.168.234.137/32
ip a
vim /etc/sysctl.conf 
	net.ipv4.conf.all.arp_ignore = 1 
	net.ipv4.conf.all.arp_announce = 2 
	net.ipv4.conf.dummy2.arp_ignore = 1 
	net.ipv4.conf.dummy2.arp_announce = 2
systemctl stop firewalld
curl 192.168.234.140

3

复制代码
yum install -y nginx
echo "web test page,ip is `hostname -I`." > /usr/share/nginx/html/index.html
systemctl enable --now nginx
curl localhost
nmcli connection add type dummy ifname dummy2 ipv4.method manual ipv4.addresses 192.168.234.137/32
ip a
vim /etc/sysctl.conf 
	net.ipv4.conf.all.arp_ignore = 1 
	net.ipv4.conf.all.arp_announce = 2 
	net.ipv4.conf.dummy2.arp_ignore = 1 
	net.ipv4.conf.dummy2.arp_announce = 2
systemctl stop firewalld
curl 192.168.234.140
相关推荐
朝阳5819 分钟前
Rust项目GPG签名配置指南
开发语言·后端·rust
朝阳58111 分钟前
Rust实现高性能目录扫描工具ll的技术解析
开发语言·后端·rust
程高兴12 分钟前
基于Matlab的车牌识别系统
开发语言·matlab
牛马baby36 分钟前
Java高频面试之并发编程-07
java·开发语言·面试
CodeWithMe43 分钟前
【C++】STL之deque
开发语言·c++
炯哈哈1 小时前
【上位机——MFC】运行时类信息机制
开发语言·c++·mfc·上位机
hoho不爱喝酒1 小时前
微服务Nacos组件的介绍、安装、使用
微服务·云原生·架构
T.Ree.3 小时前
【数据结构】_树和二叉树
c语言·开发语言·数据结构
夜夜敲码3 小时前
C语言教程(十五):C 语言函数指针与回调函数详解
c语言·开发语言
Cao1234567893213 小时前
判断是否为闰年(C语言)
c语言·开发语言