玩转Linux系统之基于DR模式的LVS负载均衡群集

Posted Friends of the wind

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了玩转Linux系统之基于DR模式的LVS负载均衡群集相关的知识,希望对你有一定的参考价值。

理论

温馨提示:上期讲解的是基于NAT模式的LVS负载均衡群集,本期讲解DR模式,其他相关知识,可看上期内容LVS负载均衡群集理论详解

DR工作模式三大特点

  1、服务器与调度器在同一个子网 
  2、需要每个服务器有公有地址 服务器直接向客户端响应  
  3、不走隧道进行通信

重点

温馨提示:涉及相关知识,我们进行简答回顾。

  1、ARP 地址解析协议(Address Resolution Protocol)
  其基本功能为已知目标设备的IP地址,以广播方式查询目标设备的MAC地址,以保证通信的顺利进行。
  因为,广播只能在同网段工作,所以,负载均衡调度器与节点服务器必须处于同一个子网。
  
  2、内核重定向 调度器接收到客户端发送的请求,经查看发现需要节点服务器提功服务,默认策略是把请求,
  直接指定给节点服务器,而不使用调度器的功能,因此必须关闭调度器的内核重定向功能。
  
  3、节点服务器上阻止更新VIP的mac地址 客户机的请求是以ARP广播形式发送,因此,节点服务器也能收到,它
  会告诉客户机我是你要找的服务器,并告诉自己的Mac地址,造成通信紊乱;
  若只让调度器监听并响应客户机的请求,怎么做? 在节点服务器添加路由信息,让其以VIP的身份进行的数据传输仅限制在本地网络,
  这样就达到了阻止节点服务器更新VIP的mac地址(即让它不回复客户机消息,而调度器发送的请求是本地网络数据,它会进行回复),
  即保障了正常通信,有避免了通信紊乱。

案例

在这里插入图片描述

温馨提示:lvs负载调度器作为群集的访问入口,只负责调度分配,将客户端的请求,根据策略分配给节点服务器,但不作为网关使用,服务器池中的所有节点都各自接入internet,发送给客户机(互联网)的web响应数据包不需要经过lvs负载调度器

推荐步骤:

(一)、LVS调度器配置

  1. 为ens33配置IP地址,为ens33:0配置VIP地址
    编辑脚本内容如下:vim 1.sh
sed -i '2c BOOTPROTO=static'   /etc/sysconfig/network-scripts/ifcfg-ens33
sed -i '17c ONBOOT=yes'   /etc/sysconfig/network-scripts/ifcfg-ens33
sed -i '17a IPADDR=192.168.2.1'  /etc/sysconfig/network-scripts/ifcfg-ens33
ifdown ens33;ifup ens33
systemctl stop firewalld
setenforce 0

为ens33:0配置VIP地址

[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens33:0
[root@localhost network-scripts]# vim ifcfg-ens33:0
激活虚拟网卡
[root@localhost network-scripts]# ifup ifcfg-ens33:0
[root@localhost network-scripts]# ifconfig 

配置如下信息:

在这里插入图片描述
查看配置:
在这里插入图片描述

  1. 调整内核参数,关闭重定向
[root@localhost network-scripts]# vim /etc/sysctl.conf 
[root@localhost network-scripts]# sysctl -p

编辑内容如下:

  1. 安装ipvsadm软件包,为VIP创建虚拟服务器,并设置策略,指定调度器调度算法
先弹出后挂载光盘
[root@localhost network-scripts]# eject 
[root@localhost network-scripts]# mount /dev/cdrom /mnt/
清空yum仓库,并创建一个a.repo的仓库文件
root@localhost network-scripts]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# rm -f *
[root@localhost yum.repos.d]# vim a.repo
编辑内容如下:
[root@localhost yum.repos.d]# vim a.repo
[a]
name=a
baseurl=file:///mnt
gpgcheck=0
执行安装命令
[root@localhost yum.repos.d]#  yum -y install ipvsadm

执行安装过程如下:
在这里插入图片描述

  1. 为虚拟服务器添加节点,采用DR工作模式,权重设置
清除原有策略
[root@localhost yum.repos.d]# ipvsadm -C
添加虚拟服务器VIP指定调度算法
[root@localhost yum.repos.d]# ipvsadm -A -t 192.168.2.254:80 -s rr
添加节点服务器设置负载均衡工作模式、权重
(-g)代表DR模式
[root@localhost yum.repos.d]# ipvsadm -a -t 192.168.2.254:80 -r 192.168.2.2 -g -w 1
[root@localhost yum.repos.d]# ipvsadm -a -t 192.168.2.254:80 -r 192.168.2.3 -g -w 1
  1. 保存LVS负载分配策略。
[root@localhost yum.repos.d]# ipvsadm-save  >/etc/sysconfig/ipvsadm

(二)、节点服务器配置

  1. 为ens33配置IP地址,为lo:0配置VIP地址,并添加路由记录
进入网卡配置文件目录
[root@localhost z]# cd /etc/sysconfig/network-scripts/
复制虚拟网卡loopback配置文件,并编辑内容
[root@localhost network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@localhost network-scripts]# vim ifcfg-lo:0
激活虚拟网卡
[root@localhost network-scripts]# ifup ifcfg-lo:0
查看核对配置信息
[root@localhost network-scripts]# ifconfig
添加路由记录
[root@localhost network-scripts]# route add -host 192.168.2.254 dev lo:0

在这里插入图片描述
在这里插入图片描述
2. 调整内核参数,禁用ARP响应

[root@localhost network-scripts]# vim ifcfg-lo:0
[root@localhost network-scripts]# route add -host 192.168.2.254 dev lo:0
[root@localhost network-scripts]# vim /etc/sysctl.conf 
[root@localhost network-scripts]# sysctl -p
  1. 配置httpd服务,创建测试网页(以yum安装为例)
先弹出后挂载光盘
[root@localhost network-scripts]# eject 
[root@localhost network-scripts]# mount /dev/cdrom /mnt/
清空yum仓库,并创建一个a.repo的仓库文件
root@localhost network-scripts]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# rm -f *
[root@localhost yum.repos.d]# vim a.repo
编辑内容如下:
[root@localhost yum.repos.d]# vim a.repo
[a]
name=a
baseurl=file:///mnt
gpgcheck=0
执行安装命令
[root@localhost yum.repos.d]# yum -y install httpd

执行安装过程如下:
在这里插入图片描述
创建测试网页,并启动httpd服务

[root@localhost yum.repos.d]# vim /var/www/html/index.html

web1如下:
在这里插入图片描述

web2如下:
在这里插入图片描述
启动服务

[root@localhost yum.repos.d]# systemctl start httpd
  1. 将共享存储挂载到本地的/var/www/html目录(注意:所有节点服务器都要挂载)
临时挂载
[root@localhost yum.repos.d]# mount 192.168.2.4:/opt/wwwroot /var/www/html/
永久挂载
[root@localhost yum.repos.d]# vim  /etc/fstab
添加如下内容:
192.168.2.4:/opt/wwwroot  /var/www/html         nfs     defaults,_netdev 0  0

(三)、NFS共享存储服务器配置

  1. 为ens33配置IP地址,创建共享文件夹/opt/wwwroot
    配置IP地址同上省略,
创建共享文件夹
[root@localhost ~]# mkdir -p /opt/wwwroot
  1. 修改共享配置文件,发布共享文件夹
[root@localhost ~]# vim /etc/exports

添加如下内容:
在这里插入图片描述

  1. 启动nfs服务及相关服务
[root@localhost ~]# systemctl enable nfs
[root@localhost ~]# systemctl enable rpcbind

(四)、验证

  1. 未配置NFS共享存储时,客户端访问分别显示两个节点服务器的内容。
    web1内容如下:
    在这里插入图片描述
    web2内容如下:
    在这里插入图片描述

  2. 配置完NFS共享存储时,客户端访问显示的是共享存储同步的相同内容
    在这里插入图片描述


排错

温馨提示:这里是我总结的几个典型错误

1、 未配置NFS共享存储时,客户端访问,只能显示两个节点服务器的其中一个。
在这里插入图片描述

原因①:节点服务器搭建httpd服务时,以不同方式搭建,一个用源码安装,另一个用yum安装。
解决方案:卸载其中一种方式的安装,保持所有节点服务器的httpd服务都以同一方式安装。

原因②:两个节点服务器少了上述步骤的网卡配置。
解决方案:对照教程,逐个对比,添上重启服务即可。

原因③:复合型问题,不显示的节点服务器防火墙未关闭,也没有设置防火墙策略,还有IP地址错误。
在这里插入图片描述
关闭防火墙,发现问题任未解决。查看IP发现IP地址配置错误,和调度器添加的不一样,改正之后

解决方案:关闭防火墙或设置防火墙策略,允许http服务的流量通过;然后,更改为正确ip地址。
发现web2的内容也显示了。
在这里插入图片描述
2、在节点服务器挂载NFS共享存储,报错提示:没有到达主机的路由
在这里插入图片描述
原因:共两个错误,第一错误,NFS共享存储服务器没有关闭防火墙,第二错误,共享目录未创建网页文件。
报错提示变成,mount.nfs:不支持请求的nfs版本或传输协议

解决方案:NFS共享存储服务器关闭防火墙和setenforce,
再检查,NFS共享存储服务器忘记给共享目录创建网页文件了
创建文件
[root@localhost ~]# vim /opt/wwwroot/index.html
再次验证,成功。
如有疑问,可看LVS负载均衡群集视频演示。

以上是关于玩转Linux系统之基于DR模式的LVS负载均衡群集的主要内容,如果未能解决你的问题,请参考以下文章

linux之集群LVS

群集 之 LVS负载均衡(DR模式)

LVS负载均衡群集之构建DR模式,可跟做!!!

LVS负载均衡之DR模式

linux集群系列 --- LVS之负载均衡集群DR实例

企业运维之 Lvs 负载均衡和高可用