W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
在sentinel進(jìn)行切換時(shí)還會(huì)自動(dòng)調(diào)用一個(gè)腳本(如果設(shè)置的話),做一些自動(dòng)化操作,比如如果我們需要一個(gè)虛擬IP永遠(yuǎn)飄在Master上(這個(gè)VIP可不是被應(yīng)用用來(lái)連接redis 的,用過(guò)的人都知道連接redis sentinel并不依賴于VIP的),那么可以在sentinel配置文件中配置:
sentinel client-reconfig-script mymaster /redis/script/failover.sh
在發(fā)生主從切換,Master發(fā)生變化時(shí),該腳本會(huì)被sentinel進(jìn)行調(diào)用,調(diào)用的參數(shù)如其配置文件所描述的:
# The following arguments are passed to the script:
#
# <master-name> <role> <state> <from-ip> <from-port> <to-ip> <to-port>
#
# <state> is currently always "failover"
# <role> is either "leader" or "observer"
#
# The arguments from-ip, from-port, to-ip, to-port are used to communicate
# the old address of the master and the new address of the elected slave
# (now a master).
因此,我們可以在failover.sh中進(jìn)行判斷,如果該腳本所運(yùn)行的主機(jī)IP等于新的Master IP,那么將VIP加上,如果不等于,則該機(jī)器為Slave,就去掉VIP。通過(guò)這種方式進(jìn)行VIP的切換:
#!/bin/sh
_DEBUG="on"
DEBUGFILE=/tmp/sentinel_failover.log
VIP='192.168.2.120'
MASTERIP=${6}
MASK='24'
IFACE='eno33554960'
MYIP=$(ip -4 -o addr show dev ${IFACE}| grep -v secondary| awk '{split($4,a,"/");print a[1]}')
DEBUG () {
if [ "$_DEBUG" = "on" ]; then
echo `$@` >> ${DEBUGFILE}
fi
}
set -e
DEBUG date
DEBUG echo $@
DEBUG echo "Master: ${MASTERIP} My IP: ${MYIP}"
if [ ${MASTERIP} = ${MYIP} ]; then
if [ $(ip addr show ${IFACE} | grep ${VIP} | wc -l) = 0 ]; then
/sbin/ip addr add ${VIP}/${MASK} dev ${IFACE}
DEBUG date
DEBUG echo "/sbin/ip addr add ${VIP}/${MASK} dev ${IFACE}"
DEBUG date
DEBUG echo "IP Arp cleaning: /usr/sbin/arping -q -f -c 1 -A ${VIP} -I ${IFACE}"
/usr/sbin/arping -q -f -c 1 -A ${VIP} -I ${IFACE}
DEBUG date
DEBUG echo "IP Failover finished!"
fi
exit 0
else
if [ $(ip addr show ${IFACE} | grep ${VIP} | wc -l) != 0 ]; then
/sbin/ip addr del ${VIP}/${MASK} dev ${IFACE}
DEBUG echo "/sbin/ip addr del ${VIP}/${MASK} dev ${IFACE}"
fi
exit 0
fi
exit 1
最早這樣的用法是一個(gè)日本人寫(xiě)的blog,請(qǐng)參見(jiàn):http://blog.youyo.info/blog/2014/05/24/redis-cluster/
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: