MySQL的keepalived高可用监控脚本

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 #email [email protected]
 5 #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] </var/log/$1.log
28 }
29
30 function umail(){
31  echo "$1-switch-success" >/var/log/$1.log
32  mail -s "$1-switch-success" [email protected] </var/log/$1.log
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] </var/log/$1.log
55          break
56      fi
57  fi
58 done
59 fi

脚本简单说明 :

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

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

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

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

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

时间: 2024-09-30 19:56:14

MySQL的keepalived高可用监控脚本的相关文章

mysql主从+keepalived高可用

两台机子,一台是192.168.223.143做主,一台是192.168.223.144主从,现在要实现的需求是两台机子做主从+高可用,VIP这里设置为192.168.223.100 首先在两台机子上装好mysql,做好主从复制, 参考http://pc1990.blog.51cto.com/10541224/1687171 二.在两台机子上安装keepalived tar  –zxvf  keepalived-1.2.7.tar.gz cd keepalived-1.2.7 yum insta

【转载】MySQL和Keepalived高可用双主复制

服务器主机IP和虚拟浮动IP配置 RealServer A 192.168.75.133 RealServer B 192.168.75.134 VIP A 192.168.75.110 VIP B 192.168.75.111 安装KeepAlived软件包 [[email protected] ~]# yum install keepalived =========================================================================

Linux的shell脚本LvsDR模式启动脚本和模拟keepalived高可用脚本

一.脚本运行前模拟环境 DR:server1:172.25.29.1 ipvsadm  keepalived RS:server2:172.25.29.2 arptables_jf   httpd RS:server3:172.25.29.3 arptables_jf   httpd DR:server4:172.25.29.4 ipvsadm  keepalived 使用脚本前先安装好server1.server2.server3的软件,做好httpd的后端访问页面 二.LVS_DR模式脚本介

MySQL集群(四)之keepalived实现mysql双主高可用

前面大家介绍了主从.主主复制以及他们的中间件mysql-proxy的使用,这一篇给大家介绍的是keepalived的搭建与使用! 一.keepalived简介 1.1.keepalived介绍 Keepalived起初是为LVS设计的,专门用来监控集群系统中各个服务节点的状态,它根据TCP/IP参考模型的第三.第四层.第五层交换机制检测每个服务节点的状态,如果某个服务器节点出现异常, 或者工作出现故障,Keepalived将检测到,并将出现的故障的服务器节点从集群系统中剔除,这些工作全部是自动完

jumpserver+MySQL主从-Nginx+Keepalived高可用

环境: 系统: CentOS 7.3 关闭 selinux 和防火墙 一.安装jumpserver 官网安装文档:http://docs.jumpserver.org/zh/docs/step_by_step.html 1 setenforce 0 # 可以设置配置文件永久关闭 2 systemctl stop iptables.service 3 4 5 修改字符集,否则可能报 input/output error的问题,因为日志里打印了中文 6 localedef -c -f UTF-8 -

mysql主主复制及keepalived高可用群集

mysql主主复制及keepalived高可用 Keepalived+mysql双主来实现MySQL-HA,我们必须保证两台MySQL数据库的数据完全一样,基本思路是两台MySQL互为主从关系(双主),通过Keepalived配置虚拟IP,实现当其中的一台MySQL数据库宕机后,应用能够自动切换到另外一台MySQL数据库,保证系统的高可用. 实验基本拓扑: 主主同步就是两台机器互为主从的关系,在任何一台机器上写入都会同步. 在master1 mysql主配置文件中添加下面参数(/etc/my.c

Keepalived+Mysql互为主从高可用安装配置

Keepalived+Mysql互为主从高可用安装配置环境介绍:keepalived_vip=192.168.1.210    (写虚拟ip)mysql_master01      eth0:192.168.1.211  eth1:172.20.27.211 (1核1G)mysql_master02      eth0:192.168.1.212  eth1:172.20.27.212 (1核1G) 1.安装mysql数据库(所有节点安装)  //此处省略安装mysql服务2.编辑my.cnf配

mysql主主+keepalived高可用

mysql主主+keepalived高可用 1.两台主机 host: db1 外网:11.0.0.51 内网:172.16.1.51 db2 外网:11.0.0.52 内网:172.16.1.52 2.两台主机分别下载mysql cd /usr/chris/src wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.16-linux-glibc2.12-x86_64.tar.gz useradd mysql -u 550 -s

基于keepalived搭建mysql双主高可用

目录 概述 环境准备 keepalived搭建 mysql搭建 mysql双主搭建 mysql双主高可用搭建 概述 传统(不借助中间件)的数据库主从搭建,如果主节点挂掉了,从节点只能读取无法写入,只能把人肉去恢复故障,既不想引用中间件也不想人肉恢复故障,可以折中选择双主方案,本文将介绍通过keepalived搭建mysql双主方案. 本例中vip为:172.16.0.169,  两台mysql实例服务器ip分别为:172.16.0.1和172.16.0.2 转帖请注明来源: https://my