Cluster
為什麼 Redis Cluster 中 master 失敗後 Redis slave 不接管 master?
我有一個 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 模組)來實現自動故障轉移。