基于 CentOS 7 构建 LVS-DR 群集


文章目录


前言

什么是LVS集群?DR模式?

1、LVS集群

LVS采用的是合入内核模块,先把对于nginx来说要稳定很多,性能和稳定都在一定层度上占据优势,可以做四层负载均衡

LVS通过工作于内核的IPVS模块来实现,主要在netfilter的INPUT链上,此外,还包含了一个用户态工具,ipvdadm,用于用户负载集群定义和集群服务管理

2、DR模式的工作流程图

流程图:

1、客户端发送访问请求,LVS调度器接受访问请求了以后;

2、报文则会在PREROUTING链中进行自我检查,检查并确认IP是本机,于是再将报文发送到INPUT链,ipvs内核模块确定请求的服务是我们这个线路配置的LVS集群服务,然后再根据自己设定的用户交互均匀策略,在进行选择后端后台RS,然后再将目标MAC地址修改RIP的MAC地址。
因为调度器和后端服务器RS在同一个网段,因此直接互通,将请求发送给选择的RS处理

3、响应完之后再发送给客户端


一、LVS DR模式的配置

我这里准备了四个虚拟机,用第一个作为客户端,第二个作为lvs 第三个和第四个作为web服务端

环境准备:

1、在lvs中安装ipvsadm

css 复制代码
[root@slave ~]# yum install -y ipvsadm

2、在两台web服务器中安装httpd

css 复制代码
[root@coco ~]# yum install httpd -y

二、配置步骤

1、改变lvs主机的IP地址

css 复制代码
[root@lvs ~]# ifconfig ens33:200 192.168.11.200/24

配置好了以后要用其他主机ping一下,看看是否联通,我这里用第一台主机ping过 是没问题的

问题1:如果ping通但是不可以curl通,就说明防火墙配置enforcing改为disabled,如果还是不行,就将四台虚拟机的防火墙关闭,这样一定就行,不要永久关闭,stop临时关闭一下就好了

2、配置web服务器

css 复制代码
[root@web1 ~]# echo "hello web test ,ip is `hostname -I`." > /var/www/html/index.html
[root@web1 ~]# systemctl start httpd


[root@web2 ~]# echo "hello web test ,ip is `hostname -I`." > /var/www/html/index.html
[root@web2 ~]# systemctl start httpd

将echo代码写入html文档中,两台web服务器都一样的步骤

配置完以后,我们同样用客户端主机去ping

没问题的话,直接进行下一步!

3、给web服务器配置VIP

css 复制代码
[root@web1 ~]# ifconfig lo:200 192.168.11.200 netmask 255.255.255.255 up
[root@web2 ~]# ifconfig lo:200 192.168.11.200 netmask 255.255.255.255 up

注意注意:①这里一定一定要把掩码设置为32位,否则后面会出现curl不通的情况,
注意注意:②这里会存在一个小问题,但是我不知道是不是我的Xshell问题,当你配置VIP的时候,Xshell会自动闪退,自动断开远程连接,这个时候,不要惊慌,直接在原本的虚拟机里面敲入代码,而且反应还很迅速。

4、配置web服务器的路由

css 复制代码
[root@web1 ~]# route  add -host 192.168.11.200 dev lo

5、配置ARP路由

css 复制代码
[root@web1 ~]# echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore 
[root@web1 ~]# echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
[root@web1 ~]# echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@web1 ~]# echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce

[root@web2 ~]# echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore 
[root@web2 ~]# echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
[root@web2 ~]# echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@web2 ~]# echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce

注意:这里的all可以等量换为你自己的接口,如果你是eth接口,就换成eth,如果你是ens33接口,就换成ens33,我这里添加了all,本质上来说是🆗的

5、给lvs配置两台RS

css 复制代码
[root@lvs~]#ipvsadm -A -t 192.168.79.110:80 -s rr
[root@lvs ~]#ipvsadm -a -t 192.168.11.200:80 -r 192.168.11.130:80 -g
[root@lvs ~]#ipvsadm -a -t 192.168.11.200:80 -r 192.168.11.131:80 -g
-A 添加带有选项的虚拟服务
-t 代表着服务地址为主机地址
-a 添加服务
-g 配置默认网关

6、curl步骤

css 复制代码
[root@coco ~]# for ((i=1;i<=10;i++));
> do
> curl 192.168.11.200
> done
hello web test ,ip is 192.168.11.130 .
hello web test ,ip is 192.168.11.132 .
hello web test ,ip is 192.168.11.130 .
hello web test ,ip is 192.168.11.132 .
hello web test ,ip is 192.168.11.130 .
hello web test ,ip is 192.168.11.132 .
hello web test ,ip is 192.168.11.130 .
hello web test ,ip is 192.168.11.132 .
hello web test ,ip is 192.168.11.130 .
hello web test ,ip is 192.168.11.132 .
[root@coco ~]# 

成功Curl通了!


总结

例如,以上就是LVS DR模式的搭建,简单来说就等于是一个客户端通过lvs服务器访问web服务器的,那么这中间你要保证网段联通,保证curl通。中间断断续续的代码很少,但是暴露出的问题却有很多,大部分我都把我自己的问题写上去了,要是有其他小问题,可以评论区call我。

注意事项: 1、至少要保证有三台虚拟机,因为客户端,LVS服务器,web服务器都需要存在,所以至少一个一台;

2、为了防止中间出现,ping百度能通,ping其他不通,curl不通,ping得通的情况,上去第一步就可以把所有的虚拟机的防火墙临时关闭;

3、当出现子网掩码没设置对的时候,在设置一遍,就可以将原本的覆盖掉了。

相关推荐
Abladol-aj44 分钟前
并发和并行的基础知识
java·linux·windows
JunLan~5 小时前
Rocky Linux 系统安装/部署 Docker
linux·docker·容器
方竞6 小时前
Linux空口抓包方法
linux·空口抓包
海岛日记7 小时前
centos一键卸载docker脚本
linux·docker·centos
AttackingLin8 小时前
2024强网杯--babyheap house of apple2解法
linux·开发语言·python
贰十六8 小时前
笔记:Centos Nginx Jdk Mysql OpenOffce KkFile Minio安装部署
笔记·nginx·centos
学Linux的语莫9 小时前
Ansible使用简介和基础使用
linux·运维·服务器·nginx·云计算·ansible
踏雪Vernon9 小时前
[OpenHarmony5.0][Docker][环境]OpenHarmony5.0 Docker编译环境镜像下载以及使用方式
linux·docker·容器·harmonyos
学Linux的语莫9 小时前
搭建服务器VPN,Linux客户端连接WireGuard,Windows客户端连接WireGuard
linux·运维·服务器