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

云布道师

近日,阿里云分布式云容器平台 ACK One[1]发布“多集群网关”[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 Ingress[4]是在 MSE 云原生网关之上提供更为强大的 Ingress 流量管理方式,兼容 Nginx Ingress 以及 50 多个 Nginx Ingress 的注解,覆盖 90% 以上的 Nginx Ingress 业务场景,支持多服务版本同时灰度发布、灵活的服务治理能力以及全方位的安全防护保障,能够满足大规模云原生分布式应用的流量治理诉求。其支持的 Annotation 详见 MSE Ingress 支持的 Annotation[5]。

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

Kubernetes 服务的流量管理概述

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

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

值得一提的是,Kuberentes Gateway API[7]相比于 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 GitOps[8]的应用多集群分发和持续部署能力,可以帮您快速、低成本地构建对多集群应用平滑容灾的同城容灾系统。更多详情可以查看基于多集群网关实现同城容灾[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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/223568.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机组成原理第6章-(计算机的运算方法)【上】

机器数与真值 把符号“数字化”的数称为机器数,而把带“+”、“-”符号的数称为真值。 原码表示法 原码是机器数中最简单的一种表示形式,0表示整数,1表示负数。 约定整数的符号位和数值位之间用“逗号”隔开。 在原码中,0有两种表示形式:“+0”和“-0”是不一样的。 反…

Gradle - 安装、环境变量、配置国内源、常用命令

目录 一、Gradle 1.1、安装&环境变量 1.2、配置国内源 1.3、Gradle 项目文件介绍 1.4、Gradle 中的常用指令 一、Gradle 1.1、安装&环境变量 a)从 Gradle 官网下载对应的版本:Gradle | Releases 这里以 8.0 版本为例,下载附带…

nodejs+vue+微信小程序+python+PHP计算机网络在线考试系统-计算机毕业设计推荐

信息数据的处理完全依赖人工进行操作, 所以电子化信息管理的出现就能缓解以及改变传统人工方式面临的处境,一方面可以确保信息数据在短时间被高效处理,还能节省人力成本,另一方面可以确保信息数据的安全性,可靠性&…

Java操作Word修订功能:启用、接受、拒绝、获取修订

Word的修订功能是一种在文档中进行编辑和审阅的功能。它允许多个用户对同一文档进行修改并跟踪这些修改,以便进行审查和接受或拒绝修改。修订功能通常用于团队合作、专业编辑和文件审查等场景。 本文将从以下几个方面介绍如何使用免费工具Free Spire.Doc for Java在…

MySQL 数据库系列课程 05:MySQL命令行工具的配置

一、Windows启动命令行工具 (1)打开 Windows 的开始菜单,找到安装好的 MySQL,点击MySQL 8.0 Command Line Client - Unicode,这个带有 Unicode 的,是支持中文的,允许在命令行中敲中文。 &…

nn.LSTM个人记录

简介 nn.LSTM参数 torch.nn.lstm(input_size, "输入的嵌入向量维度,例如每个单词用50维向量表示,input_size就是50"hidden_size, "隐藏层节点数量,也是输出的嵌入向量维度"num_layers, "lstm 隐层的层数,默认…

高频知识汇总 | 【操作系统】面试题汇总(万字长博通俗易懂)

前言 这篇我亲手整理的【操作系统】资料,融入了我个人的理解。当初我在研习八股文时,深感复习时的困扰,网上资料虽多,却过于繁杂,有的甚至冗余。例如,文件管理这部分,在实际面试中很少涉及&…

在 linux 服务器上安装Redis数据库

先打开我们的Linux服务器 终端执行 安装redis sudo yum install redis然后 他会提示你要占多少磁盘空间 例如 我这里是 1.7 M 没问题就 y 然后回车就可以了 然后 我们这里执行 redis-cli --version这样 就能看到版本了 然后 我们可以根据版本选择启动命令 使用systemctl命…

LeNet网络分析与demo实例

参考自 up主的b站链接:霹雳吧啦Wz的个人空间-霹雳吧啦Wz个人主页-哔哩哔哩视频这位大佬的博客 Fun_机器学习,pytorch图像分类,工具箱-CSDN博客 网络分析: 最好是把这个图像和代码对着来看然后进行分析的时候比较快 # 使用torch.nn包来构建神经网络. im…

【模式识别】探秘分类奥秘:最近邻算法解密与实战

​🌈个人主页:Sarapines Programmer🔥 系列专栏:《模式之谜 | 数据奇迹解码》⏰诗赋清音:云生高巅梦远游, 星光点缀碧海愁。 山川深邃情难晤, 剑气凌云志自修。 目录 🌌1 初识模式识…

【性能优化】MySql数据库查询优化方案

阅读本文你的收获 了解系统运行效率提升的整体解决思路和方向学会MySQl中进行数据库查询优化的步骤学会看慢查询、执行计划、进行性能分析、调优 一、问题:如果你的系统运行很慢,你有什么解决方案? ​关于这个问题,我们通常首先…

什么是动态代理?

目录 一、为什么需要代理? 二、代理长什么样? 三、Java通过什么来保证代理的样子? 四、动态代理实现案例 五、动态代理在SpringBoot中的应用 导入依赖 数据库表设计 OperateLogEntity实体类 OperateLog枚举 RecordLog注解 上下文相…

Python 运算符 算数运算符 关系运算符 赋值运算符 逻辑运算 (逻辑运算符的优先级) 位运算 成员运算符 身份运算符 运算符的优先级

1 运算符算数运算符关系运算符赋值运算符逻辑运算逻辑运算符的优先级 位运算布尔运算符移位运算符 成员运算符身份运算符运算符的优先级 运算符 算数运算符 四则运算 - * / a 8 b 9 print(ab)#与Java类似 也可以进行字符串的连接 注意:字符串数字字符串 不存在会抛出异常…

排序算法——桶排序

把数据放进若干个桶,然后在桶里用其他排序,近乎分治思想。从数值的低位到高位依次排序,有几位就排序几次。例如二位数就排两次,三位数就排三次,依次按照个十百...的顺序来排序。 第一次排序:50 12 …

MongoDB安装部署

二、安装部署 2.1 下载 下载地址:MongoDB Enterprise Server Download | MongoDB 当前最新版本6.0.9,5.0.9对Mac m1需要centos 8.2版本。选择docker安装。 2.2 docker-ce安装 # 安装docker # 默认repo源没有docker-ce安装包,需要新的rep…

【飞凌 OK113i-C 全志T113-i开发板】一些有用的常用的命令测试

一些有用的常用的命令测试 一、系统信息查询 可以查询板子的内核信息、CPU处理器信息、环境变量等 二、CPU频率 从上面的系统信息查询到,这是一颗具有两个ARMv7结构A7内核的处理器,主频最高1.2GHz 可以通过命令查看当前支持的频率以及目前所使用主频 …

面向对象设计与分析40讲(12)简单工厂方法模式

文章目录 定义示例优缺点 定义 简单工厂模式是一种创建型模式,用于根据客户端的需求创建对象实例,所谓的需求反映到编程语言里就是传入的参数。 简单工厂模式包括三个主要部分: 工厂类(Simple Factory):…

生物系统学中的进化树构建和分析R工具包V.PhyloMaker2的介绍和详细使用

V.PhyloMaker2是一个R语言的工具包,专门用于构建和分析生物系统学中的进化树(也称为系统发育树或phylogenetic tree)。以下是对V.PhyloMaker2的一些基本介绍和使用说明: 论文介绍:V.PhyloMaker2: An updated and enla…

持续集成交付CICD:Linux 部署 Jira 9.12.1

目录 一、实验 1.环境 2.K8S master节点部署Jira 3.Jira 初始化设置 4.Jira 使用 一、实验 1.环境 (1)主机 表1 主机 主机架构版本IP备注master1K8S master节点1.20.6192.168.204.180 jenkins slave (从节点) jira9.12.1…

【微服务】:微服务最佳实践

关键需求 最大限度地提高团队的自主性:创建一个团队可以完成更多工作而不必与其他团队协调的环境。 优化开发速度:硬件便宜,人不是。使团队能够轻松快捷地构建强大的服务。 关注自动化:人们犯错误。更多的系统操作也意味着更多的…