哨兵是Redis的高可用解決方案:由多個哨兵組成的系統監視主從服務器,可以將下線的主服務器屬下的某個從服
務器升級為新的主服務器,繼續保障運行,
啟動并初始化Sentinel
redis-sentinel /path/to/your/sentinel.conf
Sentinel本質是一個Redis服務器,但是它不會載入RDB or AOF檔案,
...
選舉領頭Sentinel
當主服務器被判斷為客觀下線時,監視這個主服務器的哨兵會進行協商,選舉一個領頭哨兵,由領頭哨兵,對下線
的主服務器執行故障轉移操作,
-
所有監控這個 主 的在線哨兵都有資格成為領頭哨兵,
-
每次進行領頭哨兵選舉之后,不論選舉是否成功,所有哨兵的配置紀元的值會自增一次,配置紀元實際上是一
個計數器,毫無特別,
-
在一個配置紀元里,所有哨兵都有一次將某個哨兵設定為區域領頭哨兵的機會,并且區域領頭一旦設定,在這個配置紀元里不能再更改,
-
每個哨兵都會要求其他哨兵將自己設定為區域領頭,
-
哨兵設定區域領頭的規則是先到先得,
-
如果有某個哨兵被半數以上的哨兵設定成了區域領頭,這個哨兵成為領頭哨兵,
-
在給定時限內,直到選出領頭哨兵為止,
故障轉移
選舉產生領頭哨兵后,領頭執行故障轉移操作:
-
在下線主的從服務器里,挑選一個成為主服務器,
-
讓其他從服務器改為復制新的主服務器,
-
下線的主服務器成為從服務器,
選出新的主服務器
新主服務器是怎樣煉成的
領頭哨兵會按照規則進行過濾:
- 洗掉斷線的從服務器,
- 洗掉最近五秒沒有回復領頭的從服務器,
- 保留資料比較新的從服務器,
- 最后就選擇offset最大,運行ID最小的從服務器,
Reference
《Redis設計與實作》
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/304155.html
標籤:Java
