阿里云服务网格ASM多集群实践(一)多集群管理概述

本文涉及的产品
私网连接 PrivateLink,5万GB流量 1.5万小时实例时长
简介: 服务网格多集群管理网络打通和部署模式的多种最佳实践

【阅读原文】戳:阿里云服务网格ASM多集群实践(一)多集群管理概述

引言:在应用部署日趋复杂的业务场景中,多集群部署逐渐成为一个重要的部署实践。多集群可以带来显著地可用性优势或对多套部署环境形成天然隔离,带来稳定性和安全性收益。然而,正确地管理多集群是充满挑战的,在实践中,为了使得多集群可以形成互备,通常都会将多个集群部署在不同的机房、地域或公有云上,如何打通多集群的网络是第一个需要面对的挑战。其次,针对不同的多集群部署实践,往往需要按照特定的规则管理流量。本系列文章将以场景化的形式为读者展示几种典型的多集群实践,以及多集群部署可能遇到的挑战和解决方案,并在随后的内容中带来部分场景的实操流程。

 

 

多集群网络互通

 

 

阿里云在多个地域部署了云服务基础设施,每个地域包含多个可用区。地域是指物理的数据中心。资源创建成功后不能更换地域。而可用区(Availability Zone,简称AZ)是指在同一地域内,电力和网络互相独立的物理区域。同一可用区内实例之间的网络延时更小。

 

 

在一些多集群实践中,我们可能希望服务能够进行跨集群调用,例如多集群灾备场景中,当一个集群的应用发生故障时,我们希望能够调用另一集群的同一服务来完成无感的故障切换。由于阿里云容器服务集群的网络归属于其所属地域(Region)的某一虚拟私有网络(VPC)中,因此,为了实现集群之间互相调用,我们需要将集群所属的VPC网络打通。在接下来的章节,本文将介绍打通集群网络的三种方式,分别是:PrivateLink,CEN和ASM东西向网关。

 


 

通过阿里云PrivateLink打通跨可用区网络

 

PrivateLink是利用阿里云的私有网络进行服务交互的一种方式。利用PrivateLink,用户可以通过私有网络打通多个VPC的网络,无需创建NAT网关(NAT Gateway)、弹性公网IP(Elastic IP)等公网出口。交互数据不会经过互联网,有更高的安全性和更好的网络质量。

 

 

但是,PrivateLink无法打通跨地域VPC之间的网络,为此,阿里云还推出了打通跨地域网络的解决方案 -- 阿里云云企业网(CEN)用于跨地域的网络打通。

 

 

通过阿里云云企业网CEN打通跨地域网络

 

云企业网CEN(Cloud Enterprise Network)是运行在阿里云私有全球网络上的一张高可用网络。云企业网通过转发路由器TR(Transit Router)帮助您在跨地域专有网络之间,专有网络与本地数据中心间搭建私网通信通道,为您打造一张灵活、可靠、大规模的企业级云上网络。使用云企业网,您可以不受地域限制地打通任意地域的任意VPC之间网络通信。

 

 

 

通过ASM东西向网关打通跨地域网络

 

除PrivateLink和CEN外,ASM作为集群网络基础设施,提供了一种更经济灵活的网络打通方式 -- ASM东西向网关。通过部署ASM东西向网关并将其暴露于公网,可以实现通过公网链路将集群网络打通,实现跨集群应用调用。由于ASM东西向网关通过公网打通集群间网络,相比于CEN专线打通可能存在更高的网络延迟,但相比于CEN提供了更高的性价比。用户应当综合评估业务对网络质量的综合诉求,选择适用的方案。

 

 

 

 

多集群典型场景

 

 

针对不同的业务需求,多集群部署存在多种实践,在接下来的章节中,笔者将将介绍几种典型的多集群实践。由于多集群的网络环境、依赖关系都相比于单集群场景更为复杂,因此,熟悉这些经过验证的最佳实践是相当有必要的。

 

 

隔离模式

 

ASM控制平面默认假设一个服务(Service)的所有端点(Endpoints)都是可达的,然而在一些场景下我们或许不希望发生跨集群访问。例如某应用存在分区服务,每个区独立部署在一个集群中,每个集群有独立的存储(数据库等)供应用消费,但集群间的流量规则和应用拓扑完全一致,希望使用统一的控制平面管理,使用这种部署模式的典型业务例如游戏。针对这种场景,ASM提供了集群流量保持功能,您可以参考ASM官网文档[1]获取流量保持功能的更多信息,或持续关注本系列的后续文章中带来的最佳实践实操。

 

 

 

分布式应用

 

一些分布式应用可能因为权限隔离、资源依赖等原因,需要部署在多个集群里,多个集群中的应用又存在交叉调用,这是一种典型的多集群部署实践,它的拓扑大致像这样。在使用这种多集群部署时,由于多个集群被同一ASM实例管理,因此,用户需要确保多集群之间的服务不发生冲突(例如集群1的default/httpbin服务和集群2的default/httpbin服务将被控制平面视为同一个服务)。

 

 

 

多集群灾备

 

跨地域或者跨可用区的多集群部署是利用多地域带来的物理隔离构建灾备体系的常见部署形态,ASM提供了跨地域负载均衡能力,利用跨地域负载均衡的跨地域故障转移功能,可以在默认情况下将流量保持在本地集群内,而当本地服务服务发生故障不可用时,自动将针对该服务的调用切换至部署于其他地域、可用区的集群中的同名服务,实现跨地域容灾。您可以参考ASM官网文档[2]获取跨级群故障切换的更多信息,或持续关注本系列的后续文章中带来的最佳实践实操。

 

 

 

多集群多环境部署

 

在一些大规模微服务(如今部分微服务系统达到了1000+Services)的开发过程中,测试环境部署往往是充满挑战的,被广泛采用的部署方式主要是以下两种:

 

全量单一测试环境:最简单的部署模式,所有开发者共享一套测试环境,对于给定的应用,当前环境里只能是该应用的某一个测试版本,应用开发者将环境部署为自己的版本进行测试时,其他开发者只能等待。同时,一旦某一应用的开发者部署了无法正常工作的版本,则调用链上所有其他应用开发者的测试都受到影响。

 

全量多套测试环境:每一个开发者单独部署一套测试环境,对于规模稍大的应用来说,这种部署方式的成本可能是不可接受的(试想为一个上千服务规模的应用做一套独立部署是多么夸张的资源浪费)。

 

以上两种方式都存在较为非常显著的缺陷,理想情况下,应该可以做到将对应服务开发人员的测试流量路由到其自己版本,而其他开发者则应该路由到稳定的版本,这通常需要自行实现或是借助一些Framework能力,前者有着显著的开发成本和实施成本;后者则大多有存在语言限制,对语言应用不够友好。

 

通过使用ASM的泳道模式则可以轻松地在多语言应用环境下,在不对应用做任何入侵的情况下,为每个开发人员建立一条独立泳道,且通过引流规则匹配对请求特征(例如用户ID、类型等)进行引流,即可实现每个开发者只在自己的泳道中部署正在开发中的应用,而调用链上的其他应用则fallback回到基线环境,极大地提升了开发环境部署的灵活程度。您可以参考ASM官网文档[3]获取流量泳道功能的更多信息,或持续关注本系列的后续文章中带来的最佳实践实操。

 

 

相关链接:

 

[1] ASM官网文档

https://help.aliyun.com/zh/asm/user-guide/enable-the-traffic-retention-function-in-the-asm-local-cluster-in-the-multi-cluster-scenario?spm=5176.13895322.help.dexternal.6dac5fcflaqePi

 

[2] ASM官网文档

https://help.aliyun.com/zh/asm/user-guide/use-asm-to-implement-cross-region-disaster-recovery-and-load-balancing?spm=a2c4g.11186623.0.i4

 

[3] ASM官网文档

https://help.aliyun.com/zh/asm/user-guide/traffic-swimlane/?spm=a2c4g.11186623.0.i8

 


我们是阿里巴巴云计算和大数据技术幕后的核心技术输出者。

欢迎关注 “阿里云基础设施”同名微信微博知乎

获取关于我们的更多信息~


相关文章
|
8天前
|
运维 Kubernetes 安全
《阿里云产品四月刊》—享道出行:容器弹性技术驱动下的智慧出行稳定性实践(1)
阿里云瑶池数据库云原生化和一体化产品能力升级,多款产品更新迭代
|
8天前
|
弹性计算 Cloud Native 数据库
《阿里云产品四月刊》—享道出行:容器弹性技术驱动下的智慧出行稳定性实践(2)
阿里云瑶池数据库云原生化和一体化产品能力升级,多款产品更新迭代
|
8天前
|
弹性计算 Serverless 调度
《阿里云产品四月刊》—享道出行:容器弹性技术驱动下的智慧出行稳定性实践(3)
阿里云瑶池数据库云原生化和一体化产品能力升级,多款产品更新迭代
|
8天前
|
弹性计算 Kubernetes 调度
《阿里云产品四月刊》—享道出行:容器弹性技术驱动下的智慧出行稳定性实践(4)
阿里云瑶池数据库云原生化和一体化产品能力升级,多款产品更新迭代
|
9天前
|
Kubernetes 网络协议 Docker
k8s 开船记-故障公告:自建 k8s 集群在阿里云上大翻船
k8s 开船记-故障公告:自建 k8s 集群在阿里云上大翻船
|
16天前
|
存储 弹性计算 安全
构建高效企业应用架构:阿里云产品组合实践深度解析
该方案展现了阿里云产品组合的强大能力和灵活性,不仅满足了当前业务需求,也为未来的扩展打下了坚实的基础。希望本文的分享能为读者在设计自己的IT解决方案时提供一定的参考和启发。
114 1
|
4天前
|
存储 大数据 关系型数据库
从 ClickHouse 到阿里云数据库 SelectDB 内核 Apache Doris:快成物流的数智化货运应用实践
目前已经部署在 2 套生产集群,存储数据总量达百亿规模,覆盖实时数仓、BI 多维分析、用户画像、货运轨迹信息系统等业务场景。
|
11天前
|
人工智能 安全 Go
使用阿里云服务网格 ASM LLMProxy 插件保障大模型用户数据安全
本文介绍如何使用ASM LLMProxy动态为LLM请求添加API_KEY、使用模式匹配以及私有大模型判别请求敏感信息并根据判别结果拒绝请求等功能,帮助用户提升LLM场景下的安全水位。
|
8天前
|
弹性计算 安全 前端开发
阿里云服务器ECS通用型、计算型和内存型详细介绍和性能参数表
阿里云ECS实例有计算型(c)、通用型(g)和内存型(r)三种,主要区别在于CPU和内存比例。计算型CPU内存比1:2,如2核4G;通用型为1:4,如2核8G;内存型为1:8,如2核16G。随着技术迭代,有第五代至第八代产品,如c7、g5、r8a等。每代实例在CPU型号和主频上相同,但性能有所提升。实例性能参数包括网络带宽、收发包能力、连接数等。具体应用场景如计算型适合高网络包收发、通用型适合企业级应用,内存型适合内存数据库等。详细信息可参阅阿里云ECS页面。
|
3天前
|
存储 缓存 安全
阿里云服务器实例规格选择参考:经济型、通用算力型、计算型、通用型、内存型区别
当我们在通过阿里云的各种活动选择云服务器实例规格的时候会发现,相同配置的云服务器往往有多个不同的实例可选,而且价格差别也比较大,这会是因为不同实例规格的由于采用的处理器不同,底层架构也有所不同(例如X86 计算架构与Arm 计算架构),因此不同实例的云服务器其性能与适用场景是有所不同。目前阿里云的活动中,主要的实例规格可分为经济型、通用算力型、计算型、通用型、内存型,对于很多初次接触阿里云服务器的用户来说,了解他们之间的差别就是比较重要的了,下面小编来为大家简单介绍下它们之间的区别。
阿里云服务器实例规格选择参考:经济型、通用算力型、计算型、通用型、内存型区别