项目预期:
后端是Web服务器集群。部署LVS集群DR模式,实现Web服务器的负载均衡。同时部署Keepalived实现LVS集群的高可用
一、环境准备
后端Web服务器集群部署2台Web服务器,IP地址分别为192.168.4.10,192.168.4.11
LVS集群采用DR模式,调度器算法为加权均衡,两台服务器的IP分别为192.168.4.20,192.168.4.21
LVS的VIP设置为192.168.4.100
二、为web1,web2服务器安装httpd,配置web首页。启动服务。预期目标是客户机可以访问这两个页面
yum -y install httpd
echo "web1" > /var/wwwhtml/index.html
systemctl restart httpd
systemctl enable httpd
为了看到轮询效果,我们区分一些首页内容。web2的操作除了首页内容外,其他保持一直
两个web服务器搭建完毕
三、LVSK1部署LVS的DR模式,后端的Web服务器作为真实服务器,VIP为192.168.4.100,预期目标是通过访问VIP,可以访问后端的Web服务,调度器算法为加权轮询。
1、后端web服务器配置VIP(以web1为例)
web1:
cd /etc/sysconfig/network-scripts/ ##进入网卡配置目录
cp ifcfg-lo ifcfg-lo:0 ##复制本地还回口,配置一个名为lo:0的虚拟网卡
vim ifcfg-lo:0 ##更改网卡名,IP地址,网络地址,广播地址都指向虚拟IP。
vim /etc/sysctl.conf ##修改内核配置,目的是当收到广播时,不主动回应。
systemctl restart network
web2服务器,同样操作。
2、LVSK1,配置虚拟网卡,配置虚拟VIP。这里是直接和客户端连接的,所以以物理网卡作为依托配置虚拟网卡和VIP
LVSK1:
cd /etc/sysconfig/network-scripts/
cp ifcfg-eth0 ifcfg-eth0:0
vim ifcfg-eth0:0
修改网卡名称,设备名称,IP地址
systemctl restart network
3、LVSK1,安装ipvsadm,配置LVS虚拟机等相关参数
yum -y install ipvsadm
ipvsadm -A -t 192.168.4.100:80 -s wrr ##创建虚拟服务器 调度器算法为加权轮询
ipvsadm -a -t 192.168.4.100:80 -r 192.168.4.10 -g -w 1 ##添加真实服务器到虚拟服务器,LVS模式为DR模式,权重为1
ipvsadm -a -t 192.168.4.100:80 -r 192.168.4.11 -g -w 2 ##添加真实服务器到虚拟服务器,LVS模式为DR模式,权重为2
ipvsadm-save -n > /etc/sysconfig/ipvsadm ##保存LVS的配置
systemctl restart ipvsadm ##启动ipvsadm服务
阶段目标完成,LVS解决了web集群的负载均衡的问题。
四、阶段问题,这里虽然解决了web的负载均衡的问题,但LVS存在单点故障。这里提出的解决模式是
配置LVS集群,然后使用Keepalived,实现LVS集群的高可用。预期目标,客户端访问VIP可以获取web服务,当一台LVS出现故障的时候,仍然不影响客户端的访问。
1、由于LVS的VIP归到Keepalived管理了。所以我们先把LVSK1的虚拟网卡撤销。删除刚刚做的虚拟网卡的配置文件,重启network即可
2、参考LVSK1的流程,把LVSK2部署完毕。
3、由于转发规则由Keepalived负责,所以清空LVSK1的所有规则
ipvsadm -C
4、LVSK1、LVSK2安装Keepalived。修改配置,启动服务(这里已LVSK1为例)
yum -y install keepalived
vim /etc/keepalived/keepalived.conf
这里的配置解释一下
报警接受邮件地址
报警发送邮件地址
邮件服务器
邮件连接超时时间
虚拟接口名称
状态
使用的网卡
虚拟路由ID
权重
keepalived通信协议秘钥
接下来的,就算是ipvsadm的规则了
虚拟服务器的地址
调度器模式
LVS模式
使用的协议。
后端真实服务器的相关信息,包括权重,使用协议等等
systemctl restart keepalived
LVSK2,同样操作配置keepalived的服务,不同的地方router_id LVS_DEVEL这个地方区别一下。还有权重区别一下,stats这里,就用BACKUP,作为备份
配置如下
都启动服务
五、验证
到目前为止,预期目标是没有实现的。经常第一次排查。我发现
我的LVSK1的keepalived配置文件是有误的。比较奇怪的是服务居然能起来。好的,把错误修正。重启服务。
还是不行。再次排查。192.168.4.100的虚拟IP是可以ping通的。而且登录LVSK1,由于权重问题,VIP的确是在这个服务器上面。然后ipvsadm -Ln查询LVS规则,一切正常。为什么不通呢。访问web1,web2服务,是完全正常的,由此得知,问题出在LVS服务器上。有一个点断掉了。排查防火墙,selinux。那么剩下最后一个,就是NAT转发。查询一下
原来NAT转发没开。那么,两天LVS的服务器,都打开这个转发
sysctl -w net.ipv4.ip_forward=1
要永久生效,请写到配置文件
还是不行,服务也正常启动,所以的细节再检查一次,发现配置文件书写有误
这里的} 有问题,马上更正,并且检查LVSK2
重启服务,再测试
完成~~~~
我们测试一下。模拟故障,看看
由于权重的关系,VIP是在LVSK1上的。我们模拟一下。LVSK1关闭。看看VIP是否会漂移。其他机器访问VIP是否还OK
看看VIP是否在LVSK2
测试完全OK
这里我们总结一下
后端Web服务器集群。使用LVS实现负载均衡,为了解决LVS的单点故障,我们做LVS集群,并且使用Keepalived实现LVS的高可用。这里有个小瑕疵就是LVS是有MASTER和BACKUP的,一主一备。备服务器是闲置的。有点浪费资源
在这里抛砖引玉,可以设置好抢占的,双VIP。然后就可以实现LVS的负载均衡了。