azure-api-management - 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 管理不知道如何路由到不同的虚拟网络。
知道如何使此设置正常工作吗?
解决方案
在多区域场景中,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 服务器以提供正确的地址。
推荐阅读
- arrays - 比较两个矩阵并在对应列中找到匹配的索引
- python - 如何使用熊猫将列表转换为 str?
- bash - 如何获取我的 github 存储库的最新预发布版本 - bash
- javascript - JavaScript 不会在一次迭代中删除所有元素,即使条件总是满足
- python - 使用任务 ID 访问 FSM 上下文变量
- sql - 在 pyspark 中编写 SQL 时面临的问题
- spring-boot - 违规:应限制参数数量 - spring boot
- angular - Openapi 架构不正确
- javascript - 有必要在 Redux Toolkit 中定义我们自己的 action creators 吗?
- java - 在不录音的情况下使用 Voice Recording Visualizer