сбалансировать 2 конечные точки API пропорционально с помощью Azure FrontDoor

Я пытаюсь сбалансировать 2 конечные точки API с одним и тем же управлением API, чтобы получить канареечный выпуск с FrontDoor. Первая конечная точка (скажем, www.contoso.com/api1) обозначает выпуск старого приложения, а вторая (www.contoso.com/api2) для нового. Таким образом, я планирую создать внутренний пул во входной двери, чтобы пропорционально сбалансировать 90% запросов к первой конечной точке и 10% ко второй.

Я знаю, что лучший способ сделать это - использовать 2 службы управления API (например, балансировка серверов с разными развертываниями), но возможно ли это только с одним?

Спасибо заранее


person cgratelli    schedule 23.07.2020    source источник


Ответы (2)


Используйте комбинацию выберите и 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>
person Vitaliy Kurokhtin    schedule 29.07.2020
comment
Это политика для шлюза приложений? - person cgratelli; 30.07.2020
comment
Для управления API Azure - person Vitaliy Kurokhtin; 05.08.2020

После некоторого исследования я обнаружил, что FrontDoor позволяет настраивать Backend Pools только для хостов, имена которых являются FQDN. Я также проводил тесты с TrafficManager, но получил почти такой же результат. Оба имеют баланс трафика по весу.

Единственный способ, который я нашел для балансировки трафика к конечным точкам URL-адресов, - это использовать шлюз приложений, но без функции балансировки.

person cgratelli    schedule 29.07.2020