0

我已经设置了一个外部 HTTP(S) 负载平衡器,其内容如下:

  • 2 个无服务器 NEG,每个 NEG 指向各自区域中的不同 Cloud Run 服务
  • 1 个后端服务,使用 2 个 NEG 作为 2 个后端
  • 1 将所有内容发送到后端服务的主机和路径规则
  • 1 指向主机和路径规则的 HTTPS 前端

此时,我注意到流量被路由到距离发出请求的客户端区域最近的 Cloud Run 服务。

我想将其更改为在第 1 天将 100% 的流量路由到一个 Cloud Run 服务,在第 2 天将 50% 的流量路由到每个服务,在第 3 天,将 100% 的流量路由到另一个 Cloud Run 服务。

目前尚不清楚外部 HTTP(S) 负载平衡器是否可以提供帮助。如果可以的话,不清楚是应该在后端服务还是在主机和路径规则中完成。

4

2 回答 2

1

Google Cloud 负载平衡器不支持外部 HTTP(S) LB 的加权/基于百分比的负载平衡。这在https://cloud.google.com/load-balancing/docs/features#load_balancing_methods中列出。

也许我需要创建 2 个后端服务,每个都指向一个 NEG?

是的,如果外部 HTTPS GCLB 支持它,您会这样做。您需要为每个无服务器 NEG 创建单独的 backendServices,并weightedBackendServices在 urlMap 对象的路由规则中列出。您可以在此处找到一个示例,但我相信它仅适用于当前上面链接中的内部负载均衡器 (ILB)。

于 2021-04-24T23:38:32.903 回答
0

AFAIK,外部 HTTPS 负载平衡只能路由到最近的位置,但不能根据权重调度流量。

此外,您的解决方案需要部署在 2 个不同的区域,因为您不能在同一后端服务中的同一区域中部署 2 个后端。

目前最简单的解决方案是使用 Cloud Run 流量拆分功能。将所有流量路由到同一个服务,然后让 Cloud Run 负载平衡器分派请求。

于 2021-04-24T22:34:36.233 回答