W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
其實相對于VIP的切換,動態(tài)修改持久化則是比較常見的一個需求,一般在一主多從多Sentinel的HA環(huán)境中,為了性能常常在Master上關閉持久化,而在Slave上開啟持久化,但是如果發(fā)生切換就必須有人工干預才能實現(xiàn)這個功能??梢岳胏lient-reconfig-script自動化該進程,無需人工守護,我們就以RDB的動態(tài)控制為例: Sentinel配置文件如下:
sentinel client-reconfig-script mymaster /redis/script/rdbctl.sh
rdbctl.sh源代碼:
#!/bin/bash
_DEBUG="on"
DEBUGFILE="/smsred/redis-3.0.4/log/sentinel_failover.log"
MASTERIP=${6}
MASTERPORT=${7}
SLAVEIP=${4}
SLAVEPORT=${5}
MASK='24'
IFACE='bond0'
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 "===Begin Failover==="
#If Master
if [ ${MASTERIP} = ${MYIP} ]; then
#Disable RDB
redis-cli -h ${MYIP} -p ${MASTERPORT} -a c1m2b3c4 config set save ""
DEBUG echo ${MYIP}
DEBUG echo "Disable Master RDB:" ${MYIP} ${MASTERPORT}
DEBUG echo "===End Failover==="
exit 0
#Or Slave
else
echo "test5" >> $DEBUGFILE
redis-cli -h ${MYIP} -p ${SLAVEPORT} -a c1m2b3c4 config set save "900 1 300 10 60 100000000"
DEBUG echo ${MYIP}
DEBUG echo "Enable Slave RDB:" ${MYIP} ${SLAVEPORT}
DEBUG echo "===End Failover==="
exit 0
fi
exit 1
原理和VIP切換一節(jié)基本一致,不再贅述。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: