redis cluster故障转移时集群不能正常服务

怒摘一板 发布于 06/17 20:38
阅读 281
收藏 0

最近在将生产的单机redis改造成redis集群,使用的是redis官网推荐的方案redis cluster。三主三从共计6个节点。

发现一个问题,单个主节点故障的,在从节点正常选举成为主节点之前,这个时候客户端访问集群时,会提示连接拒绝的问题。而后主节点选举完毕之后,又可以正常访问了。想问下在redis集群的方案中,不管使用何种策略,这种情况都不可避免吗

加载中
0
开源社区金三胖
开源社区金三胖

在主节点故障时会自动选举出一个主节点,我试验了好几次主节点挂了之后会选择从节点为主节点,但是挂了的时候集群状态为只读状态,不可能都拒绝访问,你程序有连接所有节点吗?

0
开源社区金三胖
开源社区金三胖

port 6379                      //节点端口

   cluster-enabled yes              //开启集群模式

   cluster-node-timeout 15000       //节点超时时间(接收pong消息回复的时间)

   cluster-config-file  /usrlocalbin/cluster/data/nodes-6379.conf 集群内部配置文件

  其它节点的配置和这个一致,改端口即可

你看看你有没有什么漏配置了

0
怒摘一板
怒摘一板

引用来自“开源社区金三胖”的评论

port 6379                      //节点端口

   cluster-enabled yes              //开启集群模式

   cluster-node-timeout 15000       //节点超时时间(接收pong消息回复的时间)

   cluster-config-file  /usrlocalbin/cluster/data/nodes-6379.conf 集群内部配置文件

  其它节点的配置和这个一致,改端口即可

你看看你有没有什么漏配置了

我的意思是从节点晋升为主节点是需要时间的,我在本地测试这个时间并不短,在这个时间之内,如果访问的数据的分片落在宕机节点,这个时候是不能正常读取数据的。只有主节点选举完毕之后才可以正常读取,您说的参数配置我是已经都正常配置的了的。我在本地测试是用的java的客户端,循环读取,测试的时候杀掉一个主节点验证的。

0
开源社区金三胖
开源社区金三胖
  1. 资格检查:检查该从节点是否有资格替换故障主节点,如果此从节点与主节点断开过通信,那么当前从节点不具体故障转移;
  2. 准备选举时间:当从节点符合故障转移资格后,更新触发故障选举时间,只有到达该时间后才能执行后续流程;
  3. 发起选举:当到达故障选举时间时,进行选举;

    4.选举投票:只有持有槽的主节点才会进行投票,会处理故障选举消息,投票过程是一个领导者选举(选举从节点为领导者)的过程,每个主节点只能投一张票给从节点,

当从节点收集到足够的选票(大于N/2+1)后,触发替换主节点操作,撤销原故障主节点的槽,委派给自己,并广播自己的委派消息,通知集群内所有节点。

可能是这个过程中比较耗时,redis.conf 集群节点的超时时限配置,cluster-node-timeout 15000,你可以尝试一下这个配置

返回顶部
顶部