与 Azure FrontDoor 按比例平衡 2 API 个端点

balance 2 API endpoints proportionally with Azure FrontDoor

我正在尝试平衡 2 个 API 端点,在相同的 API 管理上,以实现 trought FrontDoor 的金丝雀发布。新端点的第一个端点(假设 www.contoso.com/api1) stands for old application release and the second (www.contoso.com/api2)。这样,我计划在 frontdoor 中创建一个后端池,以按比例平衡 90% 的请求到第一个端点和 10% 的请求到第二个端点。

我知道最好的方法是使用 2 个 API 管理服务(比如平衡具有不同部署的服务器),但是只使用一个是否可行?

提前致谢

经过一些研究,我发现 FrontDoor 只允许配置名称为 FQDN 的主机的后端池。我也用 TrafficManager 做了测试,但我得到了几乎相同的结果。两者均按权重进行流量平衡。

我发现平衡到 URL 端点的流量的唯一方法是通过“应用程序网关”,但没有平衡功能。

使用 choose and set-backend-service 策略的组合:

<choose>
  <when condition="@(new Random().Next(10) < 9)">
    <set-backend-service baseUrl="https://www.contoso.com/api1" />
  </when>
  <otherwise>
    <set-backend-service baseUrl="https://www.contoso.com/api2" />
  </otherwise>
</choose>