这一节,我们从 场景需求、需求分析、关键点分析、操作实践、实践小结 五个方面来学习
1、场景需求
对于应用层服务的检测我们可以基于http的方式,但是我们keepalived的高可用场景可不仅仅是应用层服务,还有其他层服务,最常见的就是传输层的服务,那么接下来我们的实验需求就是,基于keepalived的TCP检测机制,来实现后端服务的状态检测效果。
2、需求分析
为了满足上面的场景需求,我们需要通过以下几个步骤来完成整个动作
1 配置TCP检测功能
2 效果检查
3、关键点分析
1 配置TCP检测功能
我们需要在real_server配置段中,采用TCP_CHECK功能
2 效果检查
将后端服务进行重启,测试curl访问VIP效果
4、操作实践
1 配置HTTP检测功能
两台keepalived修改配置内容完全一致
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
}
}
}
注意:
只需要 在每个real_server中添加 TCP_CHECK 属性即可
这里的检测ip和port都使用real_server的,其他属性我们仅用一个连接超时即可。
两台keepalived重启服务
systemctl restart keepalived
2 效果检查
正常效果检查
查看当前的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
模拟后端服务故障
停止后端RS1的nginx服务
[root@lvs-rs1 ~]# systemctl stop nginx
查看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
-> 192.168.8.17:80 Route 1 0 0
结果显示:
后端RS1主机自动被移出规则范围
查看当前的web效果
~]# for i in {1..10}; do curl 192.168.8.100;done
nginx-RS2
nginx-RS2
...
nginx-RS2
模拟后端服务恢复
恢复后端RS1的nginx服务
[root@lvs-rs1 ~]# systemctl start nginx
查看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
-> 192.168.8.16:80 Route 1 0 0
-> 192.168.8.17:80 Route 1 0 0
结果显示:
后端RS1主机自动被添加到规则范围
查看当前的web效果
~]# for i in {1..10}; do curl 192.168.8.100;done
nginx-RS2
nginx-RS1
...
nginx-RS2
nginx-RS1
结果显示:
后端服务可以自由的监控到,然后又恢复正常了
5、实践小结
对于http场景下的服务检测功能,我们可以结合keepalived的TCP检测功能来完成,完成步骤如下:
1 规划服务的检测内容
2 keepalived使用TCP检测配置
3 效果测试
注意:
keepalived在使用TCP检测配置的时候,一定要注意:
保证tcp检测的端口和ip地址必须准确