LSV负载均衡

发布于:2025-07-16 ⋅ 阅读:(18) ⋅ 点赞:(0)

什么是访问压力?--负载

两个客户同时访问一个服务器,会导致服务器崩溃

调度---Cluster集群(为了解决一个特定问题,多台服务器组合使用形成的一个系统)

LSV

1、集群Cluster

LB:负载均衡,有多个主机组成,每个主机只承担一部分访问
HA:高可用SPOF
HPC:高性能计算
每一台主机的实现的功能没有差别,数据和代码都一样;
不会因为一台主机挂了,其他都挂了

2、分布式

由一个人计算变成四个人计算;
一个业务被拆分成多个子业务,功能有差别,代码和数据也不一样;
分布式每个节点都 很重要,如果一个节点跨了,这个业务可能就会失败
LSV运行原理(目前的负载只是3层的)
LSV目前只能到端口阶段
调度器究竟把流量给哪个REALSERVER的这个过程才叫做算法
  • VS:调度器
  • RS:真正的主机
  • CIP:客户端的IP
  • VIP:调度器连接外网的IP
  • DIP:调度器连接真正主机的IP
  • RIP:真正的主机的IP

LSV的操作流程(自我理解):客户端发起流量请求,(通过外网)申请首先到达LVS,调度器则调度到合适的realserver(通过内网),然后流量再通过原路返回至LVS,最后返回到客户机

 后端建议最多挂10台,否则调度器受不了


LSV实训

环境:1个客户端,1个调度器,2个主机

client:172.25.254.111

LSV: 需要两个网卡,在设置里新增网卡,选择仅主机模式

分别配置两个IP地址,一个是VIP(172.25.254.100),一个是DIP(192.168.254.100)

RS1&RS2

也要在设置中选择仅主机模式,作为内网的RealServer1&2

 运行脚本,配置IP地址

RS1:192.168.254.10 RS2:192.168.254.20


操作:

1、检测LVS是否能访问RS1&2

RS1&2下载httpd

关闭防火墙

 

确保能够访问上,RS1&2的任务就完成了

2、 IPVSADM

dnf install ipvsadm -y

集群服务管理

集群服务的RS管理

可以通过help来查看相关命令

 简单解释

-D是删除一条部署

-d删除的则是后端的realserver

-E是修改

-a是增加后端的realserver

-C则是清空所有

-p 360   调度时间,在时间内就始终访问这个主机,时间过期了就重新调度一台主机
-Z是清除计数器

ipvsadm -a|e   -t|u|f     service-address    -r realserver-address  [-g|i|m]     [-w weight]

这个命令语句可以理解为加一个对外开放的业务

这里80是端口号,-s则是负载均衡调度算法,-t是指使用TCP协议

watch -n1 ipvsadm -Ln可以实时检测到部署的变化(增删查改) 

检测实例:

 

ipvsadm -A -f 66 -s rr火墙标记可以起到一个标识作用,流量可以找到原先的位置(之后还会详细讲解)

之前的命令行中-s之前的IP地址都是lvs的VIP

之后的IP地址则是,调度器想要流量流向的realserver

举例:ipvsadm -a -t 172.25.254.100:80 -r 192.168.254.10:80 -m


ipvsadm的备份与恢复

备份到其中,即使策略被完全清洗,也可以通过备份找齐

ipvsadm这个策略并不是永久存在的,此时开启服务是会报错的,因为此时没有本地的策略存在

设置本地的策略存放地

此时已经让服务能够开机时加载策略,永久保存


NAT模式

在这个模式中做了两次地址转换

  • 客户端发送访问请求,请求数据包中含有请求来源(cip),访问目标地址(VIP)访问目标端口
  • 9000port
  • VS服务器接收到访问请求做DNAT把请求数据包中的目的地由VIP换成RSRIP和相应端口
  • RS1相应请求,发送响应数据包,包中的相应保温为数据来源(RIP1)响应目标(CIP)相应端口 (9000port
  • VS服务器接收到响应数据包,改变包中的数据来源(RIP1-->VIP,响应目标端口(9000-->80
  • VS服务器把修改过报文的响应数据包回传给客户端
  • lvsNAT模式接收和返回客户端数据包时都要经过lvs的调度机,所以lvs的调度机容易阻塞

rr轮循,就是RS1上访问一次,再到RS2上访问一次

-m NAT模式

 此时客户端还不能访问,80端口访问不了

可能是防火墙的问题?

LVS的开启了防火墙,要关闭防火墙,否则请求还没到调度器就被挡掉了

生效了,但是还有问题,什么访问记录都没有,在RS向LVS给Client返回流量的这个过程中又出现问题了

调度器可以正常访问RS,但是RS的数据却返回不了,那就是RS上出了问题

检查之后发现是网关不对,不是仅主机的网关,要修改网关

 RS2同理可得,修改网关

此时再次测试,client成功访问到流量

 

NAT模式缺点:不论是进来还是回来,都要经过调度器,对调度器来说压力太大,不停压包解包


DR模式 

想要弥补NAT的缺点,采用DR模式,流量返回时不用LVS了,直接直连到client,得到Client的访问请求,在这其中变化的始终是MAC地址

IP不变的情况下,mac地址发生了变化,前提必须要同一个网段,不能跨网段

RS上的VIP只接受,不发送,只能是LVS上的VIP才可以既接受又发送

原理分析:

用户发送请求到服务器上,请求的数据报文(源IP是CIP,目标IP是VIP)到达内核空间。

由于DS和RS在同一个网络中,所以是通过二层数据链路层来传输。

服务器内核空间判断数据包的目标IP是本机IP,此时IPVS比对数据包请求的服务是否为集群服务,若是,重新封装数据包,修改源MAC地址为DIP的MAC地址,目标MAC地址为RIP的MAC地址,源IP地址与目标IP地址没有改变,然后将数据包发送给Real Server.

RS发现请求报文的MAC地址是自己的MAC地址,就接收此报文,重新封装报文(源IP地址为VIP,目标IP为CIP),将响应报文通过lo接口传送给eth0网卡然后向外发出。

RS直接将响应报文传送到客户端。

(个人理解)主要还是看mac地址的变化,在将流量返回到client的时候是RS将源IP地址伪装成DIP,client才能接受的,实际上流量在返回的阶段并未经过LSV


DR实验

环境:1台Client、1台服务器、1台DR-LVS,两台RS

这个实验LVS不需要双网卡了,将原先的LVS改成这个实验中的服务器router

DR-LVS(仅主机模式):

这里设置了仅主机, 还要设置DR-LVS的DIP,本来可以用回环接口的方式来写,但是LVS要能够传输和接受,/32是不能向外通信的,所以不能用这个方法。

直接修改

192.168.254.220 就是DR-LVS的VIP

网关要改成与服务器直连接口的网段192.168.254.100

测试是否能访问,访问成功

RS都需要VIP

RS1:

RS2同上

回环接口一定要/32,虚拟网卡本身并不存在

nmcli connection reload

nmcli connection up lo

 

此时RS1&2的VIP也写好了        lvs,RS1&2(必须都是仅主机的在一个网段)

错误示例:

如果lo没有显示IP地址,有可能是之前就有

lo--  是不生效的,就把原来生效的删掉

后面加lo的Mac地址,删掉就能通

router路由器:

用不上eth0和eth1的网关了,删掉就行

又之前的LVS改变过来,是没有路由策略的,加上路由策略

 开启地址伪装

操作之后如果报错,可以看看是不是这里出现了问题,没改成yes 

在这个配置文件里写

Client:

client通过路由器访问,所以网关要设成和路由器一样的,才能直连

操作和之前一样

...

nmcli connection reload

 检查网关,确保互通

 到这里,环境就配置完成了

千万不要忘记关闭防火墙(血的教训)


arp广播只进不出

对VIP实施相应管控,RS的VIP只接受不发送,所以要在RS1&2上进行配置

先全局再网卡

1响应外部      2(响应本机内部之间的网络接口)响应内部

RS1&2都要做lo不对外响应

到这里可以写ipvsadm策略了

直连路由-g

测试是否可以达到流量互通

对于1来抓包

client发生请求   路由器直连LVS的接口(路由器的mac)到lvs  到lvs做了mac地址的更新 cip变到VIP(来源mac地址变了,变成LVS的mac地址)

RS1把mac地址还原成router和LVS的mac地址回到了client

实际是没有经过lvs的

VIP不对外响应,只做包的封装


TUN模式(调度器和RS不在一个网段才用)

交换机挂了,后面全部用不了,除非跨vlan,否则一般不用,稳定性较差


fullnet模式(了解就行)

内核并不支持


网站公告

今日签到

点亮在社区的每一天
去签到