【无标题】云原生作业六

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

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

    1. LVS 负载均衡群集的 NAT 模式和 DR 模式优势对比

    NAT 模式(网络地址转换模式)
    网络拓扑简单
    在 NAT 模式下,所有进出的流量都要经过负载均衡器(Director Server)。这使得网络拓扑结构相对简单,只需要在负载均衡器上进行相应的配置,就可以实现对后端服务器(Real Server)的负载均衡。例如,企业内部网络中,当有多台服务器提供相同的服务时,只需要在一台负载均衡器上配置 NAT 规则,就可以将客户端的请求转发到合适的后端服务器上,无需对网络架构进行大规模的调整。
    全性较高
    由于客户端的请求和响应都要经过负载均衡器,负载均衡器可以作为一个中间层,对进出的流量进行监控和过滤。可以在负载均衡器上部署防火墙等安全策略,防止外部网络的攻击直接到达后端服务器。例如,阻止恶意 IP 地址的访问,过滤非法的网络数据包等,从而提高整个群集的安全性。
    对后端服务器要求低**
    后端服务器不需要进行特殊的网络配置,它们只需要知道自己的默认网关是负载均衡器即可。这对于一些不支持复杂网络配置的服务器或者老旧服务器来说非常友好。例如,一些运行特定业务的遗留服务器,可能无法进行复杂的网络设置,使用 NAT 模式可以很方便地将它们加入到负载均衡群集中。

    DR 模式(直接路由模式)
    性能优越
    DR 模式中,负载均衡器只负责将客户端的请求转发到合适的后端服务器,而后端服务器处理完请求后直接将响应返回给客户端,无需再经过负载均衡器。这样可以大大减轻负载均衡器的压力,提高整个群集的处理性能。例如,在高并发的 Web 应用场景中,大量的客户端请求和响应数据如果都经过负载均衡器,会导致负载均衡器成为性能瓶颈,而 DR 模式可以有效避免这个问题。
    可扩展性强
    由于 DR 模式下负载均衡器的压力较小,可以轻松地添加更多的后端服务器来扩展群集的处理能力。而且,后端服务器之间的通信相对独立,添加或移除后端服务器对整个群集的影响较小。例如,随着业务的发展,需要增加服务器来应对更多的用户请求,在 DR 模式下只需要将新的服务器加入到群集中,并进行简单的配置即可。
    网络带宽利用率高
    因为响应数据不经过负载均衡器,所以可以充分利用后端服务器的网络带宽。在一些对网络带宽要求较高的应用场景中,如视频流服务、文件下载服务等,DR 模式可以更好地满足需求。例如,在一个视频网站中,大量的视频数据可以直接从后端服务器传输给客户端,而不需要经过负载均衡器的中转,从而提高了网络带宽的利用率。

一台 openEuler 服务器作为负载均衡器(Director Server), IP 地址为 192.168.1.100。

两台 openEuler 服务器作为后端服务器(Real Server),假设 IP 地址分别为 192.168.1.101 和 192.168.1.102

安装 LVS 相关软件

复制代码
yum install ipvsadm -y
  1. 开启 IP 转发功能


    echo "net.ipv4.ip_forward = 0" >> /etc/sysctl.conf

    echo "net.ipv4.conf.all.send_redirects = 0" >> /etc/sysctl.conf

    echo "net.ipv4.conf.default.send_redirects = 0" >> /etc/sysctl.conf

    echo "net.ipv4.conf.ens33.send_redirects = 0" >> /etc/sysctl.conf

  2. 配置虚拟 IP(VIP)

    ip addr add 192.168.1.200/32 dev ens33

  3. 配置 LVS 规则

    ipvsadm -A -t 192.168.1.200:80 -s rr

    ipvsadm -a -t 192.168.1.200:80 -r 192.168.1.101:80 -g

    ipvsadm -a -t 192.168.1.200:80 -r 192.168.1.102:80 -g

后端

  1. 安装 Web 服务(以 Nginx 为例)

    yum install nginx -y

    systemctl start nginx

    systemctl enable nginx

  2. 配置 VIP

    ip addr add 192.168.1.200/32 dev lo

    echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore

    echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce

    echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore

    echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce

相关推荐
小溪学编程28 分钟前
Java InputStream 详解:从基础到实战
java·python·php
雪芽蓝域zzs36 分钟前
第十六节:递归组件实现无限层级折叠侧边栏菜单
开发语言·javascript·ecmascript
神明不懂浪漫1 小时前
【第二章】库、表、增删改查操作
开发语言·数据库·经验分享·笔记
传奇开心果编程1 小时前
【Rust入门知识点学与练】第11课:HashMap 键值对集合
开发语言·学习·rust
yume_sibai1 小时前
03-Rust 函数式编程特性(闭包 + Iterator + Option/Result + 链式调用)
开发语言·后端·rust
奈斯先生Vector2 小时前
AIGC 视频生成实战:用 Kling Video 拆解文生视频、图生视频与完整工作流
开发语言·人工智能·windows·python·aigc·音视频
小玮看世界2 小时前
[Python]螺旋遍历 vs 最短路径:方向控制类算法的“同源异流”
开发语言·python·算法
OPEN-F2 小时前
ROS2系列教程:tf2坐标变换详解(C++/Python)
开发语言·c++·python
XR1234567882 小时前
医院基础网络改造升级选型深度解析
开发语言·网络·php
reasonsummer2 小时前
【办公类-146-05】20260901《一分园、二分园四大教育》(优化版:标题excle+复制AI文字+Python占位符录入)
开发语言·数据库·c#