Redis大乱探------哨兵(二)
生活随笔
收集整理的這篇文章主要介紹了
Redis大乱探------哨兵(二)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2019獨角獸企業重金招聘Python工程師標準>>>
1.1前言
????? ? 前一篇文章中,我們分析了主從復制的原理,但是在該模式下,一旦主節點由于故障無法提供服務,需要人工干預才能將從節點變為主節點,因此該模式不是高可用的。欣慰的是,Redis從2.8開始正式提供哨兵架構來解決這個問題。
1.2哨兵
????? ? 當主節點出現故障時,哨兵(Redis Sentinel)模式下能自動完成故障發現和故障轉移,并通知應用方,從而實現真正的高可用。
1.2.1故障發現
- Sentinel節點每隔1秒鐘向主節點發動ping命令判斷其存活狀態,當主節點在down-after-milliseconds時間內沒有正確的響應,則Sentinel將此主節點置為“主觀下線”。主觀即當前Sentinel節點單方面認為主節點不可用,并沒有得到其他Sentinel節點的確認。
- 隨后該Sentinel節點會通過 is-master-down-by-addr命令向其他Sentinel節點進行確認。當確認的Sentinel節點數>=quorum時,則該Sentinel節點認定該主節點“客觀下線”。
- 當判定主節點為客觀下線時,需要選取一個Sentinel節點作為領導者來處理故障轉移工作。Redis使用了Raft算法實現領導者選舉。大致選舉流程如下:首先Sentinel節點確認主節點主觀下線時,會像其他Sentinel節點發送is-master-down-by-addr命令,要求將自己設置為領導者。然后收到該命令的Sentinel節點,如果沒有同意過其他Sentinel節點的命令,則同意該請求,否則拒絕。最后如果該Sentinel節點如果收到超過一半的意向同意,則成為領導者,如果本回合沒有選出領導者,則開啟下一回合。
1.2.2故障轉移
????? ? 步驟如下:
- 在從節點列表中選出一個節點作為新的主節點(1.先過濾掉不健康節點。2.選擇從節點優先級最高的從節點,最在則返回,否則繼續第三步。3.選擇復制偏移量最大的節點,即復制最完整的節點,不存在則繼續第四步。4.選擇runid最小的從節點)。
- 將上面選出來的從節點執行slaveof no one? 命令,讓其成為主節點。
- Sentinel領導者節點向剩余的從節點發送命令,讓他們成為新主節點的從節點。
1.3總結
????? ? 哨兵機制能夠自動完成故障發現和故障轉移,有效的解決了Redis的高可用問題。
????????????
?
轉載于:https://my.oschina.net/wuchanghao/blog/1824112
總結
以上是生活随笔為你收集整理的Redis大乱探------哨兵(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: windows系统tomcat日志输出至
- 下一篇: linux cmake编译源码,linu