【无标题】云原生作业六

  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

相关推荐
Dxy123931021617 分钟前
Python线程锁:为什么多线程会“打架“,以及怎么解决
开发语言·前端·python
guygg8829 分钟前
人行走作用下板的振动响应 MATLAB 仿真
开发语言·matlab
小二·1 小时前
Next.js 15 全栈开发实战
开发语言·javascript·ecmascript
fox_lht1 小时前
15.3.改进我们之前的输入、输出项目
开发语言·后端·学习·rust
java1234_小锋1 小时前
LangChain4j 开发Java Agent智能体- 多模态支持
java·开发语言·langchain4j
凡人叶枫1 小时前
Effective C++ 条款23:宁以 non-member、non-friend 替换 member 函数
linux·开发语言·c++·嵌入式开发
张忠琳1 小时前
【Go 1.26.4】Golang Channel 深度解析
开发语言·后端·golang
盈建云系统1 小时前
B2B产品展示网站怎么做?从产品目录到询盘表单,企业获客页面搭建流程
开发语言·网站搭建·开发网站
不会C语言的男孩1 小时前
Linux 系统编程 · 第 4 章:文件属性与元数据
linux·c语言·开发语言
kernelcraft1 小时前
Boto3:Python 操作 AWS 的官方 SDK
开发语言·python·其他·aws