玩转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调度器配置
- 为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
配置如下信息:
查看配置:
- 调整内核参数,关闭重定向
[root@localhost network-scripts]# vim /etc/sysctl.conf
[root@localhost network-scripts]# sysctl -p
编辑内容如下:
- 安装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
执行安装过程如下:
- 为虚拟服务器添加节点,采用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
- 保存LVS负载分配策略。
[root@localhost yum.repos.d]# ipvsadm-save >/etc/sysconfig/ipvsadm
(二)、节点服务器配置
- 为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
- 配置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
- 将共享存储挂载到本地的/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共享存储服务器配置
- 为ens33配置IP地址,创建共享文件夹/opt/wwwroot
配置IP地址同上省略,
创建共享文件夹
[root@localhost ~]# mkdir -p /opt/wwwroot
- 修改共享配置文件,发布共享文件夹
[root@localhost ~]# vim /etc/exports
添加如下内容:
- 启动nfs服务及相关服务
[root@localhost ~]# systemctl enable nfs
[root@localhost ~]# systemctl enable rpcbind
(四)、验证
-
未配置NFS共享存储时,客户端访问分别显示两个节点服务器的内容。
web1内容如下:
web2内容如下:
-
配置完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负载均衡群集的主要内容,如果未能解决你的问题,请参考以下文章