keepalived mysql监控_MySQL的keepalived高可用监控脚本

MySQL(或者其它服务)的keepalived高可用监控脚本

开发脚本需求 :我们知道,keepalive是基于虚拟ip的存活来判断是否抢占master的机制的,但是如果我们做了MySQL的keepalived的高可用的时候,就要考虑一种情况的发生,那就是如果机器网卡并没有断,二十由于MySQL服务的不稳定,或者人为的误操作,导致的服务关闭,会引起的结果就是,keepalive并不会切换,因为并不是主master的虚拟ip不存在,而是服务已经停止了,这种情况如果不及时切换到backup会导致的问题,大家可想而知,所以在此和大家分享一个监控keepalive主master服务的脚本

实现的功能 :当主master机器(vip所在的机器)服务down了 会关闭自身的keepalive服务,让vip切换到备机,这样服务才能保持可用。大家可以看到,不管用keepalive做什么服务的高可用,只要你把监听的端口号作为监控判断的对象,其实这是一个适用范围特别广泛的脚本,希望大家能尽量写出通用脚本,这样可以提升思维的能力!如果写的有不好的地方请多指正。

1 #!/bin/sh

2 #author feifei

3 #date 20161212

4 #version 1.0

6 #function guard mysql service

7 . /etc/init.d/functions

8 #define var

9 #usage(使用方法)

10 if [ $# -ne 1 ];then

11 echo "usage:sh $0 {tcp_port}"

12 exit 1

13 fi

14 #define var(用netstat是我们进行判断服务是否存活的重要依据,可以基于服务名,或者端口号,建议最好是端口号,因为端口号有唯一性)

15 check=`netstat -lnutp|grep $1|wc -l`

16

17 #check if there is already have a same monitoring exit(守护进程的脚本,必须要判断是否已经存在一个相同的监控,不然导致资源浪费)

18 count=`ps -ef|grep "$0 $1"|grep -v "grep"|wc -l`

19

20 if [ $count -gt 2 ];then

21 echo -e "\nERROR:There is already have a same monitoring!"

22 exit 1

23 fi

24

25 function dmail(){

26 echo "$1-$(hostname):down" >/var/log/$1.log

27 mail -s "$1-$(hostname):down" [email protected]

28 }

29

30 function umail(){

31 echo "$1-switch-success" >/var/log/$1.log

32 mail -s "$1-switch-success" [email protected]

33 }

34

35 #check=`namp 192.168.1.21 $1|grep open|wc -l`(也可以用nmap命令监控一个主机某个端口号是否开启,功能类似nestat和ss)

36 if [ $check -eq 0 ];then

37 echo "$1 is not listening!pls input again!"

38 exit 1

39 else

40 while true

41 do

42 if [ `netstat -lnutp|grep $1|wc -l` -eq 0 ];then

43 echo 0

44 dmail $1

45 /etc/init.d/keepalived stop

46 sleep 5

47 ping -c 2 -W 2 192.168.1.22 &>/dev/null

48 if [ $? -eq 0 ];then

49 echo 1

50 umail $1

51 break

52 else

53 echo "$1-swith-failed" >/var/log/$1.log

54 mail -s "$1-switch-failed" [email protected]

55 break

56 fi

57 fi

58 done

59 fi

脚本简单说明 :

1.运行的条件:当前监控的端口号必须是监听状态,如果没启用会提示先启动服务

2.实现原理:实现监控的原理是用while循环+if判断

3.失败的处理机制:如果有心思的同学可以尝试,在服务down了之后,加上一些处理措施,比如说,让服务尝试重启,如果重启成功继续监控,不成功则关闭keepalive

4.事件的记录:每一个过程的成功与否,都要记录到相应的文件,如果有必要,进行邮件通知(一个好的运维,要懂得进行必须的故障记录,方便日后总结)

ps.不是特别难的脚本,重在梳理过程,如果有不妥的地方希望大家指正。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值