第六次作业

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

LVS-NAT模式的优势

配置简单:NAT模式的配置相对容易,无需复杂的网络设置,适合初学者和小型网络环境。

网络架构灵活:由于使用了NAT技术,LVS调度器和后端服务器可以位于不同的网段,网络架构更加灵活。

安全性高:后端服务器的IP地址被隐藏,客户端无法直接访问后端服务器,增加了系统的安全性。

支持端口映射:可以将一个端口的流量映射到多个后端服务器的不同端口,增加了配置的灵活性。

操作系统兼容性好:后端服务器可以使用任意操作系统,无需特殊支持

LVS-DR模式的优势

高性能:请求报文经过调度器,但响应报文直接从后端服务器返回客户端,减少了调度器的负载,提高了整体性能。

低延迟:由于响应报文不经过调度器,减少了数据传输的路径,降低了延迟。

可扩展性强:适合大规模集群和高并发场景,能够有效分散网络流量。

无需地址转换:不修改报文的源IP和目标IP地址,减少了地址转换带来的性能开销。

支持公网IP:后端服务器可以使用公网IP,便于直接从互联网访问。

适用场景:

NAT模式适合小型集群或对安全性要求较高的场景,例如小型企业内部的负载均衡。

DR模式更适合高并发、大规模的负载均衡需求,例如大型网站或数据中心。

性能:

NAT模式在高负载下容易成为性能瓶颈,而DR模式可以有效分散流量,提高性能。

配置复杂度:

NAT模式配置简单,适合初学者;DR模式配置相对复杂,但性能更优。

二.总结表格:

以下是LVS负载均衡群集的NAT模式和DR模式的优势对比:

LVS-NAT模式适合小型集群或对配置简单性要求较高的场景,其优点在于配置容易、网络架构灵活,但性能和扩展性受限。

LVS-DR模式适合高并发、大规模的负载均衡需求,其优点在于高性能、低延迟和良好的可扩展性,但配置相对复杂,且对网络架构有一定要求。

基于 openEuler 构建 LVS-DR 集群

1、环境准备

准备好下面四台台服务器

2、Web服务器配置

在两台RS上安装并配置nginx服务:

复制代码
[root@openEuler-2 ~]# yum install nginx -y
 
[root@openEuler-2 ~]# echo "this is test page!(ip:`hostname -I`)" > /usr/share/nginx/html/index.html
 
[root@openEuler-2 ~]# systemctl enable --now nginx
 
[root@openEuler-2 ~]# curl localhost
this is test page!(ip:192.168.121.12 )
 
# 第二台RS配置同上

3、添加VIP的相关配置

在两台RS和DS上:

复制代码
[root@openEuler-1 ~]# nmcli con add type dummy ifname dummy1 ipv4.method manual ipv4.addresses 192.168.121.10/32
Connection 'dummy-dummy1' (7a44b435-72fc-4aa4-afb2-28bf52a1b5b4) successfully added.
[root@openEuler-1 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:12:dd:13 brd ff:ff:ff:ff:ff:ff
    inet 192.168.121.11/24 brd 192.168.121.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe12:dd13/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
3: dummy1: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
    link/ether 82:81:c6:9e:a9:f6 brd ff:ff:ff:ff:ff:ff
    inet 192.168.121.10/32 scope global noprefixroute dummy1
       valid_lft forever preferred_lft forever
    inet6 fe80::1837:14b2:ae95:267a/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
 
# 剩下二台RS配置同上

4、配置arp抑制

在两台RS上:

复制代码
[root@openEuler-2 ~]# cat >> /etc/sysctl.conf << EOF
> net.ipv4.conf.all.arp_ignore = 1
> net.ipv4.conf.all.arp_announce = 2
> net.ipv4.conf.dummy1.arp_ignore = 1
> net.ipv4.conf.dummy1.arp_announce = 2
> EOF
 
# 使其生效
[root@openEuler-2 ~]# sysctl -p
 
# 第二台RS配置同上

5、LVS配置

在DS上:

复制代码
[root@openEuler-1 ~]# yum install ipvsadm -y
[root@openEuler-1 ~]# ipvsadm -At 192.168.121.10:80 -s rr
[root@openEuler-1 ~]# ipvsadm -at 192.168.121.10:80 -r 192.168.121.12:80 -g
[root@openEuler-1 ~]# ipvsadm -at 192.168.121.10:80 -r 192.168.121.13:80 -g
[root@openEuler-1 ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.121.10:80 rr
  -> 192.168.121.12:80            Route   1      0          0
  -> 192.168.121.13:80            Route   1      0          0

相关参数说明

ipvsadm --help

-A 添加虚拟服务器

-t 设置群集地址(VIP,Virtual IP)

-s 指定负载调度算法

-a 添加真实服务器

-d 删除真实服务器

-r 指定真实服务器(Real Server)的地址

-m 使用NAT模式;-g、-i分别对应DR、TUN模式

-w 为节点服务器设置权重,默认为1

6、测试

在Client上:

复制代码
[root@localhost ~]# for ((i=1;i<10;i++)); do curl 192.168.121.10; done
this is test page!(ip:192.168.121.13 )
this is test page!(ip:192.168.121.12 )
this is test page!(ip:192.168.121.13 )
this is test page!(ip:192.168.121.12 )
this is test page!(ip:192.168.121.13 )
this is test page!(ip:192.168.121.12 )
this is test page!(ip:192.168.121.13 )
this is test page!(ip:192.168.121.12 )
this is test page!(ip:192.168.121.13 )
相关推荐
夏天想6 分钟前
vant4+vue3上传一个pdf文件并实现pdf的预览。使用插件pdf.js
开发语言·javascript·pdf·vant
惊鸿一博8 分钟前
c++ &&(通用引用)和&(左值引用)区别
开发语言·c++
企鹅不耐热.11 分钟前
Scala基础知识6
开发语言·后端·scala
A林玖12 分钟前
【计算机相关学习】R语言
开发语言·学习·r语言
暮雨哀尘38 分钟前
微信小程序开发:开发实践
开发语言·算法·微信小程序·小程序·notepad++·性能·技术选型
冷琅辞1 小时前
Go语言的嵌入式网络
开发语言·后端·golang
Cool----代购系统API1 小时前
跨境速卖通与 API 接口数据分析
开发语言·python
User_芊芊君子1 小时前
【Java】类和对象
java·开发语言
向宇it1 小时前
【零基础入门unity游戏开发——2D篇】2D 游戏场景地形编辑器——TileMap的使用介绍
开发语言·游戏·unity·c#·编辑器·游戏引擎
DARLING Zero two♡1 小时前
C++类间的 “接力棒“ 传递:继承(上)
开发语言·c++·继承·里氏替换原则