ACK One:构建混合云同城容灾系统

作者:蔡靖

对于当前业务运行在 IDC 内的 Kubernetes 集群中,希望通过云计算为云下业务提供同城灾备的高可用冗余能力,可利用阿里云分布式云容器平台 ACK One [ 1] 来提供统一得流量、应用和集群管理,实现业务流量的多集群路由和灾难情况下的流量的自动平滑容灾。本文主要介绍通过 ACK One 快速构建混合云同城容灾系统。

搭建混合云容灾系统一般需要五个步骤:

  1. 使用 ACK One 注册集群管理 IDC / 第三方公共云 K8s 集群
  2. 实现云下网络与云上 VPC 的互联互通
  3. 创建 ACK One 舰队并关联集群
  4. 使用 ACK One GitOps 发布应用到多个集群(可选)
  5. 使用 ACK One 多集群网关管理多集群流量

分布式云容器平台 ACK One

分布式云容器平台 ACK One(Distributed Cloud Container Platform for Kubernetes)是阿里云面向混合云、多集群、分布式计算、容灾等场景推出的企业级云原生平台。ACK One 可以连接并管理您任何地域、任何基础设施上的 Kubernetes 集群,并提供一致的管理和社区兼容的 API,支持对计算、网络、存储、安全、监控、日志、作业、应用、流量等进行统一运维管控。

ACK One 注册集群 [ 2] 可以帮助您将云下 Kubernetes 集群接入云端,快速搭建混合云集群,可以将本地数据中心 Kubernetes 集群或其他云厂商 Kubernetes 集群接入阿里云容器服务管理平台,进行统一管理。在混合云场景下,承担了至关重要的作用。

ACK One 舰队 [ 3] (Fleet)是 ACK One 管理多集群提供的统一入口,为开发者提供多集群 GitOps 应用分发、流量管理、统一运维等能力。其基于成熟的开源社区项目 Argo CD [ 4] 和 Open Cluster Management [ 5] 构建,保证了产品的开放性。每个舰队实例则由 ACK 托管,您可以省去大量的运维工作,专注应用开发。

ACK One 多集群网关 [ 6] (ACK One Multi-cluster Gateways)是 ACK One 为多云、多集群环境提供的云原生网关,统一管理一个地域的多个集群的七层南北流量。ACK One 通过托管 MSE Ingress [ 7] ,以 Ingress API 来定义流量路由规则,支持跨多集群的多种能力:HTTP Routing(包括基于 Header 将流量路由到指定集群)、traffic splitting、 health-based 自动平滑容灾、traffic mirroring、基于副本数负载均衡流量等。

ACK One GitOps [ 8] 是 ACK One 在 Fleet 实例中托管了 ArgoCD,同时集成 ACK One 的多集群、阿里云的 RAM SSO 等能力,实现多集群下简单、安全的多集群 GitOps 持续交付。

混合云同城容灾系统架构

图片

基于 ACK One 的注册集群、多集群舰队(GitOps 可选)、多集群网关构建的混合云场景的应用的同城多活容灾系统如上图所示:

  • 阿里云上资源都在 1 个 VPC 中(如图中 VPC 1),在 AZ1 创建 ACK 集群,在 AZ2 中创建注册集群;
  • 将 IDC 或第三方公共云 K8s 集群,通过注册集群注册到阿里云;并使用专线打通 IDC 与云上 VPC 的网络,实现云上云下网络互通互联;
  • 关联 ACK 集群和注册集群到同 VPC(VPC 1)下的 ACK One Fleet 实例,并通过 ACK One GitOps 向 ACK 集群和注册集群发布应用;
  • 在 ACK One Fleet 中,通过 MseIngressConfig 创建 MSE 网关,并添加集群到网关,然后通过在 Fleet 中创建 Ingress 设置流量路由规则,来管理南北向流量(包括实现同城容灾)。
  • 本文章针对应用的多集群部署和业务流量的高可用方案,不涉及数据库和中间件,相关方案请参考阿里云数据库与中间件文档,例如:数据库同步同步方案:https://help.aliyun.com/zh/rds/apsaradb-rds-for-mysql/overview-of-data-synchronization

构建混合云同城容灾系统

首先需要对混合云网络进行规划:ACK One Fleet、ACK 集群、注册集群在相同 VPC 下,ACK 集群和注册集群在不同 AZ。舰队管理网络规划请参见舰队管理网络规划 [ 9]

之后依据以下几步可以构建混合云同城容灾系统:

  1. 使用注册集群管理 IDC / 第三方公共云 K8s 集群
  2. 实现云下网络与云上 VPC 的互联互通
  3. 创建舰队并关联集群
  4. 使用 GitOps 发布应用到多个集群(可选)
  5. 使用多集群网关管理多集群流量

1. 使用注册集群管理 IDC / 第三方公共云 K8s 集群

本步骤需要将您的 IDC / 第三方公共云 K8s 集群注册到阿里云上。您需要在 ACK/ACK One 创建一个注册集群,并通过集群连接信息中提供的集群导入代理配置 yaml,将您云下 K8s 集群接入注册集群,请详见通过注册集群统一管理任意环境下的 Kubernetes 集群 [ 10]

如果您的云下集群还需要将工作负载弹性到云上,可以参见构建混合弹性容器集群(弹性 ECS) [1****1] 和构建混合弹性集群(ECI) [ 12] 。如需应对大量突发情况,可对 ECI 进行高可用配置,请参见创建多可用区的 ECI Pod [ 13]

IDC / 第三方公共云 K8s 集群成功接入后,注册集群的状态会变成 “运行中”

图片

2. 实现云下网络与云上 VPC 的互联互通

构建混合云同城容灾系统,需要通过多集群网关对云上云下的应用 Pod 进行统一流量管理,所以需要连通 IDC 网络与多集群网关所在 VPC(默认同 ACK One Fleet 相同 VPC)。将 IDC 网络与云上 VPC 网络连接的方案可参见 VPC 与本地 IDC 链接 [ 14] 。建议采用专线,连通云上云下网络,请详见混合网络概述 [ 15] ,主要流程步骤简介如下:

a. 将云下网络通过物理专线接入阿里云。阿里云提供的专线接入方案,请参见物理专线连接 [ 16]

b. 创建专线连接本地数据中心边缘网络设备与云上网关设备边界路由器。

c. 将云上边界路由器与云上专有网络 VPC 加入同一个云企业网。

d. 配置云上边界路由器和本地数据中心 BGP 网络。

e. 云上云下连通性测试。

f. 配置云下网络到云上云产品内网 IP 地址段的路由。

3. 创建舰队并关联集群

在 ACK One 控制台 [ 17] 创建舰队,并关联已成功导入的注册集群和您新建的 ACK 集群。如下所示:

图片

4. 使用 GitOps 发布应用到多个集群(可选)

本步骤主要是在您的 ACK 集群和云下集群部署您的应用,您可以选择使用 GitOps 来管理您的多集群应用,详细操作可参考使用 GitOps 部署 web-demo 应用到多个集群 [ 18]

发布成功后,可在 GitOps 控制台查看您的应用和资源的状态,确保两个集群中应用在相同 namespace(多集群网关要求 service 相同 name、相同 namespace)。以下是 web-demo 在 ACK 集群中的状态:

图片

5. 使用多集群网关管理多集群流量

最后依据以下几步,使用多集群网关来管理多集群流量,实现应用同城容灾,请详见基于多集群网关实现同城容灾方案 [ 19]

  1. 在 ACK One Fleet 中开启多集群网关能力;
  2. 在 Fleet 中通过创建 MseIngressConfig 来创建网关,并添加 ACK 集群和注册集群到网关;
  3. 在 Fleet 中创建路由规则(Ingress)实现同城容灾。同城容灾对应的 Ingress 如下所示(namespace 与所发布的应用的 namespace 一致):
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: web-demonamespace: web-demo
spec:ingressClassName: mserules:- host: example.comhttp:paths:- path: /svc1pathType: Exactbackend:service:name: service1port: number: 80

总结

ACK One 提供了完整的多集群管理能力,从集群接入,到应用分发,再到流量管理,支持一站式的应用的管理。对于混合云场景,注册集群还支持以 Serverless 方式(如 ECI)按需调度云上算力,从而快速应对服务的大规模突发,并无需您运维节点,聚焦应用本身;GitOps 可方便管理云上云下集群应用,并可构建自动化的 CI/CD 流水线,便利应用升级运维;多集群网关则提供强大的流量管理能力,对南北向多集群流量进行统一管理,减少单独管理多个集群的成本,降低架构复杂性,提升流量管理效率。

欢迎加入 ACK One 客户交流钉钉群与我们进行交流。(钉钉群号: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.534659e41FBHfX

[2] ACK One 注册集群

https://help.aliyun.com/zh/ack/overview-9?spm=a2c4g.11186623.0.0.2e9c6fdcz1OREh

[3] ACK One 舰队

https://help.aliyun.com/zh/ack/fleet-management-overview?spm=a2c4g.11186623.0.0.42b359e4CgVm5w

[4] Argo CD

https://argoproj.github.io/cd/

[5] Open Cluster Management

https://open-cluster-management.io/

[6] ACK One 多集群网关

https://help.aliyun.com/zh/ack/multi-cluster-gateway-overview

[7] MSE Ingress

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

[8] ACK One GitOps

https://help.aliyun.com/zh/ack/gitops-overview?spm=a2c4g.11186623.0.0.1f6759e4A2m8gU

[9] 舰队管理网络规划

https://help.aliyun.com/zh/ack/fleet-management-network-planning?spm=a2c4g.11186623.0.0.1b1e5f8bDveDi5

[10] 通过注册集群统一管理任意环境下的 Kubernetes 集群

https://help.aliyun.com/zh/ack/use-registered-clusters-to-centrally-manage-external-kubernetes-clusters?spm=a2c4g.11186623.0.0.6710398eTddS7f

[11] 构建混合弹性容器集群(弹性 ECS)

https://help.aliyun.com/zh/ack/build-a-hybrid-cloud-cluster-and-add-ecs-instances-to-the-cluster#task-2249354

[12] 构建混合弹性集群(ECI)

https://help.aliyun.com/zh/ack/scale-out-elastic-container-instances#task-2489901

[13] 创建多可用区的 ECI Pod

https://help.aliyun.com/zh/ack/serverless-kubernetes/user-guide/create-ecis-across-zones

[14] VPC 与本地 IDC 链接

https://help.aliyun.com/zh/vpc/user-guide/network-connection-overview?spm=a2c4g.11186623.0.0.3a557755mYSyRf#section-fdz-nsk-w2b

[15] 混合网络概述

https://help.aliyun.com/zh/ack/overview-of-hybrid-networks?spm=a2c4g.11186623.0.0.64fb2fdaU19Ju1

[16] 物理专线连接

https://help.aliyun.com/zh/express-connect/user-guide/physical-connection/

[17] ACK One 控制台

https://account.aliyun.com/login/login.htm?oauth_callback=https%3A%2F%2Fcs.console.aliyun.com%2Fone%3Fspm%3Da2c4g.11186623.0.0.234c3163R6h8Fu

[18] 使用 GitOps 部署 web-demo 应用到多个集群

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.2dc35f8b7vZoiw#34a9f1707ex8d

[19] 基于多集群网关实现同城容灾方案

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.2c573e36yWmacA

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

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

相关文章

学习Android的第十六天

目录 Android 自定义 Adapter Adapter 接口 SpinnerAdapter ListAdapter BaseAdapter 自定义 BaseAdapter 参考文档 Android ListView 列表控件 ListView 的属性和方法 表头表尾分割线的设置 列表从底部开始显示 android:stackFromBottom 设置点击颜色 cacheColorH…

【Linux】28、命令行参数 语法格式

文章目录 一、没有括号二、[]三、{}四、<>五、...六、|七、() 命令行参数很复杂&#xff0c;通过 --help 会看到很多符号&#xff0c;比如 [] {} () <> | …&#xff0c;他们都是什么意思呢&#xff1f;一般格式如下&#xff1a; 命令<必选参数1|必选参数2>…

【自然语言处理】:实验4布置,预训练语言模型实现与应用

清华大学驭风计划 因为篇幅原因实验答案分开上传&#xff0c;自然语言处理专栏持续更新中&#xff0c;期待的小伙伴敬请关注 有任何疑问或者问题&#xff0c;也欢迎私信博主&#xff0c;大家可以相互讨论交流哟~~ 案例简介 2018年&#xff0c;Google提出了预训练语言模型BE…

基于PSO优化的GRU多输入时序回归预测(Matlab)粒子群优化门控循环单元神经网络时序回归预测

目录 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 亮点与优势&#xff1a; 二、实际运行效果&#xff1a; 三、部分程序&#xff1a; 四、完整代码数据分享下载&#xff1a; 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 本代码基于Matlab平台…

扩展语音识别系统:增强功能与多语言支持

一、引言 在之前的博客中&#xff0c;我们成功构建了一个基于LibriSpeech数据集的英文语音识别系统。现在&#xff0c;我们将对系统进行扩展&#xff0c;增加一些增强功能&#xff0c;并尝试支持多语言识别。 二、增加增强功能 语音合成 --除了语音识别&#xff0c;我们还可以…

文物保护系统守护历史岁月,成都青铜展科技闪耀

一、“吉金万里-中国西南青铜文明展”隆重开幕 1月27日&#xff0c;“吉金万里-中国西南青铜文明展”在成都金沙遗址博物馆向公众开放&#xff0c;奉上一场精彩的青铜文明“盛宴”。本次展览汇集了中国西南地区32家文博单位&#xff0c;以青铜器为代表的294件经典文物&#xf…

OBD部署OceanBase集群-配置文件方式

前一篇文章介绍了OBD白屏可视化方式部署OceanBase集群 &#xff0c;其原理是把可视化设置生成为一个配置文件&#xff0c;然后使用OBD命令部署集群 本篇想使用命令行加配置文件方式&#xff0c;只部署OceanBase和ODProxy两个组件 服务器参数配置和 oceanbase-all-in-one-*.ta…

LeetCode 0589.N 叉树的前序遍历:深度优先搜索(DFS)

【LetMeFly】589.N 叉树的前序遍历&#xff1a;深度优先搜索(DFS) 力扣题目链接&#xff1a;https://leetcode.cn/problems/n-ary-tree-preorder-traversal/ 给定一个 n 叉树的根节点 root &#xff0c;返回 其节点值的 前序遍历 。 n 叉树 在输入中按层序遍历进行序列化表…

及其详细的Markdown基础-学习笔记(附有使用案例)

Markdown 基础语法 查看更多学习笔记&#xff1a;GitHub&#xff1a;LoveEmiliaForever 标题创建 标题语法格式 在文字前添加一至六个#即可创建标题 标题是有等级的&#xff0c;具体等级根据#个数决定 由于标题等级参与构建整篇文章的架构&#xff0c;编写时应该遵循如下规…

第九篇:node静态文件服务(中间件)

&#x1f3ac; 江城开朗的豌豆&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 &#x1f4dd; 个人网站 :《 江城开朗的豌豆&#x1fadb; 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! &#x1f4d8; 引言&#xff1a; 当今互联网时代&am…

JavaScript中延迟加载的方式有哪些

在web前端开发中&#xff0c;性能优化一直是一个非常重要的话题。当我们开发一个页面时&#xff0c;为了提高用户的体验和页面加载速度&#xff0c;我们往往需要采用一些延迟加载的技术。JavaScript中延迟加载的方式有很多种&#xff0c;下面我将为大家详细介绍几种常用的方式。…

android studio模拟器不能打开

Andriod:The selected AVD is currently running in the Emulator. Please exit the emulator instance… 1.点击 2.删除下面文件 3.重新打开即可 参考

Midjourney Niji魔法绽放:风格各异、场景多变的动漫女孩

所有的提示词&#xff0c;gzh&#xff1a;七哥的AI日常 大家好&#xff0c;欢迎回来&#xff0c;今天我们继续学习niji。 今天我们为大家制作了29款可爱的风格各异的女孩图片&#xff0c;可用于制作手机壁纸、海报、宣传画包括卡头人像垫图等&#xff0c;图片风格各异&#x…

天锐绿盾 | 企业办公、设计院、设计行业图档加密系统、办公核心文件数据\资料防泄密软件

天锐绿盾作为一款专业的企业信息化安全管理解决方案&#xff0c;特别适用于企业办公、设计院、设计行业等场景&#xff0c;为这些行业提供图档加密系统和办公核心文件数据防泄密软件。 PC端&#xff1a;https://isite.baidu.com/site/wjz012xr/2eae091d-1b97-4276-90bc-6757c5d…

一起玩儿物联网人工智能小车(ESP32)——63 SD和TF卡模块的使用

摘要&#xff1a;本文介绍SD和TF卡模块的使用方法 前面介绍了非易失性存储的使用方法&#xff0c;由于空间和本身只支持键值对的限制&#xff0c;非易失性存储只适用于少量数据的记录。而不适用于各种声音、图片、大量数据等情况的使用。这时候就需要有文件系统或者更大容量存…

如何将OpenAI Sora生成的普通AI视频转化为Vision Pro的空间视频,沉浸式体验

【基于AI的Vision Pro空间视频】工作流:这个工作流程用于将2D视频转换为适用于 Vision Pro的Spatial视频: 1、使用Deep3D将2D视频转换为3D SBS: 使用Deep3D工具将2D视频转换为3D SBS格式: 转换例子:Prediction– lucataco/deep3d – Replicatehttps://replicate.com/…

Linux 性能分析工具汇总

Linux 性能分析工具汇总 出于对Linux操作系统的兴趣&#xff0c;以及对底层知识的强烈欲望&#xff0c;因此整理了这篇文章。本文也可以作为检验基础知识的指标&#xff0c;另外文章涵盖了一个系统的方方面面。如果没有完善的计算机系统知识&#xff0c;网络知识和操作系统知识…

【Oracle】玩转Oracle数据库(二):体系结构、存储结构与各类参数

前言 嘿伙计们&#xff01;准备好了吗&#xff1f;今天我要和你们探讨一个酷炫的话题——Oracle数据库&#xff01;&#x1f389; 在这篇博文【Oracle】玩转Oracle数据库&#xff08;二&#xff09;&#xff1a;体系结构、存储结构与各类参数&#xff0c;我们要揭开Oracle数据库…

二叉搜索树——迭代实现

———————————————————— 普通的树形结构中数据是杂乱无章的&#xff0c;实际意义不大&#xff0c;要想更好的管理数据&#xff0c;需要让数据有序&#xff0c;二叉搜索树又称二叉排序树&#xff0c;是一种特殊的树形结构。 规定一般的二叉搜索树的左节点小于…

FPGA 高速接口(LVDS)

差分信号环路测试 1 概述 LVDS&#xff08;Low Voltage Differential Signalin&#xff09;是一种低振幅差分信号技术。它使用幅度非常低的信号&#xff08;约350mV&#xff09;通过一对差分PCB走线或平衡电缆传输数据。大部分高速数据传输中&#xff0c;都会用到LVDS传输。 …