0
点赞
收藏
分享

微信扫一扫

五月学习之keepalived 友情提示

eelq 2023-05-15 阅读 107

1、场景需求

在上一节的故障演练中,尤其是后端服务的中断后,显示"拒绝连接"报错信息,这种情况在我们工作中很少出现的,我们一般在遇到这种情况,用户访问位置页面的时候不会直接显示404,而是给一个友好的页面或者跳转到其他页面。

接下来,我们就采用keepalived默认的参数来实现同样的效果:如果后端服务访问生效,跳转到一个"看外星人"的页面。

五月学习之keepalived 友情提示_TCP

主机资源:

因为主机资源限制,我们这里将失败页面存放到两台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地址端口必须一致

举报

相关推荐

0 条评论