首页 > 解决方案 > 2 个位置无法访问 Azure API 管理后端

问题描述

我在 Azure 中有一个 API 管理(高级)设置,它连接到西欧的一个虚拟网络,其中包含提供 API 的 Docker 机器,这些 API 可通过 10.0.0/16 范围内的 IP 地址访问。

为了使我的设置具有高可用性,我在北欧添加了一个虚拟网络,其设置与西欧完全相同,但 IP 范围现在为 11.0.0.0/16。

现在,当我扩展 API 管理以添加另一个区域时,我的 API 不再可访问。我尝试使用 set-backend-service 命令仅指向一个区域,但我似乎无法再访问后端。从门户进行跟踪时收到的消息是“无法连接到远程服务器”。在我看来,当添加另一个位置时,API 管理不知道如何路由到不同的虚拟网络。

知道如何使此设置正常工作吗?

标签: azure-api-management

解决方案


在多区域场景中,APIM 在两个区域中运行相同的配置。因此,对于像您这样的情况,您确实需要使用 set-backend-service 策略来有条件地覆盖后端服务器地址。因此,如果您的 API 目前设置为 10.0.XX,您将需要添加类似于以下的策略:

<choose>
    <when condition="@(context.Request.Deployment.Region == "North Europe">
        <set-backend-service url="http://11.0.Y.Y" />
    </when>
</choose>

这是假设您通过 IP 地址寻址后端。如果您通过 DNS 寻址它们,那么您需要在 VNET 中配置您的 DNS 服务器以提供正确的地址。


推荐阅读