nodejs redis sentinel故障转移无法在无法访问的服务器上运行

368yc8dk  于 2021-06-09  发布在  Redis
关注(0)|答案(0)|浏览(330)

虚拟机场景:我们有3个虚拟机。两个虚拟机安装了带有复制的redis服务器,另一个虚拟机安装了nodejs服务器。所有3个虚拟机都配置了redis sentinel服务器。redis sentinels一切正常。就像当我们停止主人,哨兵指定其他服务器作为主人。
nodejs场景:我们正在使用 ioredis npm包。我们按程序包配置哨兵。当我们使用命令手动关闭redis服务器时,它工作正常 service redis stop . 它创建与新指定的主服务器的连接。
问题:当我们直接关闭主redis服务器所在的vm时,问题就出现了。redis sentinel如期提名了新主人,但是 ioredis 这方面没有任何进展。所以它总是挂在老主人的身上,这是不可接近的。复制的另一个步骤是,当我们在redis cli上执行命令时 DEBUG SLEEP 500 ,新主机由sentinels指定,但节点包直到500秒完成(即直到旧主机服务器联机)才创建与新连接的连接。
查看代码后的附加信息 ioredis ,它们在内部使用node的net包。在关闭vm时,net包没有触发任何错误事件(没有关于它可能触发的其他事件的信息),这就是原因,它将挂起直到vm通电。包redis也发生了同样的情况(不是触发事件),但是它不支持sentinel,所以对于这个包来说是可以的。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题