Nodejs Redis Sentinel故障转移无法处理

时间:2020-06-04 08:41:32

标签: node.js redis node-modules redis-sentinel ioredis

虚拟机场景:我们有3个虚拟机。 2个VM已安装Redis服务器并安装了复制,其他VM已安装了nodejs服务器。所有3个VM均配置了redis sentinel服务器。关于redis前哨的所有操作均按预期进行。就像我们停止主机一样,哨兵也将其他服务器指定为主机。

Nodejs场景:我们正在使用ioredis npm软件包。我们按照包裹定点配置。当我们使用命令service redis stop手动关闭Redis服务器时,它工作正常。它与新提名的主服务器建立连接。

问题:当我们直接关闭主Redis服务器所在的VM时,会发生问题。 Redis前哨将按预期提名新主人,但ioredis上没有任何事件。因此它是挂起/始终连接到无法访问的旧主机。重现的另一个步骤是,当我们在redis cli DEBUG SLEEP 500上执行命令时,新的主服务器被哨兵提名,但是节点包直到500秒完成(即,旧的主服务器变为联机)才创建具有新连接的连接。

其他信息:研究了ioredis的代码之后,他们在内部使用了节点的net包。在关闭电源的VM上,网络程序包未触发任何错误事件(没有有关它可能触发的其他事件的信息),这就是原因,它挂起,直到VM开机。软件包redis发生相同的事件(未触发事件),但不支持哨兵,因此对于该软件包也可以。

0 个答案:

没有答案