维护keepalived与mysql漂移脚本

环境拓扑

 

chengAlived

#!/bin/bash
function checkModelone(){
	echo "重新进行获取"
	wget 192.168.158.147:3306 -O mysql
	echo "获取成功"
	echo "进行判断..."
	grep "5.7.17" mysql > /dev/null
	if [ $? -eq 0 ]; then
	       	echo "mysql正在运行..."
		echo "检查keepalived进程是否存在..."
		ps aux|grep keepalived |grep -v grep
		if [ $? -ne 0 ]
		then
			echo "keepalived进程丢失"
			echo "准备重启keepalived..."
			/usr/local/keepalived/sbin/keepalived -f /etc/keepalived/keepalived.conf
                        echo "重启成功"
		else
			echo "keepalived 正在运行..." 
		fi
	else
		echo "mysql端口异常..."
		echo "准备杀除keepalived进程进行漂移"
		chengkill keepalived
		echo "漂移作业完毕"
	fi
}

function checkModeltwo(){
   checkModelone
}
while [ true ]; do
	/bin/sleep 10
	if [ -d "mysql" ];then
		touch mysql
	else
		if [ -s ./mysql ]; then
			echo "文件不为空"
			checkModelone
			du -sh mysql
		else
			echo "文件为空"
			checkModeltwo
		fi
	fi
done

运行规则:nohup ./chengAlived.sh &

说明+:

运行后, 会判断是否存在名字为"mysql"的文件, 否则新建, 把wget后的内容写进这个文件, 通过3306端口使用grep判断mysql版本号, 对keepalived漂移进行管理.

讲解+

第一台机器mysql主机+vip

第二台机器keepalived+lvs

启动脚本

nohup ./chengAlive.sh &

 进程

ps aux | grep chengAlive.sh 


[root@localhost test]# ps aux | grep chengAlive.sh 
root      16407  0.0  0.1 113128  1412 pts/1    S    15:27   0:00 /bin/bash ./chengAlive.sh
root      16410  0.0  0.1 112676  1008 pts/1    R+   15:27   0:00 grep --color=auto chengAlive.sh

 日志(mysql处于正常开启状态)

模拟宕机

 假如mysql挂掉了(这是158.147)

然后keepalived查看脚本日志信息(158.149)

 

上面,,由于mysql已挂, kill掉keepalived, 实现漂移操作

抢占模拟

 如果mysql重新启动(158.147)

 

再看keepalive(158.149)脚本日志

重新自动启动keepalive.抢占成功.

完毕.

原文地址:https://www.cnblogs.com/chenglee/p/8722720.html