LVS集群技术

发布于:2025-07-22 ⋅ 阅读:(13) ⋅ 点赞:(0)

nat模式

数据逻辑:

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的调度机容易阻塞

 注:因为ipvs的作用点是在PREROUTING和INPUT链之间,所以如果在prerouting中设定规则会干扰ipvs的工作。所以在做lvs时要把iptables的火墙策略全清理掉。

nat实战

1、实验环境

Client:单网卡,nat模式

 VS服务器:双网卡,vip为nat模式,ip为仅主机模式

 RS真实服务器:都为单网卡,仅主机模式

主机名 ip vip 角色
Client 172.25.254.111 - 客户端
VS 192.168.0.100 172.25.254.100 LVS服务器
RS1

192.268.0.101,

GW 192.168.0.100

- RS真实服务器1
RS2

192.168.0.102,

GW 192.168.0.100

- RS真实服务器2

2、实验步骤

在RS真实服务器上

开启路由转发

安装http

#在RS1下
[root@localhost ~]# dnf install httpd
[root@localhost ~]# systemctl enable --now httpd
[root@localhost ~]# echo rs1 - 192.168.0.101 >/var/www/html/index.html
[root@localhost ~]# curl 192.168.0.101
RS1 - 192.168.0.101

#在RS2下
[root@localhost ~]# dnf install httpd
[root@localhost ~]# systemctl enable --now httpd
[root@localhost ~]# echo rs1 - 192.168.0.102 >/var/www/html/index.html
[root@localhost ~]# curl 192.168.0.102
RS2 - 192.168.0.102

 检测网关和防火墙

如果防火墙是开的,会导致实验出现问题(80端口访问不到等)所以省事情可以关掉防火墙(也可以在防火墙设置开通端口)

在LVS服务器上

在LVS上对RS进行检测

开启路由转发模式

[root@work-node1 ~]# echo net.ipv4.ip_forward=1 >/etc/sysctl.conf
[root@work-node1 ~]# sysctl -p
net.ipv4.ip_forward = 1

安装ipvsadm

[root@work-node1 ~]# dnf install  ipvsadm

 建立ipvsadm集群

在客户机上测试

出现这个错误最终查出原因就是因为lvs调度服务器和客户机防火墙没关导致这种问题!!!所以一定记得关防火墙。

关后: 

DR模式

Direct Routing,直接路由,LVS默认模式,应用最广泛,通过为请求报文重新封装一个MAC首部进行
转发,源MAC是DIP所在的接口的MAC,目标MAC是某挑选出的RS的RIP所在接口的MAC地址;源IP/PORT,以及目标IP/PORT均保持不变

数据逻辑

1、客户端发送数据帧给vs调度主机帧中内容为客户端IP+客户端的MAC+VIP+VIP的MAC
2、VS调度主机接收到数据帧后把帧中的VIP的MAC该为RS1的MAC,此时帧中的数据为客户端IP+客户端的MAC+VIP+RS1的MAC
3、RS1得到2中的数据包做出响应回传数据包,数据包中的内容为VIP+RS1的MAC+客户端IP+客户端IP的MAC

特点:

1、Director和各RS都配置有VIP

2、确保前端路由器将目标IP为VIP的请求报文发往Director

3、在前端网关做静态绑定VIP和Director的MAC地址

DR实战

1、实验环境

主机名 ip vip 角色
Client 172.25.254.111 - 客户端
router 192.168.0.100 172.25.254.100 路由器
lvs

192.168.0.200

GW 192.168.0.100

lo:192.168.0.100 调度器
RS1

192.268.0.101,

GW 192.168.0.100

lo:192.168.0.100 web服务器1
RS2

192.168.0.102,

GW 192.168.0.100

lo:192.168.0.100 web服务器2

DR中的配置中,router路由器跟nat配置里面的lvs调度服务器一样是双网卡,第二个仅主机;

lvs调度器是单网卡,仅主机 

2、实验步骤

设置回环

RS1

里面id=ens160错了;应该是id=lo 

设定主机lo不对外响应

[root@work-node1 system-connections]# echo net.ipv4.conf.lo.arp_ignore = 1 >>/etc/sysctl.conf
[root@work-node1 system-connections]# echo net.ipv4.conf.lo.arp_announce = 2 >>/etc/sysctl.conf
[root@work-node1 system-connections]# echo net.ipv4.conf.all.arp_ignore = 1 >>/etc/sysctl.conf
[root@work-node1 system-connections]# echo net.ipv4.conf.all.arp_announce = 2  >> /etc/sysctl.conf
[root@work-node1 system-connections]# sysctl -p
net.ipv4.ip_forward = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2

RS2

lvs-DR

网络配置及建立ipvsadm集群

router

双网卡ip配置

开启内核路由功能

 

 测试

当我们在RS中同时开放80和443端口,那么默认控制是分开轮询的,这样我们就出 现了一个轮询错乱的问题,当第一次访问80被轮询到RS1后,下次访问443仍然可能会被轮询到RS1上。

 解决方法:安装mod_ssl并重启httpd

了解内容

除了以上两种集群方式以外还有TUN模式和fullnet模式,读者感兴趣可以查阅了解


网站公告

今日签到

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