redis cluster 一個問題:雙master不能在一個虛擬機器/物理機上
阿新 • • 發佈:2018-12-25
標題說的有點不夠明確 :雙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掉一個主需要一半以上主都投票通過才可以