Cluster

為什麼 Redis Cluster 中 master 失敗後 Redis slave 不接管 master?

  • November 22, 2017

我有一個 Redis 集群,有 2 個主機和 4 個從機(每個主機 2 個從機)。在我手動崩潰後,主(即redis-cli -p 6379 debug segfault)從不做任何事情。他們檢測到主人有問題,但他們什麼也沒做(我等了 20 分鐘)。

這是集群節點輸出(即redis-cli cluster nodes):

08dfd1bdd470a8831b33b7b0409a40bf45ee22d0 192.168.0.15:6379 myself,slave 55787eb63780365a0c7d4a0ed72cac4b97a55ed0 0 0 1 connected
7fedf234aba8d906dca5a4725a54d1cc5c979c18 192.168.0.18:6379 slave a739cfbcd9b804345808bb3a78b6a00b2d6050f9 0 1477865886164 2 connected
a739cfbcd9b804345808bb3a78b6a00b2d6050f9 192.168.0.14:6379 master,fail? - 1477865551940 1477865548392 0 disconnected 8192-16383
5dcc0a0a3f13ea9343171a13fbf0ec7054dfc2ab 192.168.0.19:6379 slave a739cfbcd9b804345808bb3a78b6a00b2d6050f9 0 1477865884135 5 connected
55787eb63780365a0c7d4a0ed72cac4b97a55ed0 192.168.0.16:6379 master - 0 1477865885150 2 connected 0-8191
601a5e0dd9d40d8c01119714e89be63eaee87900 192.168.0.17:6379 slave 55787eb63780365a0c7d4a0ed72cac4b97a55ed0 0 1477865882100 3 connected

正如我們在這裡看到的,一個失敗的主節點192.168.0.14:6379被標記為master,fail?. 我不知道為什麼它顯示一個問號。但我等了 20 分鐘,沒有任何改變。為什麼奴隸不接管主人?

你需要至少有 3 個 master 才能組成一個 redis 集群。如果大多數master同時死亡,集群將變得不可用。如果大多數主伺服器不可用,則不會發生故障轉移。

因為純redis不能自己做failover。redis中的master和slave只是為了負載均衡。您必須使用 Sentinel(預設情況下與 redis 一起提供的 redis 模組)來實現自動故障轉移。

引用自:https://serverfault.com/questions/812203