如何使用 Google Cloud HTTP(S) 负载均衡器在两个 Cloud 运行 服务之间进行渐进式流量迁移

How to do gradual traffic migration between two Cloud Run services using Google Cloud HTTP(S) load balancer

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

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

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

不清楚外部 HTTP(S) 负载平衡器是否可以帮助解决这个问题。如果可以,不清楚是否应该在后端服务或主机和路径规则中完成。

据我所知,外部HTTPS负载均衡只能路由到最近的位置,不能按权重调度流量。

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

目前最简单的解决方案是使用云 运行 流量拆分功能。将所有流量路由到同一服务,然后让云 运行 负载均衡器调度请求。

Google 云负载均衡器不支持 weighted/percent-based 外部 HTTP(S) LB 的负载均衡。这列在 https://cloud.google.com/load-balancing/docs/features#load_balancing_methods.

Maybe I need to create 2 Backend Services, each pointing at one NEG?

是的,如果外部 HTTPS GCLB 支持,这就是您要做的。您需要为每个无服务器 NEG 创建单独的后端服务,并在 urlMap 对象的路由规则中列出 weightedBackendServices。您可以找到一个示例 here,但我认为它仅适用于目前根据上述 link 的内部负载平衡器 (ILB)。