我有一个在Azure中部署的MongoDB集群。 通常情况下,MongoDB集群至less有两个mongo路由器实例(mongos),这是应用程序应该连接的地方(应用程序也是以azure托pipe的)。
我想“故障转移”平衡从应用程序到MongoDB实例的stream量。 我的意思是我想连接我的应用程序到一个实例,如果失败(只有在失败的时候)到另一个实例。 我不希望我的stream量与循环赛平衡:
mongorouter1.myinternaldomain.dom:27017 :这应该始终是端点 mongorouter2.myinternaldomain.dom:27017 :只有第一个失败时,这应该是端点。 mongorouter3.myinternaldomain.dom:27017 :只有当前两者都失败时,这应该是端点。 我发现这些东西是通过stream量pipe理器或Azure中的ILB(内部负载均衡器)进行pipe理的。 但我有一个问题,因为据我所知,故障转移平衡只有通信经理和ILB只允许循环。
因为我的应用程序也在Azure中,所以我不想将mongodb端口公开给公众,所以我知道我不能使用允许故障转移负载平衡的服务的stream量pipe理器。
应该采取什么正确的方法来实现呢?
在Azure中使用软件负载平衡器进行故障转移的唯一方法是使用stream量pipe理器。 您可以设置ACL,所以只有您自己的应用程序可以连接指定端点上的数据库。 或者您可以在您的应用程序中configuration故障转移 – 无负载平衡器,因为您不需要负载平衡(只是故障转移)。