首页 » keepalived » 正文

keepalived的一些简单脚本调用

抢占模式下通过keepalived启停关联服务

#启停服务,check_service.sh脚本文件前面添加如下内容
#!/bin/bash
VIP=10.0.200.100
hostname -I|grep ${VIP} >> /dev/null
if [ $? -eq 0 ]; then
  if [ $(ps -C frpc --no-header | wc -l) -eq 0 ]; then
    systemctl start frpc

  fi
else
  systemctl stop frpc
fi

#这个脚本检测本机是否为MASTER节点,如果是,则启动frpc服务,这个针对于抢占模式有用

非抢占模式下通过keepalived启停关联服务

#非抢占模式下要想实现VIP漂移需要在检测脚本中添加停止keepalived服务的命令,当VIP发生漂移的时候keepalived服务已经停止,此时无法通过keepalived服务来进行检测,需要利用到计划任务

#keepalived检测脚本
if [ $(ps -C mysqld --no-header | wc -l) -eq 0 ]; then
systemctl stop keepalived
fi

#当VIP漂移后,此时keepalived服务已经停止
#1、创建一个关联服务停止脚本
[root@CentOS-Manager-master ~]# cat /usr/bin/check_frpc.sh
#!/bin/bash
VIP=10.0.200.100
hostname -I|grep ${VIP} >> /dev/null
if [ ! $? -eq 0 ];then
  if [ ! $(ps -C frpc --no-header | wc -l) -eq 0 ]; then
    systemctl stop frpc
  fi
fi

#2、创建一个延时计划任务延时脚本
#这个脚本是每三秒钟执行一下/usr/bin/check_frpc.sh这个脚本,此时只需要计划任务中添加每分钟执行该脚本的计划任务即可每三秒自动检测一次
#合并起来就是,每三秒检测一下本机是否是MASTER节点,如果不是,则停止关联服务,如果是则不进行任何操作
[root@CentOS-Manager-master ~]# cat /usr/bin/every_3_s.sh
#!/bin/bash
step=3
for (( i = 0; i < 60; i=(i+step) )); do
  /usr/bin/check_frpc.sh
  sleep ${step}
done
exit 0

#3、添加计划,每分钟执行一次,有的系统可能需要用* * * * *来表示每分钟执行,根据具体系统而定
[root@CentOS-Manager-master ~]# crontab -l
*/1 * * * * /usr/bin/every_3_s.sh >> /dev/null  2>&1

Linux计划任务每x秒执行

#方法一:
[root@CentOS-Manager-master ~]# cat /usr/bin/every_3_s.sh
#!/bin/bash
step=3
for (( i = 0; i < 60; i=(i+step) )); do
  /usr/bin/check_frpc.sh
  sleep ${step}
done
exit 0

#方法二:
*/1 * * * * /usr/bin/check_frpc.sh
*/1 * * * * sleep 10; /usr/bin/check_frpc.sh
*/1 * * * * sleep 20; /usr/bin/check_frpc.sh
*/1 * * * * sleep 30; /usr/bin/check_frpc.sh
*/1 * * * * sleep 40; /usr/bin/check_frpc.sh
*/1 * * * * sleep 50; /usr/bin/check_frpc.sh

发表评论