Azure 中的内部故障转移负载平衡

Azure 中的内部故障转移负载平衡

我在 Azure 中部署了一个 MongoDB 集群。通常,MongoDB 集群至少有几个 mongo 路由器实例 (mongos),应用程序应该连接到这些实例(该应用程序也托管在 Azure 中)。

我想通过“故障转移”平衡从应用程序到 mongodb 实例的流量。我的意思是,我想将我的应用程序连接到一个实例,如果该实例失败(并且仅当该实例失败时)才连接到另一个实例。我不希望通过循环平衡我的流量:

  • mongorouter1.myinternaldomain.dom:27017:这应该始终是终点
  • mongorouter2.myinternaldomain.dom:27017:仅当第一个失败时,这才应该是终点。
  • mongorouter3.myinternaldomain.dom:27017:仅当前两个都失败时,这才应该是终点。

我发现这类事情可以通过流量管理器或 Azure 中的 ILB(内部负载均衡器)进行管理。但我遇到了一个问题,因为据我所知,故障转移平衡仅适用于流量管理器,并且 ILB 仅允许循环调度。

因为我的应用程序也在 Azure 中,所以我不想向公众公开 mongodb 端口,所以我知道我不能使用允许故障转移负载平衡的服务 Traffic Manager。

正确的实现方法应该是什么?

答案1

在 Azure 中拥有具有故障转移功能的软件负载均衡器的唯一方法是使用流量管理器。您可以设置 ACL,这样只有您自己的应用程序才能连接到指定端点上的数据库。或者您可以在应用程序中配置故障转移 - 无需负载均衡器,因为您不需要负载平衡(只需要故障转移)。

相关内容