redis集群節點宕機


redis集群是有很多個redis一起工作,那么就需要這個集群不是那么容易掛掉,所以呢,理論上就應該給集群中的每個節點至少一個備用的redis服務。這個備用的redis稱為從節點(slave)。

1、集群是如何判斷是否有某個節點掛掉

  首先要說的是,每一個節點都存有這個集群所有主節點以及從節點的信息。它們之間通過互相的ping-pong判斷是否節點可以連接上。如果有一半以上的節點去ping一個節點的時候沒有回應,集群就認為這個節點宕機了,然后去連接它的備用節點。

 

2、集群進入fail狀態的必要條件

A、某個主節點和所有從節點全部掛掉,我們集群就進入faill狀態。

B、如果集群超過半數以上master掛掉,無論是否有slave,集群進入fail狀態.

 C、如果集群任意master掛掉,且當前master沒有slave.集群進入fail狀態

 

3、redis的投票機制

具體原理如下圖所示:

    

投票過程是集群中所有master參與,如果半數以上master節點與master節點通信超時(cluster-node-timeout),認為當前master節點掛掉。

    選舉的依據依次是:網絡連接正常->5秒內回復過INFO命令->10*down-after-milliseconds內與主連接過的->從服務器優先級->復制偏移量->運行id較小的。選出之后通過slaveif no ont將該從服務器升為新主服務器。

    通過slaveof ip port命令讓其他從服務器復制該信主服務器。

    最后當舊主重新連接后將其變為新主的從服務器。注意如果客戶端與舊主服務器分隔在一起,寫入的數據在恢復后由於舊主會復制新主的數據會造成數據丟失。

4、集群中的主從復制
      集群中的每個節點都有1個至N個復制品,其中一個為主節點,其余的為從節點,如果主節點下線了,集群就會把這個主節點的一個從節點設置為新的主節點繼續工作,這樣集群就不會因為一個主節點的下線而無法正常工作。
注意:
1、如果某一個主節點和他所有的從節點都下線的話,redis集群就會停止工作了。redis集群不保證數據的強一致性,在特定的情況下,redis集群會丟失已經被執行過的寫命令。
2、使用異步復制(asynchronous replication)是redis 集群可能會丟失寫命令的其中一個原因,有時候由於網絡原因,如果網絡斷開時間太長,redis集群就會啟用新的主節點,之前發給主節點的數據就會丟失。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM