云原生第六次作业

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
相关推荐
paterWang1 小时前
基于 Python 和 OpenCV 的酒店客房入侵检测系统设计与实现
开发语言·python·opencv
东方佑1 小时前
使用Python和OpenCV实现图像像素压缩与解压
开发语言·python·opencv
我真不会起名字啊2 小时前
“深入浅出”系列之杂谈篇:(3)Qt5和Qt6该学哪个?
开发语言·qt
laimaxgg2 小时前
Qt常用控件之单选按钮QRadioButton
开发语言·c++·qt·ui·qt5
水瓶丫头站住2 小时前
Qt的QStackedWidget样式设置
开发语言·qt
KTKong3 小时前
kubeadm拉起的k8s集群证书过期的做法集群已奔溃也可以解决
云原生·容器·kubernetes
小钊(求职中)3 小时前
Java开发实习面试笔试题(含答案)
java·开发语言·spring boot·spring·面试·tomcat·maven
呱牛do it5 小时前
【系列专栏】银行IT的云原生架构-混合云弹性架构 13
微服务·云原生·金融·架构
慕诗客5 小时前
QT基于Gstreamer采集的简单示例
开发语言·qt
Blasit5 小时前
C++ Qt建立一个HTTP服务器
服务器·开发语言·c++·qt·http