我有两个相同的 GKE 集群(我们称之为“蓝”和“绿”)。它们每个都有一个通过 GCP 负载均衡器的入口。我想将流量从一个集群流到另一个集群。这将用于测试重大更改,例如 K8s/Istio 升级等。
我不确定如何利用 GCP 基础设施实现这一点。
我探索过的选项:
云端 DNS- 这是最简单的,我只需将 A 记录从“蓝色”切换到“绿色”LB,然后等待 TTL 到期即可。这没问题,但流量需要一段时间才能训练,行为不当的 DNS 客户端可能会导致问题。我也无法涓流流量,因为 Cloud DNS 中没有“加权循环”,切换是“全有或全无”,这不是我想要的。
云 CDN- 我可以添加两个 LB 作为原点,但是在它们之间切换会非常慢,而且在我看来这是对工具的滥用。
多层 LB- 让 LB 位于“蓝色”和“绿色”LB 之上,并将流量导向当前“活跃”的 LB。这在 GCP 中似乎根本不可能。似乎 LB 不能将 LB 用作后端(包括 HTTP、TCP、网络)
自定义顶层LB- 我可以使用 HAProxy 或其他东西来前置 GCP 负载均衡器,但这让我感到紧张。这将是一个吞吐量相当高的链接,我不想在良好的性能和 HA 特性上做出妥协。
如何在不丢失现有设置的 HA 和性能属性的情况下在 GCP 中实现这一点?