一、lvs(Linux virtual server)运行原理
1.1lvs简介
1.2lvs集群的类型
1.2.1nat模式

1.客户端发送访问请求,请求数据包中含有请求来源(cip),访问目标地址(VIP)访问目标端口(9000port)
2.VS服务器接收到访问请求做DNAT把请求数据包中的目的地由VIP换成RS的RIP和相应端口
3.RS1相应请求,发送响应数据包,包中的相应保温为数据来源(RIP1)响应目标(CIP)相应端口 (9000port)
4.VS服务器接收到响应数据包,改变包中的数据来源(RIP1-->VIP),响应目标端口(9000-->80)
5.VS服务器把修改过报文的响应数据包回传给客户端
6.lvs的NAT模式接收和返回客户端数据包时都要经过lvs的调度机,所以lvs的调度机容易阻塞
客户请求到达vip后进入PREROUTING,在没有ipvs的时候因该进入本机INPUT,当IPVS存在后访问请求在通过PREROUTING后被ipvs结果并作nat转发
1.2.2DR模式

1.2.3DR模式的特点
二、lvs的调度算法
2.1lvs调度算法类型
2.1.1lvs静态调度算法
2.1.2lvs动态调度算法
三、环境配置(DR模式)
五台rhel9的克隆机
3.1
【lvs】两个网卡(NAT和仅主机模式)
vmset.sh eth0 172.25.254.100 lvs.lee.org
vmset.sh eth1 192.168.0.10 lvs.lee.org
lvs中要去打开内核路由功能,实现网络互联
vim /etc/sysysctl.conf中添加net.ipv4.ip_forward=1
确认打开
【webserver1】仅主机模式
vmset.sh eth0 192.168.0.10 webserver1.lee.org
下载并启动httpd
在/etc/NetworkManager/system-connections/eth0.nmconnection 中查看是否一致并查看网关
【webserver2】仅主机模式
vmset.sh eth0 192.168.0.20 webserver2.lee.org
下载并启动httpd
在/etc/NetworkManager/system-connections/eth0.nmconnection 中查看是否一致并查看网关
测试:
3.2
【client】配置
vmset.sh eth0 172.25.254.200 client.lee.org
【route】配置 双网卡(仅主机和NAT)
vmset.sh eth0 172.25.255.100
vmset.sh eth1 192.168.0.100


【webserver1】
【webserver2】

【lvs】
删除ip
启动eth1
查看网关
测试:
四、防火墙标签解决轮询错误
4.1防火墙标记解决轮询调度问题
[root@lvs ~]# ipvsadm -A -f 6666 -s rr
[root@lvs ~]# ipvsadm -a -f 6666 -r 192.168.0.101 -g
[root@lvs ~]# ipvsadm -a -f 6666 -r 192.168.0.102 -g
测试:
[root@client ~]# curl http://192.168.0.200;curl -k https://192.168.0.200
web1 - 192.168.0.10
web1 - 192.168.0.10
4.2lvs持久链接
解决方法
[root@LVS ~]# iptables -t mangle -A PREROUTING -d 192.168.0.200 -p tcp -m multiport --dports 80,443 -j MARK --set-mark 66
测试:
[root@client ~]# curl 192.168.0.200;curl -k https://192.168.0.200
web2 - 192.168.0.20
web1 - 192.168.0.10
[root@client ~]# curl -k https://192.168.0.200
web2 - 192.168.0.20
[root@client ~]# curl -k https://192.168.0.200
web1 - 192.168.0.10
[root@client ~]# curl -k https://192.168.0.200
web2 - 192.168.0.20
[root@client ~]# curl -k https://192.168.0.200
web1 - 192.168.0.10