基于 CentOS 7 构建 LVS-DR 群集


文章目录

  • 前言
    • 1、LVS集群
    • 2、DR模式的工作流程图
  • 一、LVS DR模式的配置
  • 二、配置步骤
  • 总结


前言

什么是LVS集群?DR模式?

1、LVS集群

LVS采用的是合入内核模块,先把对于nginx来说要稳定很多,性能和稳定都在一定层度上占据优势,可以做四层负载均衡
LVS通过工作于内核的IPVS模块来实现,主要在netfilter的INPUT链上,此外,还包含了一个用户态工具,ipvdadm,用于用户负载集群定义和集群服务管理

2、DR模式的工作流程图

流程图:
基于 CentOS 7 构建 LVS-DR 群集_第1张图片
1、客户端发送访问请求,LVS调度器接受访问请求了以后;
2、报文则会在PREROUTING链中进行自我检查,检查并确认IP是本机,于是再将报文发送到INPUT链,ipvs内核模块确定请求的服务是我们这个线路配置的LVS集群服务,然后再根据自己设定的用户交互均匀策略,在进行选择后端后台RS,然后再将目标MAC地址修改RIP的MAC地址。
因为调度器和后端服务器RS在同一个网段,因此直接互通,将请求发送给选择的RS处理
3、响应完之后再发送给客户端


一、LVS DR模式的配置

![在这里插入图片描述](https://img-blog.csdnimg.cn/d284f0b0ec984a298147ce6524529648.png

我这里准备了四个虚拟机,用第一个作为客户端,第二个作为lvs 第三个和第四个作为web服务端
环境准备:
1、在lvs中安装ipvsadm

[root@slave ~]# yum install -y ipvsadm

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

[root@coco ~]# yum install httpd -y

二、配置步骤

1、改变lvs主机的IP地址

[root@lvs ~]# ifconfig ens33:200 192.168.11.200/24

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

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

2、配置web服务器

[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
基于 CentOS 7 构建 LVS-DR 群集_第2张图片
没问题的话,直接进行下一步!

3、给web服务器配置VIP

[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服务器的路由

[root@web1 ~]# route  add -host 192.168.11.200 dev lo

5、配置ARP路由

[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

[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步骤

[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 ~]# 

基于 CentOS 7 构建 LVS-DR 群集_第3张图片

成功Curl通了!


总结

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

注意事项: 1、至少要保证有三台虚拟机,因为客户端,LVS服务器,web服务器都需要存在,所以至少一个一台;
                   2、为了防止中间出现,ping百度能通,ping其他不通,curl不通,ping得通的情况,上去第一步就可以把所有的虚拟机的防火墙临时关闭;
                   3、当出现子网掩码没设置对的时候,在设置一遍,就可以将原本的覆盖掉了。

你可能感兴趣的:(centos,lvs,linux)