1、场景需求
在上一节的故障演练中,尤其是后端服务的中断后,显示”拒绝连接”报错信息,按照我们对负载均衡的理解,这种情况下,当某一个后端主机出现故障,我们就不应该给他传递数据请求了。
接下来我们的实验需求就是,当我们检测到后端主机服务故障的时候,数据信息就不再给他传递了。
2、需求分析
为了满足上面的场景需求,我们需要通过以下几个步骤来完成整个动作
1 配置HTTP检测功能
2 效果检查
3、关键点分析
1 配置HTTP检测功能
我们需要在real_server配置段中,采用HTTP_GET功能
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 {
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.8.17 80 {
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
注意:
只需要 在每个real_server中添加 HTTP_GET 属性即可
两台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的HTTP检测功能来完成,完成步骤如下:
1 规划服务的检测内容
2 keepalived使用HTTP检测配置
3 效果测试
注意:
keepalived在使用HTTP检测配置的时候,一定要注意:
url 中的检测文件路径必须准确
关于状态检测,我们推荐使用status_code的方式,不推荐使用digest方式
服务器租用托管,机房租用托管,主机租用托管,https://www.e1idc.com