节点脚本 - 从一台服务器故障转移到另一台服务器

coo*_*ool 5 fallback failover tcp node.js

我有一个nodejs脚本 - 让我们在server1上调用它"process1",并在server2上运行相同的脚本 - "process2"(只有flag = false).

Process1将执行操作,并在开始时处于"运行"状态.process2将运行但处于"阻塞"状态,其中标记有编程.

我想要实现的是,为此过程实现故障转移/回退.如果process1变为down,则process2上的标志将发生变化,process2将接管来自process1的所有任务(反之亦然,当process1回来时 - 后备).

这样做的最佳方法是什么?这些之间的TCP连接?

在此输入图像描述


注意:即使它没有太多相关性,但我想提一下,这些进程将在内部工作,与第三个服务器建立tcp连接并解析我们从该服务器获取的数据.这两个进程都将在两个服务器上运行,但当时只有一个进程可以提供服务 - 运行标志为true(而不是两者都运行)


更新:根据下面的讨论以及内部研究/测试和监控解决方案,使用反向代理将为您节省大量时间.基于2台服务器的编程故障转移仅涵盖与两台机器上使用的内部流程相关的70%的案例 - 但由于问题导致的问题,您将无法检测到其他30%的问题.网络(特别是如果你有很多流向DATA RECEIVER的话).

Jam*_*mes 2

这与其说是节点问题,不如说是基础设施问题,同样的情况几乎可以应用于任何服务器。

您基本上需要的是某种服务来监视Server 1并确定它是否“健康”或“活跃”,如果是,则继续将流量引导至它。如果服务确定服务器不再处于稳定状态(例如,响应时间太长,返回错误),它会将任何传入流量重定向到Server 2。当它高兴地Server 1恢复到正常操作条件时,它会将流量重定向回它。

在大多数情况下,这种情况下的“服务”是反向代理,例如NginxCloudFlare。在您的情况下,该服务器将充当Data Reciever您的网络 ( Server 1/ Server 2) 之间的缓冲区,并将传入流量路由到相关服务器。