W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
在一個如下的四節(jié)點環(huán)境中,
如果sentinel monitor的quorum設(shè)置為3,則宕機一臺后再宕機,此時還剩余兩臺,存在兩個sentinel,兩個slave。由于quorum為3,而必須有>=max(quorum, num(sentinels)/2 +1) = max(3,2) = 3個sentinel都同意其中某一個sentinel主持failover,因此此時無sentinel可主持切換,因此測試表明,沒有新的master被選出來,此時只能手動通過slaveof命令設(shè)置主從,并且手動切換(redis、sentinel和都應(yīng)用不用重啟):
首先修改redis:
任意選取剩余的其中一個節(jié)點進行:slaveof no one
其他節(jié)點:slaveof 192.168.145.135 6379
找一個從節(jié)點上的sentinel,進入sentinel:
redis-cli -p 26379
進行主動切換:
sentinel failover mymaster
然后再在兩個sentinel上重新發(fā)現(xiàn)集群:
sentinel reset mymaster
檢查集群狀態(tài)。
如果sentinel monitor的quorum設(shè)置為2,則宕機一臺后再宕機,此時還剩余兩臺,存在兩個sentinel,兩個slave。由于quorum為2,必須有>=max(quorum, num(sentinels)/2 +1)=max(2,2) =2個的sentinel都同意其中某一個sentinel主持failover,因此此時存在sentinel可主持切換,因此測試表明,新的master被選出來。
但是設(shè)置為2有一個危險就是如果出現(xiàn)如下的網(wǎng)絡(luò)隔離狀況:
集群就會腦裂,就會出現(xiàn)兩個master。因此,生產(chǎn)上為了萬無一失,寧可犧牲掉一定的高可用容錯度也要避免腦裂。如果希望兩臺宕機依然可以切換,最好的方案不是降低quorum而是增多sentinel的個數(shù),這個建議也是antirez在stackoverflow中回答一個人的提問時給的建議(http://stackoverflow.com/questions/27605843/redis-sentinel-last-node-doesnt-become-master#)。 如下場景測試:
此時其中兩臺宕機,必須有>=max(quorum, num(sentinels)/2 +1)=max(3,3) =3個的sentinel都同意其中某一個sentinel主持failover,因此此時存在sentinel可主持切換,測試結(jié)果表明此種部署方案可以正常切換。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: