Redis叢集故障轉移的方法:1、從所有的從節點裡面選出一個新的主;2、選出的新主會執行slaveof no one把自己的狀態從slave變成master; 3.撤銷已下線的主節點的槽指派,並把這些槽位重新指派給自己。
Redis叢集故障轉移的方法:
一、故障偵測
# - 1.叢集中所有節點都會向其它節點發送PING訊息,當在規定的時間內,沒有收到對應的PONG訊息,就把此節點標記為疑似下線;
- 2.在發送的PING訊息裡面,會帶著當前集群和節點的信息;通過這種方式,即可檢測節點的存活,又能維護集群信息的統一性,不過有一定
的時延;
- 3.疑似下線不是真的下線,只有滿足以下條件才是真的下線;
- 主節點並且是被分配了slot槽位的主節點中有超過一半的節點都認為此節點疑似下線,才能真的下線;
- 4.當某個節點透過訊息得知有一個節點的疑似下線投票已經超過集群一半的時候,會發送一個標識此節點下線的廣播訊息;
- 5.其它節點收到某節點已經下線的廣播後,把自己內部的集群維護訊息也修改為節點已下線狀態。
二、故障轉移
- 1.從所有的從節點裡面選出一個新的主;
- 2.選出的新主會執行slaveof no one把自己的狀態從slave變成master;
- 3.撤銷已下線的主節點的槽指派,並把這些槽位重新指派給自己;
- 4.新的主節點向集群廣播一條PONG訊息,透過這個訊息告訴所有集群節點:自己已經變成了主節點,接管了原來的主節點;
- 5.新的主節點開始接收和處理與自己插槽相關的命令請求。
相關學習推薦:redis影片教學
以上是Redis集群故障轉移如何實現的詳細內容。更多資訊請關注PHP中文網其他相關文章!