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