哈喽大家好,我是咸鱼
今天我们来看一个关于 Keepalived
检测脚本无法执行的问题
一位粉丝后台私信我,说他部署的 keepalived
集群 vrrp_script
模块中的脚本执行失败了,但是手动执行这个脚本却没有任何问题
这个问题也是咸鱼第一次遇到,为了能让更多的小伙伴以后不会踩这个坑,便有了今天这篇文章
前言
在正式开始之前,我们先来简单复习一下 Keepalived
中的资源检测功能
vrrp_script 模块
在 Keepalived
中,vrrp_script
模块是用于定义和配置虚拟路由冗余协议(VRRP)的自定义脚本检查,这个模块专门用于对集群中的服务资源进行监控
与 vrrp_script
模块搭配使用的是 track_script
模块,这个模块中可以引入监控脚本、命令组合、Shell 语句来实现对服务资源的监控
track_script
通过调用vrrp_script
,可以灵活地定义需要监测的服务或资源,例如网络连接、服务状态、系统资源等当监测到故障时,Keepalived 可以触发状态转移,将主节点切换到备用节点,以确保服务的高可用性
- 通过
killall -l
命令监测
killall
命令会发送一个信号给进程,以信号 0 为例,如果发现进程关闭或者异常,将返回状态码 1,反之进程运行正常,状态码返回0
vrrp_script nginx_check {
script "killall -0 nginx"
interval 2
}
track_script {
nginx_check
}
- 通过端口监测
检测端口的运行状态也是较常见的监控方式
vrrp_script nginx_check {
script "