redis集群故障轉移的方法:1、從所有的從節(jié)點里面選舉出一個新的主;2、選舉出的新主會執(zhí)行slaveof no one把自己的狀態(tài)從slave變成master;3、撤銷已下線的主節(jié)點的槽指派,并把這些槽位重新指派給自己。
Redis集群故障轉移的方法:
一、故障檢測
– 1.集群中所有節(jié)點都會向其它節(jié)點發(fā)送PING消息,當在規(guī)定的時間內(nèi),沒有收到對應的PONG消息,就把此節(jié)點標記為疑似下線;
– 2.在發(fā)送的PING消息里面,會帶著當前集群和節(jié)點的信息;通過這種方式,即可檢測節(jié)點的存活,又能維護集群信息的統(tǒng)一性,不過有一定
的時延;
– 3.疑似下線不是真的下線,只有滿足以下條件才是真的下線;
– 主節(jié)點并且是被分配了slot槽位的主節(jié)點中有超過一半的節(jié)點都認為此節(jié)點疑似下線,才能真的下線;
– 4.當某個節(jié)點通過消息得知有一個節(jié)點的疑似下線投票已經(jīng)超過集群一半的時候,會發(fā)送一個標識此節(jié)點下線的廣播消息;
– 5.其它節(jié)點收到某節(jié)點已經(jīng)下線的廣播后,把自己內(nèi)部的集群維護信息也修改為節(jié)點已下線狀態(tài)。
二、故障轉移
– 1.從所有的從節(jié)點里面選舉出一個新的主;
– 2.選舉出的新主會執(zhí)行slaveof no one把自己的狀態(tài)從slave變成master;
– 3.撤銷已下線的主節(jié)點的槽指派,并把這些槽位重新指派給自己;
– 4.新的主節(jié)點向集群廣播一條PONG消息,通過這個消息告訴所有集群節(jié)點:自己已經(jīng)變成了主節(jié)點,接管了原來的主節(jié)點;
– 5.新的主節(jié)點開始接收和處理與自己槽位相關的命令請求。
相關學習推薦:redis視頻教程