弹性计算 Region 化部署和跨可用区容灾介绍

 

凌云时刻 · 技术

导读:本期为“玩转 ECS”系列第 6 讲,由阿里云弹性计算架构负责人李钟(谢顿)为大家介绍阿里云 region 化部署和跨可用区容灾的实践经验。

嘉宾 | 李钟

整理 | 吴晨雪

来源 | 凌云时刻(微信号:linuxpk)

前言

近期,“凌云时刻”特别推出“阿里云玩转 ECS”系列课程,每周二、周四准时更新,欢迎关注。点击文末“阅读原文”可查看本系列所有已发布内容。

本次分享由阿里云弹性计算架构负责人李钟(谢顿)为大家介绍阿里云 region 化部署和跨可用区容灾的实践经验。

关键词:弹性计算、单元化、跨可用区容灾

李钟(谢顿),阿里云智能弹性计算高级技术专家。2015 年 7 月加入阿里云弹性计算团队,目前负责阿里云弹性计算管控架构团队,主导弹性计算管控系统架构的优化和演进。

以下内容根据演讲视频以及 PPT 整理而成。

本次分享主要围绕以下三个方面:

一、Region 和可用区介绍

二、Endpoints 和资源作用域

三、多可用区容灾和 Region 化部署

弹性计算 Region 化部署和跨可用区容灾本身是非常复杂的课题,本次分享将介绍如何选择 Region,同时结合阿里云在 Region 化部署和跨可用区容灾的实践经验,分享多 region 部署场景中如何使用阿里云弹性计算的最佳实践,并结合弹性计算的实践经验探讨如何基于阿里云多可用区实现跨地域容灾。

Region 和可用区介绍

该部分主要介绍 Region 和可用区,包括阿里云建设 Region 和可用区的原因、划分等。

 Region(地域)与 Available Zone(可用区)

Region(地域):根据定义,Region 是相互独立的地理区域,Region 中包含多个 Available Zone。可通过阿里云 Region 和可用区分布图直观了解。

Available Zone(可用区):Available Zone 是 Region 内网络和电力相互独立的区域,具有两个主要特点。第一,Available Zone 网络和电力相互独立,具有故障隔离能力。当一个可用区内部网络、电力出现问题时,不会影响其他可用区。第二,相同 Region 内的可用区之间内网互通,通过高速网络连接,网络延迟低(ms 级)。

即可用区之间有故障隔离,同时相同 Region 内的可用区之间网络延迟较低,可以将多个可用区视为整体提供服务,也为后续做跨可用区容灾提供了基础。

此处需要指明,并不是先规定了地域和可用区后才发现可支持高可用服务建设,而是在有高可用服务需求的基础上通过 Region 与可用区方式进行了资源划分。

 如何选择 Region?

选择一个 Region 有以下三点重要影响因素:

第一,地域选择需要符合相应政策和法律合规性需要。例如向美国提供服务,要求对应数据与服务器资源必须在该国家内部,那么根据下方 Region 与可用区分布,只能申请美西、美东两处资源。

第二,需要根据所需云产品在各个地域的功能开通情况和 SLA 选择合适区域。

第三,一般选择距离用户更近且网络延迟更低的地域,保证用户快速接入。

虽然 Region 的选择看似条款化,但是实际选择时是更为简单直观的,较易得到最优选择。

 阿里云 Region 与可用区分布

目前为止,阿里云公共云在全球建设 21 个地域 63 个可用区,资源正在快速增长中,未来将支持更多形态。

下图所示体现了阿里云在全球多个地理位置提供服务的能力,可见 Region 是一个地理概念。例如当用户在华北 2(北京)Region 购买资源时,对应的 ECS、RDS 产品的确是在该地域范围内。

目前 Region 与可用区分布较集中在中国,其他国家地区也有分布,在南美与非洲缺少Region建设,是后续的发展方向。

而 Region 的使用稍显复杂。与各个Region交会并不直接使用其名字,而是通过REGION_ID。REGION_ID看似杂乱,其实具有一定特点,可大致分为以下三种:

中国 REGION_ID 为 cn-(城市名),如 cn-hangzhou。

大面积国家 REGION_ID 为(国家代码)-(方位)-(编号),如 USA-EAST-2。

其他地区 REGION_ID 为(地区)-(方位)-(编号)。

Endpoints 和资源作用域

该部分介绍使用 Region 与可用区时需要关注的两个关键点:Endpoints 和资源作用域。

 Endpoints

Endpoints 是调用 ECS API 的接入地址。

调用 ECS API 首先需要获取 Endpoints,即需要知道需要调用的地域的域名,才能调用到相应服务。第二需要有 AK,通过某种阿里云特定的算法对调用串做一些加签。如此便可以完成一次请求。

如下表所示,根据不同 Region 类型,Endpoints 接入方式有如下三种:

第一种类型是中心域名 Region,其接入点域名地址是 ecs.aliyuns.com。此类老地域使用兼容模式只能通过中心域名接入,如 cn-beijing。

第二种类型是 Region 化域名,其接入点为 Region 化域名地址 ecs.${REGION_ID}.aliyuns.com。此类 Region 使用 Region 化域名调用,兼容中心域名接入,如 cn-zhangjiakou。

第三种类型开始考虑不兼容中心域名接入的 Region 化域名,只能通过 Region 化域名地址 ecs.${REGION_ID}.aliyuns.com 接入,如  cn-heyuan。

针对以上三种类型 Region 的接入得到了最佳实践。非中心域名的地域,建议使用 Region 化域名地址 ecs.${REGION_ID}.aliyuns.com。部分 Region 只能使用中心域名访问,后续会之间切换为 Region 化域名。

 资源作用域

使用 ECS 过程中会有多种资源,每一种资源有其特定的作用域。

下表罗列了部分资源。如账号、角色、AK 此类为全局性信息,所有 Region 共享。实例、云盘为可用区级别的概念,创建实例、云盘都需要选择一个特定的可用区,但是实例只能挂载相同可用区的云盘。快照、镜像资源、keypair、安全组的作用域均为 Region,在 Region 内各个可用区均可访问。当需要跨 Region 使用快照、镜像资源时,需要先进行资源复制操作,在另一个 Region 上形成新资源才可以使用。

资源作用域并非规定成章,有时会存在变化,大部分时期是上述情况。

多可用区容灾和 Region 化部署

该部分介绍如何利用 Region 与可用区地域分布以及可用区电力、网络故障隔离和低延迟的特点实现多可用区容灾和 Region 化部署。

 跨可用区容灾——冷备方式

冷备方式指两个可用区,一个主可用区运行,一个不运行作为备份。一旦运行中的可用区服务故障,部署并运行备份可用区。冷备方式较易实现,其缺点为主备切换耗时大(分钟级)。

单可用区提供服务:如下图所示,可用区 a 和可用区 b 同时提供两套服务,由单可用区提供服务。正常情况下可用区a提供服务,可用区b的 ECS 服务不进行部署和运行,对应的 SLB 没有流量。流量从 DNS 解析到可用区 a 的 SLB,接入请求后 SLB 会分发到某个 ECS。

RDS 主备架构:两个 ECS 访问同一个 RDS,RDS 采用主备结构,主 RDS 提供读写服务,同时有一条路径自动同步数据到备 RDS,保证两个可用区的数据一致性与及时性,为容灾切换提供基础。

无状态服务:ECS 部署无状态服务,所有业务状态存储在数据库中或可从数据库恢复。如此才能在可用区 a 故障时将整个业务切换到可用区 b。

故障恢复方案:可用区 a、b 存在电力、网络的物理隔离,延迟低,发生可用区级别故障时可切换可用区提供服务。可用区 a 发生问题时,部署并运行可用区 b 服务,RDS 主备切换,可用区 a 恢复后可继续进行数据同步。切换 DNS,可用区 b SLB 接收流量开始提供服务。

劣势:冷备方式比单纯的单个可用区提供服务有更强的容灾能力,但是其缺点是切换可用区启动 ECS、启动服务等、运行 SLB 等等操作耗费一定时间,属于分钟级别的容灾。

 跨可用区容灾——双活方式

双活容灾方式与冷备方式区别在于两个可用区同时运行,数据同步。一旦某一可用区服务故障,另一可用区继续提供服务。双活方式同样易于实现,且主备切换耗时低(s 级)。

双可用区同时提供服务:如下图所示,有可用区 a 和可用区 b 同时提供两套服务。SLB 同时挂载两个可用区的 ECS 服务,每个可用区的 SLB 需要将请求分发给两个可用区的 ECS。

RDS 主备架构:自动同步数据,保证两个可用区的数据一致性与及时性。正常情况下两可用区服务均访问 RDS 主节点。

无状态服务:ECS 部署无状态服务,所有业务状态存储在数据库中或可从数据库恢复。

故障恢复方案:当一个可用区发生问题时,RDS 可自动主备切换。DNS 定时检测 SLB 状态,屏蔽故障可用区,SLB 定时检测 ECS 服务状态,屏蔽故障服务。该场景下大部分检测自动实现,部分复杂场景下可能需要手动确认故障,但是该切换过程迅速,可实现秒级切换。

以上两种跨可用区容灾方式较为实用、常见,实现条件均是可用区之间具备网络、电力的物理隔离以及低延迟特点。

 跨 Region 部署

此处仅介绍较为简单的跨 Region 部署模式。

首先进行地域划分。Region 化部署完成后,每个 Region 中由可用区容灾的集群保证高可用性。但是客户端调用地域时一个 Region 不能支持所有用户与资源访问。因此首先需要根据用户或者资源所属地域进行划分,通过 DNS 服务获取 Region 化地址。该 DNS 可能是阿里云提供的服务或其他服务,DNS 根据用户或资源返回相应的 Region 化地址。

例如某用户访问 Region 1,则调用 Region 1 的服务提供相应支持,某用户访问 Region 2,则调用 Region 2 的服务提供相应支持。

Region 内双可用区容灾。地域划分完成后,当可用区级别问题扩大到 Region 级别问题场景下,并未提供 Region 级别容灾能力,但是提供了隔离能力。例如当Region1发生问题,无法切换到 Region 2 进行容灾,但是可以实现隔离,当 Region 1 出现问题时 Region 2 不受影响,即能够保存一部分工作服务的能力。

若需要提供 Region 级别容灾能力,需要实现跨 Region 的数据同步或复制,将一个 Region 的数据、用户状态等复制到另一个 Region,即可实现 Region 切换。如此将更加复杂。Region 级别容灾等复杂方案此处不做介绍,有兴趣者可自行查阅资料。

故障影响和恢复。用户最终选择的容灾方式、故障隔离级别、故障恢复方案等需要根据自身业务需求、实现难度与故障概率等进行判断,选择最适合自身业务的方案。

综上所述,本次分享介绍了 Region、可用区的定义、故障隔离与低延迟特性、关键点以及跨可用区容灾等基本概念。大家可以利用阿里云的基础架构以及业务相应支持提高服务可用性,在一定级别实现容灾,提供更好的服务。

感兴趣的同学可通过学习更加具体的场景下不同跨可用区容灾方案,更加深入了解跨 Region 容灾。

END

往期精彩文章回顾

6 岁!是时候重新认识下 Serverless 了

饿了么技术往事(下)

IDC发布2020上半年SD-WAN报告:阿里云领跑国内服务市场

Serverless 在编程教育中的实践

弹性计算安全组最佳实践及新特性介绍

何万青:直呼其名——我与中国计算机学会十年命运交织

基于弹性计算网络能力提升容器密度最佳实践

申通完美支撑“双11”亿级包裹背后的云基础设施

技术人成长路径之我见

容器技术20年:容器引擎与江湖门派


长按扫描二维码关注凌云时刻

每日收获前沿技术与科技洞见

相关推荐