keepalived和nginx和适配
最近研究了一下keepalived绑定虚拟Ip,然后实现集群的方案,发现实现故障转移的模式,只有在keepalived服务整个挂掉后才能实现虚拟IP的漂移,和实际应用的场景不怎么适配,所以把它和nginx结合在一起实现集群高可用,比较有实际意义,因为nginx是无状态的服务,我们几乎很多的应用都是通过nginx来实现的转发和接收请求,一般把nginx当做面向客户的最后一层,如果nginx出现故障,说明整个服务都将不可用了,这时候把虚拟IP切换到另外一个节点就很有必要了
于是在网上看了一下别人提供的方案,实现了三个节点自由切换的效果,而且nginx和keepalived都直接在容器内部执行
keepalived+nginx1 10.135.8.161
keepalived+nginx2 10.135.8.162
keepalived+nginx3 10.135.8.163
虚拟IP:10.135.80.160
首先我们要说的是keepalived的配置文件,下面是161节点的示例
global_defs {
router_id LVS_01
script_user root # 脚本执行用户
enable_script_security # 开启脚本安全权限
}
vrrp_script check_nginx {
#定义健康检查的执行的规则和脚本,每5秒执行一次,发现脚本执行结果为1,则权重降低30,后续继续5秒检测一次,如果脚本再次执行为1,不改变权重,直到脚本执行的结果变成0,才把权重值增加30
script "/bin/bash /opt/check_nginx.sh"