云原生第六次作业

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
相关推荐
阿里云云原生12 小时前
LLM 不断提升智能下限,MCP 不断提升创意上限
云原生
阿里云云原生12 小时前
GraalVM 24 正式发布阿里巴巴贡献重要特性 —— 支持 Java Agent 插桩
云原生
我不会编程55515 小时前
Python Cookbook-5.1 对字典排序
开发语言·数据结构·python
李少兄15 小时前
Unirest:优雅的Java HTTP客户端库
java·开发语言·http
云上艺旅15 小时前
K8S学习之基础七十四:部署在线书店bookinfo
学习·云原生·容器·kubernetes
无名之逆15 小时前
Rust 开发提效神器:lombok-macros 宏库
服务器·开发语言·前端·数据库·后端·python·rust
似水এ᭄往昔15 小时前
【C语言】文件操作
c语言·开发语言
啊喜拔牙16 小时前
1. hadoop 集群的常用命令
java·大数据·开发语言·python·scala
xixixin_16 小时前
为什么 js 对象中引用本地图片需要写 require 或 import
开发语言·前端·javascript
W_chuanqi16 小时前
安装 Microsoft Visual C++ Build Tools
开发语言·c++·microsoft