開發(fā)腳本需求:我們知道,keepalive是基于虛擬ip的存活來判斷是否搶占master的機制的,但是如果我們做了MySQL的keepalived的高可用的時候,就要考慮一種情況的發(fā)生,那就是如果機器網(wǎng)卡并沒有斷,二十由于MySQL服務的不穩(wěn)定,或者人為的誤操作,導致的服務關(guān)閉,會引起的結(jié)果就是,keepalive并不會切換,因為并不是主master的虛擬ip不存在,而是服務已經(jīng)停止了,這種情況如果不及時切換到backup會導致的問題,大家可想而知,所以在此和大家分享一個監(jiān)控keepalive主master服務的腳本
實現(xiàn)的功能:當主master機器(vip所在的機器)服務down了 會關(guān)閉自身的keepalive服務,讓vip切換到備機,這樣服務才能保持可用。大家可以看到,不管用keepalive做什么服務的高可用,只要你把監(jiān)聽的端口號作為監(jiān)控判斷的對象,其實這是一個適用范圍特別廣泛的腳本,希望大家能盡量寫出通用腳本,這樣可以提升思維的能力!如果寫的有不好的地方請多指正。
1 #!/bin/sh 2 #author feifei 3 #date 20161212 4 #email eeeee@qq.com 5 #version 1.0 6 #function guard mysql service 7 . /etc/init.d/functions 8 #define var 9 #usage(使用方法)10 if [ $# -ne 1 ];then11 echo "usage:sh $0 {tcp_port}"12 exit 113 fi14 #define var(用netstat是我們進行判斷服務是否存活的重要依據(jù),可以基于服務名,或者端口號,建議最好是端口號,因為端口號有唯一性)15 check=`netstat -lnutp|grep $1|wc -l`16 17 #check if there is already have a same monit