Как выполнить постепенную миграцию трафика между двумя сервисами Cloud Run с помощью балансировщика нагрузки Google Cloud HTTP(S)

Я установил внешний балансировщик нагрузки HTTP(S) со следующим:

  • 2 бессерверных NEG, каждая из которых указывает на другую службу Cloud Run в соответствующем регионе.
  • 1 серверная служба, использующая 2 NEG в качестве 2 внутренних
  • 1 правило хоста и пути, которое отправляет все в серверную службу
  • 1 HTTPS-интерфейс, указывающий на правило хоста и пути

На этом этапе я замечаю, что трафик направляется в службу Cloud Run, ближайшую к региону клиента, выполняющего запрос.

Я хотел бы изменить это, чтобы направлять 100% трафика в одну службу Cloud Run в первый день, 50% для каждой службы во второй день и в третий день перенаправлять 100% трафика в другую службу Cloud Run.

Неясно, может ли в этом помочь внешний балансировщик нагрузки HTTP(S). И если это возможно, непонятно, следует ли это делать в серверной службе или в правиле Host and Path.

2 ответа

Балансировщик нагрузки Google Cloud не поддерживает взвешенную / процентную балансировку нагрузки для внешнего HTTP(S) LB. Это указано на странице https://cloud.google.com/load-balancing/docs/features#load_balancing_methods.

Может быть, мне нужно создать 2 серверных сервиса, каждая из которых указывает на один NEG?

Да, именно так вы бы это сделали, если бы внешний HTTPS GCLB поддерживал это. Вам необходимо создать отдельные backendServices для каждого бессерверного NEG и списка weightedBackendServicesв правиле маршрута объекта urlMap. Вы можете найти пример здесь, но я считаю, что он работает только для внутреннего балансировщика нагрузки (ILB) в настоящее время по ссылке выше.

AFAIK, внешняя балансировка нагрузки HTTPS может маршрутизировать только к ближайшему местоположению, но не отправлять трафик в соответствии с весом.

Кроме того, ваше решение требует развертывания в 2 разных регионах, потому что вы не можете 2 серверных ВМ в одном регионе в одной и той же серверной службе.

На данный момент самым простым решением является использование функции разделения трафика Cloud Run. Направьте весь трафик в одну и ту же службу, а затем позвольте подсистеме балансировки нагрузки Cloud Run отправлять запросы.