1、场景需求
在上一节的故障演练中,尤其是后端服务的中断后,显示"拒绝连接"报错信息,这种情况在我们工作中很少出现的,我们一般在遇到这种情况,用户访问位置页面的时候不会直接显示404,而是给一个友好的页面或者跳转到其他页面。
接下来,我们就采用keepalived默认的参数来实现同样的效果:如果后端服务访问生效,跳转到一个"看外星人"的页面。
主机资源:
因为主机资源限制,我们这里将失败页面存放到两台keepalived上,使用http服务来展示
我们在2.3.6的实践基础上,在RS1上部署一个http服务,首页内容就显示"看外星人",对外服务端口是80
原因在于:我们的现有负载均衡是基于LVS的DR模型,而DR模型是不支持端口映射功能的。
2、需求分析:
1 要准备维护页面
2 配置失效跳转属性
3 场景测试
3、技术点分析
1 要准备维护页面
1.1 维护web配置
2 配置失效跳转属性
2.1 virtual_server配置
3 场景测试
4、配置详解
为了更好的使用keepalived的负载均衡功能,我们先来学习一下,简单的虚拟服务配置。
配置属性
这里简单的罗列一下常见的虚拟服务配置属性,我们可以直接根据默认的配置内容进行学习。配置样例如下:
virtual_server 10.10.10.2 1358 {
sorry_server 192.168.200.200 1358
}
属性简介
sorry_server设定意外时候的跳转效果
配置样例
virtual_server 192.168.8.100 80 {
sorry_server 192.168.8.17 80
}
注意:
要保证 失败的主机端口和VIP的端口一致。
5、操作实践
1 准备跳转后的页面
1.1 维护web配置
注意:
该部分操作,需要在两台keepalived主机上操作
安装软件
yum install httpd -y
准备维护页面
# kpmaster主机
echo "看外星人kpmaster" > /var/www/html/index.html
# kpslave 主机
echo "看流星kpslave" > /var/www/html/index.html
启动web服务
systemctl start http
检查效果
~]# curl 192.168.8.14
看外星人kpmaster
~]# curl 192.168.8.15
看流星kpslave
2 配置失效跳转属性
注意:
此部分配置,我们需要在两台主机上都进行设置,设置内容一致
2.1 virtual_server配置
编辑配置文件,增加维护页面地址配置
vim /etc/keepalived/keepalived.conf
...
virtual_server 192.168.8.100 80 {
delay_loop 2
lb_algo rr
lb_kind DR
protocol TCP
sorry_server 127.0.0.1 80
real_server 192.168.8.16 80 {
TCP_CHECK {
connect_timeout 3
}
}
real_server 192.168.8.17 80 {
TCP_CHECK {
connect_timeout 3
}
}
}
结果显示
我们只需要在两台主机的keepalived.conf文件中增加上面内容即可
一定要指定,我们这个虚拟主机的配置是针对哪个VIP地址的
重启keepalived服务
systemctl restart keepalived
3 场景测试
正常效果检查
查看当前的web效果
~]# for i in {1..10}; do curl 192.168.8.100;done
nginx-RS2
nginx-RS1
...
nginx-RS2
nginx-RS1
查看当前的ipvsadm规则
]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.8.100:80 rr
-> 192.168.8.16:80 Route 1 0 1
-> 192.168.8.17:80 Route 1 0 2
模拟后端服务故障
停止后端RS的nginx服务
[root@lvs-rs1 ~]# systemctl stop nginx
[root@lvs-rs2 ~]# systemctl stop nginx
kpmaster上检查日志效果
kpslave上检查日志效果
查看ipvsadm规则
[root@kpmaster ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.8.100:80 rr
-> 127.0.0.1:80 Route 1 0 0
结果显示:
后端127.0.0.1主机自动被添加到规则范围
查看当前的web效果,通过浏览器查看
关闭kpmaster的keepalived服务
[root@kpmaster ~]# systemctl stop keepalived.service
在查看浏览器web效果
结果显示:
后端所有应用服务停止后,vip所在主机的sorry_server生效了
在测试sorry_server的时候,最好到非keepalived和RS主机之外的客户端上查看,即浏览器
6、实践小结
对于http场景下的友情提示功能,我们可以结合keepalived的sorry_server功能来完成,完成步骤如下:
1 规划服务的检测内容
2 keepalived使用sorry_server检测配置
3 效果测试
注意:
keepalived在使用sorry_server配置的时候,一定要注意:
我们keepalived实现负载均衡的效果所采取的转发模式,我们案例中采用的是DR模型,所以必须保证tc p检测的端口和VIP地址端口必须一致