開發(fā)腳本需求:我們知道,keepalive是基于虛擬ip的存活來判斷是否搶占master的機(jī)制的,但是如果我們做了MySQL的keepalived的高可用的時(shí)候,就要考慮一種情況的發(fā)生,那就是如果機(jī)器網(wǎng)卡并沒有斷,二十由于MySQL服務(wù)的不穩(wěn)定,或者人為的誤操作,導(dǎo)致的服務(wù)關(guān)閉,會(huì)引起的結(jié)果就是,keepalive并不會(huì)切換,因?yàn)椴⒉皇侵鱩aster的虛擬ip不存在,而是服務(wù)已經(jīng)停止了,這種情況如果不及時(shí)切換到backup會(huì)導(dǎo)致的問題,大家可想而知,所以在此和大家分享一個(gè)監(jiān)控keepalive主master服務(wù)的腳本

實(shí)現(xiàn)的功能:當(dāng)主master機(jī)器(vip所在的機(jī)器)服務(wù)down了 會(huì)關(guān)閉自身的keepalive服務(wù),讓vip切換到備機(jī),這樣服務(wù)才能保持可用。大家可以看到,不管用keepalive做什么服務(wù)的高可用,只要你把監(jiān)聽的端口號(hào)作為監(jiān)控判斷的對(duì)象,其實(shí)這是一個(gè)適用范圍特別廣泛的腳本,希望大家能盡量寫出通用腳本,這樣可以提升思維的能力!如果寫的有不好的地方請(qǐng)多指正。

 

iOS培訓(xùn),Swift培訓(xùn),蘋果開發(fā)培訓(xùn),移動(dòng)開發(fā)培訓(xù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ìn)行判斷服務(wù)是否存活的重要依據(jù),可以基于服務(wù)名,或者端口號(hào),建議最好是端口號(hào),因?yàn)槎丝谔?hào)有唯一性)15 check=`netstat -lnutp|grep $1|wc -l`16 17 #check if there is already have a same monit