鉴于以下情况:
- 2 台机器(可能更多,但 2 台已经很棒了)
- 它们的配置完全相同(安装了相同的服务)
- 他们可以在网络中看到对方
有没有可以在两台机器上安装的服务,并且经常对另一台机器上的相同服务进行实时检查?如果他们都看到对方,则具有最高优先级的一方获胜并将启用(或保持启用)所有已注册的正在运行的进程。另一个服务将停止其机器上的所有注册服务。
如果高优先级机器发生故障,其他系统将检测到这一点并启动服务。
简而言之:故障转移服务
我试图在谷歌上找到类似的东西,但没有找到任何东西。
我热衷于找到现有的解决方案,否则我必须自己动手。
如果您想要一个合适的解决方案,您应该查看 MSCS(如果您有共享存储)或 NeverFail/WanSyncHA/DoubleTake(谷歌它们并查看白皮书)手动脚本对于基本和非常原始的东西是可以的,但它们可能会导致严重的数据损坏,如果他们未能调解共享访问,或未能检测到裂脑并避免它。
您可以肯定地推出自己的,也许是一个 powershell 脚本和一个计划任务。
否则,您可以考虑使用 Microsoft Clustering。您可能需要进行一些研究以查看您的服务是否支持它,它提供了一些其他可能更难构建的功能。例如故障恢复、资源分组(您的服务、服务的存储、注册表项、网络)。
好的...滚动我自己的。
制作了一个小型 .Net 服务应用程序,它的功能正是我所描述的。通过一些 syslog 通知以及在发生故障转移时通过短信通知人们的可能性。
我会看到并尝试在 codeplex 或 sourceforge 上获取它,以供其他人使用/构建
发生这种情况后,我会在评论中发布网址