【Redis】16.Redis哨兵
哨兵簡介
主機”宕機“后我們要做的事情
- 將宕機的master下線
- 找一個slave作為master
- 通知所有的slave連接新的master
- 啟動新的master與slave
- 全量復制*N+部分復制 *N
但是這伴隨著以下問題
- 誰來確認master宕機了
- 找一個主?怎么找法
- 修改配置后,原始的主恢復了怎么辦?
哨兵
哨兵(sentinel) 是一個分布式系統,用于對主從結構中的每臺服務器進行監控,當出現故障時通過投票機制選擇新的master并將所有slave連接到新的master
哨兵的作用
- 監控
不斷地檢查master和slave是否正常運行
master存活檢測、master與slave運行情況檢測 - 通知(提醒)
當被監控地服務器出現問題時,向其他(哨兵間,客戶端)發送通知 - 自動故障轉移
斷開master與slave連接,選取一個slave作為master,將其他slave連接到新的master,并告知客戶端新的服務器地址
注意:哨兵也是一臺redis服務器,只是不提供數據服務,通常哨兵配置數量為單數
啟用哨兵模式
- 配置一拖二的主從結構
- 配置三個哨兵(配置相同,端口不同)
查看sentinel.conf - 啟動哨兵
redis-sentinel sentinel-端口號.conf
哨兵工作原理
主從切換
- 哨兵在進行主從切換過程中經歷三個階段
階段一:監控階段
sentinel會向master要狀態,然后根據master中的slave信息向slave要狀態,也會向其他的sentinel要狀態,而且,sentinel之間會組建一個對應的頻道,在里面發布信息、訂閱信息、收信息、同步信息。這就是監控階段的工作過程。
階段二:通知階段
維護一個長期的信息對等階段。sentinel偵聽master、slave的狀態,并在sentinel之間交互,維護信息對等。
階段三:故障轉移階段
只有一個sentinel偵測到一個master掛了時,將其狀態記為S_DOWN(主觀下線),然后,將該主機掛了的消息在sentinel內網中交互,然后,其他的sentinel得到該消息,就也去看該主機是否真的掛了,如果超過半數的sentinel認為master掛了,那就是真的掛了(客觀下線 ),狀態記為O_DOWN。一旦進入客觀下線狀態,就開始清理隊伍。
選擇領頭哨兵
處置階段
總結:
- 監控 ——》同步信息
- 通知——》保持聯通
- 故障轉移
發現問題-》競選負責人-》優選新master-》新master上任,其他slave切換master,原master作為slave故障回復后連接
總結
以上是生活随笔為你收集整理的【Redis】16.Redis哨兵的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Redis】15.Redis主从复制
- 下一篇: 【Redis】17.Cluster集群结