阿里云 ACK One 新特性:多集群网关,帮您快速构建同城容灾系统

云布道师

近日,阿里云分布式云容器平台 ACK One1发布"多集群网关"2(ACK One Multi-cluster Gateways)新特性,这是 ACK One 面向多云、多集群场景提供的云原生网关,用于对多集群南北向流量进行统一管理。

基于 ACK One 多集群网关可以快速构建多集群应用的同城容灾系统,帮助企业以更简单、高效的方式为应用数据的连续性和可用性提供保障。

为什么需要同城容灾

由于故障的多样性和不确定性,在一些极端情况下(如发生断网断电、火灾、地震等),需要保证应用和数据的高可用,因此需要容灾方案,目前云上容灾主要分为三类:

  1. 同城跨 AZ 容灾

  2. 跨地域容灾

  3. 两地三中心

同城容灾包含多活和主备,同城中心之间物理距离较近,网络延迟低,可防范 AZ 级别性质的灾难损害(如火灾、发生断网断电等);跨地域容灾则网络延迟相对较高,但可防范地域性质的灾难损害(如地震、水灾等);两地三中心则将同城双中心和跨 Region 灾备结合起来,兼具了二者优点,适用于应用与数据连续性和可用性要求高的场景。

而从实际情况考虑,同城容灾相比于跨地域容灾,在数据容灾方面容易实现得多,所以同城容灾仍然具有非常重要的意义。

现有同城容灾方案及问题

在 K8s 集群中的应用,现有的同城多可用区/多集群容灾的方案,基本都是基于 DNS 和多个 Ingres Controller 来实现,一般架构图如下所示:

虽然在 DNS 与 SLB 之间可以增加类似于全局流量管理(GTM)等一些网关功能类产品,来支持用户就近接入、高并发负载均衡、健康检查与故障切换等能力,完善容灾方案,但现有的基于 DNS 的容灾方案仍具有一些问题:

  1. 基于 DNS 的方案,无法支持七层路由转发;

  2. 基于 DNS 的方案在 IP 切换时候,通常会有 Client 端缓存而造成服务短暂不可用,用户体验有所影响;

  3. 基于 DNS 的方案通常需要多个 LB(每个集群/可用区一个),并且需要在每个集群中都安装 Ingress Controller 和创建 Ingress 对象,管理和费用成本较高。

基于 ACK One 多集群网关实现的同城容灾方案

什么是 ACK One 多集群网关

多集群网关由 ACK One Fleet 通过集成 MSE 云原生网关3来实现,并使用 Ingress API 来管理多集群南北向流量,可以帮您管理七层流量,并进一步实现同城自动容灾、基于 Header 的灰度发布验证、基于副本数和权重的流量负载均衡等多集群应用相关的所需能力。

此外,多集群网关是地域级别的,所有操作都仅需在 ACK One Fleet 实例中操作(创建网关、Ingress 资源等),无需在每个 ACK 集群中都安装 Ingress Controller 和创建 Ingress 资源,提供地域级全局流量管理能力的同时,也减少了多集群管理的成本。

关于 MSE Ingress 与 MSE 云原生网关

MSE Ingress4是在 MSE 云原生网关之上提供更为强大的 Ingress 流量管理方式,兼容 Nginx Ingress 以及 50 多个 Nginx Ingress 的注解,覆盖 90% 以上的 Nginx Ingress 业务场景,支持多服务版本同时灰度发布、灵活的服务治理能力以及全方位的安全防护保障,能够满足大规模云原生分布式应用的流量治理诉求。其支持的 Annotation 详见 MSE Ingress 支持的 Annotation5

在 ACK One Fleet 中,管理员可以通过 kubectl 创建 MseIngressConfig 资源来创建出 MSE 云原生网关,由其来管理多集群流量,并创建 Ingress 资源来管理流量路由。

Kubernetes 服务的流量管理概述

在 Kubernetes 的流量管理领域,Ingress Controller 是非常重要的方案,Ingress Controller 作为一个专门的 4 层和 7 层代理,用来管理南北向流量:将流量导入 K8s 集群,到达 services,再导出。

Kubernetes Ingress API6主要目标就是使用简单的、声明式的 API 来代理集群中服务,其在 Kubernetes 1.2 就已 Beta,有非常多的厂商支持 Ingress,并扩展了非常多的功能,使用也很广泛,所以使用 Ingress API 的学习成本较低。

值得一提的是,Kuberentes Gateway API7相比于 Ingress,提供了更通用的代理 API,支持更多协议,可实现更多的能力,MSE 在后续提供对 Gateway API 的支持,满足用户复杂的流量管理诉求。

综合各方面考虑,ACK One 当前选择以 Ingress API 的方式来支持多集群的南北向流量管理。

基于 ACK One 多集群网关实现的同城容灾方案

基于 ACK One 多集群网关可以快速构建多集群应用的同城容灾系统,包括同城多活容灾和同城主备容灾。整体架构如下:

  • 一个地域两个不同可用区(AZ 1 和 AZ 2),各创建一个 ACK 集群(Cluster 1 和 Cluster 2)
  • 在 ACK One Fleet 中通过 MseIngressConfig 资源在 Fleet 所在地域、所在 VPC 创建出 MSE 网关
  • 通过 ACK One GitOps 将应用分发到多集群中(已创建的 Cluster 1 和 Cluster 2 集群)
  • 在 Fleet 中通过创建 Ingress 来设置流量规则,支持跨多个 ACK 集群的以下能力:

HTTP routing:七层路由转发 § 如 header-based 路由:基于 header 将流量路由到指定集群、基于 header 的灰度验证

traffic splitting:根据权重路由流量、A/B 测试、蓝绿部署、金丝雀发布等

health-based 自动平滑容灾:流量在多集群/多可用区自动平滑容灾。某个集群或者集群内某个副本 unhealthy 后,流量会被自动平滑地路由到另一个集群或者其他健康的副本

traffic mirroring、基于副本数负载均衡流量等

方案优势

由以上架构,我们可以知道,基于 ACK One 多集群网关的容灾方案,相比于基于 DNS 流量分发的容灾方案具有以下优势:

  • 基于 DNS 流量分发的容灾方案需要多个 LB IP(每个集群 1 个),而基于多集群网关的容灾方案在地域级别仅需要 1 个 LB
    IP,且默认提供同地域多可用区的高可用性。
  • 基于多集群网关的容灾支持七层路由转发能力,而基于 DNS 流量分发的容灾不支持七层路由转发。
  • 基于 DNS 流量分发的容灾方案在 IP 切换时,通常会有客户端缓存而造成服务短暂不可用,而基于多集群网关的容灾方案则可以平滑地将流量 Fallback 到另一个集群的服务后端。
  • 多集群网关是地域级别的,所以所有操作都仅需在 Fleet 实例中操作(创建网关、Ingress 资源等),无需在每个 ACK 集群中都安装 Ingress Controller 和创建 Ingress 资源,在提供地域级全局流量管理能力的同时,减少多集群管理成本。

基于多集群网关的同城多活容灾

基于多集群网关的同城多活容灾如下图所示:

  • 在 cluster1 与 cluster2 中存在同名服务(K8s service 的 name 和 namespace
    一致),且副本数为 1:1
  • 网关会将流量按照 1:1 的比例路由到 cluster1 和 cluster2 中
  • 当 cluster1 异常时(如副本数变为 0),cluster1 的 50% 流量会被自动迁移到 cluster2,此时 100%流量会被路由到 cluster2

基于多集群网关的同城主备容灾

基于多集群网关的同城主备容灾如下图所示:

  • 在 AZ 1 cluster1 与 AZ 2 cluster2 中存在同名服务(K8s service 的 name 和
    namespace 一致)
  • 服务以 cluster1 为主,cluster2 为备,默认只有主提供服务,100% 流量会路由到 cluster1
  • 当主异常以后,100% 流量会被自动平滑地路由到备(AZ 2 的 cluster2)

总结

ACK One 多集群网关提供了强大的能力,与此同时,结合 ACK One GitOps8的应用多集群分发和持续部署能力,可以帮您快速、低成本地构建对多集群应用平滑容灾的同城容灾系统。更多详情可以查看基于多集群网关实现同城容灾9和多集群网关概述10

欢迎使用钉钉扫描二维码或搜索群号加入我们。(钉钉群号:35688562)

相关链接:

1 ACK One

https://help.aliyun.com/zh/ack/distributed-cloud-container-platform-for-kubernetes/product-overview/ack-one-overview?spm=a2c4g.11186623.0.0.6f5848b0idmr0L

2 多集群网关

https://help.aliyun.com/zh/ack/distributed-cloud-container-platform-for-kubernetes/user-guide/multi-cluster-traffic-gateway-overview?spm=a2c4g.11186623.0.0.5fd048b0oh9MLf

3 MSE 云原生网关

https://help.aliyun.com/zh/mse/product-overview/cloud-native-gateway-overview?spm=a2c4g.11186623.0.0.260a3db39PGupl

4 MSE Ingress

https://help.aliyun.com/zh/mse/user-guide/overview-of-mse-ingress-gateways#task-2193958

5 MSE Ingress 支持的 Annotation

https://help.aliyun.com/zh/mse/user-guide/annotations-supported-by-mse-ingress-gateways?spm=a2c4g.11186623.0.0.4c074ca8JGvcpx

6 Kubernetes Ingress API

https://kubernetes.io/docs/concepts/services-networking/ingress/

7 Kuberentes Gateway API

https://gateway-api.sigs.k8s.io/

8 ACK One GitOps

https://help.aliyun.com/zh/ack/distributed-cloud-container-platform-for-kubernetes/user-guide/gitops-overview?spm=a2c4g.11186623.0.0.596377b7htoy5W

9 基于多集群网关实现同城容灾

https://help.aliyun.com/zh/ack/distributed-cloud-container-platform-for-kubernetes/use-cases/zone-disaster-recovery-based-on-multi-cluster-gateway?spm=a2c4g.11186623.0.0.54b7681cMIMBoN

10 多集群网关概述

https://help.aliyun.com/zh/ack/distributed-cloud-container-platform-for-kubernetes/user-guide/multi-cluster-gateway-overview?spm=a2c4g.11186623.0.0.c01b6fd6rNopUT

相关推荐
Inhand陈工8 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
Database_Cool_9 天前
什么是数据仓库物化视图?AnalyticDB MySQL 实时物化视图能力解析
人工智能·mysql·阿里云
Database_Cool_9 天前
大规模数据分析降本指南:AnalyticDB Serverless 弹性架构实战
数据仓库·阿里云·架构·数据分析·serverless
我是小bā吖9 天前
Claude Code 模型接入阿里云 AI 网关并统计不同使用者的模型用量
网络·人工智能·阿里云
翼龙云_cloud9 天前
阿里云国际代理商:如何使用RDS MySQL 构建网站数据库?
数据库·mysql·阿里云
wcy100869 天前
为 CentOS 7.6 (7.6.1810) 配置阿里云 Vault 源
linux·阿里云·centos
Inhand陈工9 天前
污水泵站PLC数据上云实战:西门子PLC + 映翰通IG502 + DM平台全流程
人工智能·物联网·网络安全·阿里云·信息与通信·iot
翼龙云_cloud10 天前
阿里云代理商:如何管理CPFS的POSIX客户端挂载点?
运维·阿里云·云计算·阿里云 cpfs
AI原来如此10 天前
阿里云百炼上线DeepSeek,OpenAI发布GPT-5.5,模型服务战升级
人工智能·gpt·阿里云·ai·大模型·ai编程
啦啦啦~~~33010 天前
【办公软件】开源的PDF合并分割工具!支持PDF拆分、合并、交替混合、页面旋转、提取页面等
阿里云·pdf·电脑·开源软件