为什么在Redis集群中主服务器出现故障后,Redis从服务器不接pipe主服务器?

我有一个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分钟,没有任何变化。 为什么奴隶不接pipe主人?

你需要至less有3个主人组成一个redis集群。 如果大多数主人同时死亡,群集变得无法使用。 如果大多数主站不可用,故障切换不会发生。

因为纯粹的redis本身不能进行故障转移。 Master和奴隶在redis方面只是为了平衡负载。 您必须使用Sentinel(默认情况下随redis一起提供的redis模块)实现自动故障转移。