MS Azure 上 Windows 服务故障转移系统的解决方案

Solution for Windows service failover system on MS Azure

我们有一个服务器环境,其中有两个不同的虚拟机,每个 运行 我们的 Windows 服务的一个子集(总共约 50 个)在 .NET 中创建。我正在寻找的是在其中一个出现故障时自动启动其他 VM 上剩余服务的最佳方法。

我们需要此解决方案的原因是我们 运行 这些云 (MS Azure) 上的虚拟机可以半定期重启。这些服务也很难作为实际的水平扩展系统(尤其是遗留服务)来实现。所以我们追求的本质上是一种冗余系统。

我们考虑过使用我们的集中式 SQL 数据库(也在 Azure 上)自己做一个自定义解决方案,但如果可能的话,我们更愿意使用现有的解决方案。 Google 在这个话题上收效甚微。到目前为止,我们发现的唯一允许这样做的工具是使用 Docker 和一些扩展。但是 Docker 也有更多我们不需要的功能,并且有一个不平凡的进入障碍(但显然仍然是一个选择)。

您可以使用 Azure 自动化通过服务轮询 VM,当服务离线时,在另一个 VM 上执行 X。 Azure 最近发布了可以以 1 分钟粒度进行轮询的任务观察器(自动化的子集)。请注意,它处于预览状态,但它为您提供了今天没有的东西。

https://azure.microsoft.com/en-au/updates/azure-automation-watcher-tasks-public-preview-now-available/