1. 程式人生 > >redis cluster 一個問題:雙master不能在一個虛擬機器/物理機上

redis cluster 一個問題:雙master不能在一個虛擬機器/物理機上

標題說的有點不夠明確 :雙master不能在一個虛擬機器/( 或物理機)上,指的是

三主三從結構,並且一個虛機部署一個master 和一個slave 問題如下 :

6臺虛機(每臺3g記憶體),做三主三從結構

   原因如下:
   因為redis cluster 官方的偵聽節點fail的策略是:
   通過叢集中超過半數的master節點檢測失效時才生效.
   所以使用三臺虛機來搭建會出現一定問題:
   比如三臺虛擬交叉部署,每臺上面1個master 1個slave
   當某臺A虛機上面的msater掛掉後,某一臺虛機B上面的slave會接替,
   成為一個master,B伺服器上面會有兩個master,當伺服器B意外宕機後,

   叢集超過半數的master宕機,不會認為B上面的redis 節點宕機,
   就無法實現主從切換,叢集會出現問題。

   所以每臺虛機上只部署一個redis節點,可迴避這種情況。

還有一個解決方式 就是做成4臺機器,4主4從.  也可以迴避半數的問題

 3臺的話 有點尷尬

參考:

http://hot66hot.iteye.com/blog/2050676

架構細節:

(1)所有的redis節點彼此互聯(PING-PONG機制),內部使用二進位制協議優化傳輸速度和頻寬.

(2)節點的fail是通過叢集中超過半數的master節點檢測失效時才生效.

(3)客戶端與redis節點直連,不需要中間proxy層.客戶端不需要連線叢集所有節點,連線叢集中任何一個可用節點即可

(4)redis-cluster把所有的物理節點對映到[0-16383]slot上,cluster 負責維護node<->slot<->key

寫完 發現有其他的哥們也遇到這個問題。。

https://blog.csdn.net/zlfprogram/article/details/74225305

要fail掉一個主需要一半以上主都投票通過才可以