我希望两个集群分别位于不同的区域,这样我就有了基本的区域冗余。我想要运行的一些服务是有状态的(包括跟踪用户会话)。我不希望在集群发生故障时保持状态。我只想要一个集群 B,如果集群 A 发生故障,我可以将剩余的流量引导到它。我发现有很多方法可以做到这一点。我查看了以下链接中的示例:
- https://cloud.google.com/kubernetes-engine/docs/how-to/migrate-gke-multi-cluster#migrate_to_multi-cl..。
- https://cloud.google.com/kubernetes-engine/docs/how-to/deploying-multi-cluster-gateways
- https://cloud.google.com/kubernetes-engine/docs/how-to/deploying-multi-cluster-gateways#deploy-gatew..。
第一个链接中的图片不够完整,因为它看起来好像有状态服务只是部署在单个集群中。我希望有状态服务部署在所有集群中,理想情况下,如果集群发生故障,我希望所有服务都选择下一个可用的有状态后端并坚持使用它。
第三个示例看起来几乎就像我正在寻找的设置。看来我只需要在面向用户的服务上执行 ServiceExport。但我有以下问题:
- 对 GATEWAY_IP:80 的请求将导致默认页面显示以下消息:fault filter abort 但是,下图显示如果用户访问 store.example.com/*,它将重定向到任一路径。没有尾部斜杠的 store.example.com 会进入失败状态吗?只有将实际网关 IP 输入浏览器时才会进入失败状态吗?
- 如果我只是将路径前缀指定为 /,以便所有流量都可以转到任一集群,而我不必重写任何依赖于 URL 结构的站点逻辑,网关服务/资源是否会智能地将用户流量映射到正确的集群(通过 IP 地址或其他)以便如果用户的浏览器崩溃、选项卡刷新、用户在登录现有选项卡时将直接链接粘贴到新选项卡中的页面,或者甚至基本请求都保持在与第一个请求相同的集群中?如果不是,我该如何做到这一点?