Redis Sentinel應用Raft協議來解決分佈式系統一致性問題,即選舉redis master的問題。我們在使用redis哨兵架構時,經常強調哨兵節點數量需要設置爲3或5或7。假定哨兵節點數量爲N,那麼quorum票數就設置爲N/2+1 。
實際的業務情況有很多變化,部署規模也不等,在設計Redis哨兵高可用架構時如果沒留意其中的一些細節,很容易進坑。所以我結合實際工作經驗設計出下面這樣一道題目,通過具體使用場景結合提問的形式,促進大家思考和掌握其中蘊含的知識。
題目
假定有4個主機,分別各部署一個redis和一個哨兵,組成4節點的哨兵架構。
那麼:
1、如果quorum設置爲1
- 網絡通信均正常的條件下,可以正常選舉master嗎?
- 網絡通信均正常的條件下,如果此時有2個哨兵進程當機了,還能正常選舉出新的redis master嗎?
- 如果我們的4個哨兵是這樣部署的,A機房2個,B機房2個,兩個機房使用專線連通,如果這時專線中斷了,請問A、B機房中哨兵會表現出什麼樣的選舉行爲?
2、如果quorum設置爲2
- 網絡通信均正常的條件下,可以正常選舉master嗎?
- 網絡通信均正常的條件下,如果此時有2個哨兵進程當機了,還能正常選舉出新的redis master嗎?
- 如果我們的4個哨兵是這樣部署的,A機房2個,B機房2個,兩個機房使用專線連通,如果這時專線中斷了,請問A、B機房中哨兵會表現出什麼樣的選舉行爲?
- 如果我們的4個哨兵是這樣部署的,A機房1個,B機房3個,兩個機房使用專線連通,如果這時專線中斷了,請問A、B機房中哨兵會表現出什麼樣的選舉行爲和結果?
3、如果quorum設置爲3
- 網絡通信均正常的條件下,可以正常選舉master嗎?
- 網絡通信均正常的條件下,如果此時有2個哨兵進程當機了,還能正常選舉出新的redis master嗎?
- 如果我們的4個哨兵是這樣部署的,A機房2個,B機房2個,兩個機房使用專線連通,如果這時專線中斷了,請問A、B機房中哨兵會表現出什麼樣的選舉行爲?
- 如果我們的4個哨兵是這樣部署的,A機房1個,B機房3個,兩個機房使用專線連通,如果這時專線中斷了,請問A、B機房中哨兵會表現出什麼樣的選舉行爲和結果?
答案
晚幾天再公佈,給大家留些自己思考和交流答案的時間。