什么是访问压力?--负载
调度---Cluster集群(为了解决一个特定问题,多台服务器组合使用形成的一个系统)
LSV
1、集群Cluster
2、分布式

- 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则是清空所有
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换成RS的RIP和相应端口
- RS1相应请求,发送响应数据包,包中的相应保温为数据来源(RIP1)响应目标(CIP)相应端口 (9000port)
- VS服务器接收到响应数据包,改变包中的数据来源(RIP1-->VIP),响应目标端口(9000-->80)
- VS服务器把修改过报文的响应数据包回传给客户端
- lvs的NAT模式接收和返回客户端数据包时都要经过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模式(了解就行)
内核并不支持