当前位置: 首页 > news >正文

维护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

相关文章:

  • 题目分类
  • linux命令学习系列-用户切换su,sudo
  • 2013-04-24
  • XVIII Open Cup named after E.V. Pankratiev. Eastern Grand Prix
  • Mac下 Java开发配置MyEclipse对应的Tomcat/对Tomcat文件授权
  • 代码审查
  • 网站性能优化之黄金守则
  • Java并发系列学习(三)
  • axis1.4 websercice服务客户端开发
  • TCp
  • 黑马Java学习笔记之-----Java常见异常总结 (转)
  • ALVIX无人机来了,拥有环形收纳可变形旋翼
  • 错误信息原因[置顶] Android开发错误汇总(转)
  • Python中cPickle
  • SQL Server系列之 在发布复制模式下移动日志文件
  • ----------
  • Google 是如何开发 Web 框架的
  • 【EOS】Cleos基础
  • 【个人向】《HTTP图解》阅后小结
  • ➹使用webpack配置多页面应用(MPA)
  • CAP理论的例子讲解
  • extjs4学习之配置
  • Git的一些常用操作
  • JavaScript 基础知识 - 入门篇(一)
  • leetcode46 Permutation 排列组合
  • Linux CTF 逆向入门
  • tab.js分享及浏览器兼容性问题汇总
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 阿里云应用高可用服务公测发布
  • 程序员该如何有效的找工作?
  • 如何设计一个微型分布式架构?
  • 正则表达式
  • 最简单的无缝轮播
  • 容器镜像
  • ​ ​Redis(五)主从复制:主从模式介绍、配置、拓扑(一主一从结构、一主多从结构、树形主从结构)、原理(复制过程、​​​​​​​数据同步psync)、总结
  • ​LeetCode解法汇总1276. 不浪费原料的汉堡制作方案
  • ​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • (70min)字节暑假实习二面(已挂)
  • (python)数据结构---字典
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (附源码)计算机毕业设计SSM在线影视购票系统
  • (附源码)计算机毕业设计大学生兼职系统
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (原創) 是否该学PetShop将Model和BLL分开? (.NET) (N-Tier) (PetShop) (OO)
  • **PHP二维数组遍历时同时赋值
  • .bat批处理(十一):替换字符串中包含百分号%的子串
  • .htaccess配置常用技巧
  • .net core 连接数据库,通过数据库生成Modell
  • .net连接oracle数据库
  • .NET面试题解析(11)-SQL语言基础及数据库基本原理
  • .NET项目中存在多个web.config文件时的加载顺序
  • .NET与 java通用的3DES加密解密方法
  • [100天算法】-不同路径 III(day 73)