亚马逊AWS官方博客

利用云上灾备管理工具高效管理实例灾备配置

摘要

利用 CloudEndure 可以方便的在 Amazon Web Services (AWS) 不用区域之间,或者云下与 AWS 云之间迁移或者灾备 Amazon Elastic Compute Cloud (EC2) 实例。CloudEndure 提供了基于 Web 的用户界面来管理项目、配置启动蓝图等。在实际使用中发现,当实例数量过多时,该界面有一定的局限性,一次只能针对一台实例进行配置,不能高效地对多台实例灾备配置进行批量处理。与此同时,就机型与盘型的选择而言,灾备的日常演练与容灾准备可以选配不同的规格,以降低演练成本。此项区分又增加了配置的冗杂程度。本文介绍云上灾备中心解决方案的云上灾备管理工具提供的新功能(以下简称系统),着力解决上述两个问题,从而提高管理灾备项目,特别是多实例项目的工作效率,减少运维强度和出错率。

背景

去年我们曾推出云上灾备管理工具 1.0 版,着力于 AWS 云上不同区域之间迁移和保护 EC2 实例。由于在 AWS 云上不同区域作业,所以许多信息与配置得以方便获取。例如两区域之间的虚拟网 Amazon Virtual Private Cloud (Amazon VPC) 信息可以保持一致,实例机型与磁盘类型也可以复制源端。虽然某些机型并非所有区域都供应,但绝大多数情况下,这都不是问题。基于上述考虑,管理工具 1.0 版提供了不同区域之间虚拟网 VPC 的镜像复制功能,可以原封不动地把 VPC 复制到另一区域,作为灾备着陆区使用。

当涉及云下到 AWS 云上灾备建设与演练时,由于源端不是 AWS 云,因此诸多信息缺失,需要逐一确认。一份实例启动蓝图的配置,一般至少需要以下基本信息:

  • 子网类型及其地址
  • 安全组
  • 机型
  • 磁盘类型

复杂的启动蓝图配置还会涉及更多的信息。限于篇幅,本文从上述变量入手简化运维强度。其他复杂信息的配置留待工作展望中实现。上述变量粗略地可以分为两类,即网络安全类和硬件型号类。网络安全类设置并没有成本多寡方面的顾虑,因为在虚拟网中选择和使用子网以及安全组,所产生的收费只有一种。而对于硬件型号来说,则有多种选择,且收费不一。针对日常演练,可以选择经济型低配型号,节约成本。对于灾备准备,则可以选择生产用高配型号,保证性能。为了满足定期日常演练和灾备准备的不同需求,需要在经济型与生产用之间经常切换。如果所涉实例较多,在 CloudEndure 控制台上进行切换,显然比较繁琐与低效,且容易出错。

问题描述

具体来说,针对某项配置,需要在界面首先登录 → 选择相应项目 → 选择机器 (Machines) → 点击某一个待配置机器 → 选择蓝图 (Blueprint),之后在蓝图众多选项中具体配置。到目前为止,需点选共 5 步。在同一个项目内,如果有 n 台实例需要配置,光是点击进入配置界面,就需要操作 3n 步。

  • 针对子网,需要首先在子网中选择既有子网。通常会区分公网或者私网。公网通常有路由到互联网网关 IGW,私网需要连网的,有路由到网络地址转换网关 NAT。其次,需要在私网地址 (Private IP) 中选择自定 (Custom),然后输入一个属于所选子网网段,且可用的 IP 地址。此处需点选 5 步。
  • 针对安全组,需要在安全组 (Security Groups) 中勾选适用的安全组。此处需点选至少 2 步。本文提供了两种方法来提高安全组勾选的效率,分别是标签标记法和批量勾选法。
  • 针对机型,CloudEndure 会根据源端内核与内存大小计算推荐值。但是没有有效解决成本控制的问题。本文提供一个简单的算法推荐不同应用场景下的机型,同时也让用户自行选择目的区域所提供的任一机型。此处需点选 2 步。但是机型多杂,选择费力。
  • 针对盘型,不同类型的Amazon Elastic Block Store (EBS) 块存储设备价格不同,提供的吞吐量和性能也各异。不过就测试而言,最基础的类型 standard 大多数情况下也足够应付。本文提供简单的两种盘型选择方案。此处需点选至少 2 步,取决于卷数量。

本文要解决的问题,就是尽可能减少,甚至完全消灭上述步骤。

成本控制

  • 对于机型来说,经济型机型在 t2.micro, t2.small, t2.medium, t2.large 中选择,最高为 t2.large。生产用机型则没有特别的限制,根据源机的内核与内存在 m5 系列中选择可以满足性能要求者。如果还不够,则可以在列表中选择目的区域提供的任一机型。
  • 对于盘型来说,经济型盘型选用 STANDARD,生产用盘型选用 SSD (gp2)。

局限性

本文所讨论的系统,并不旨在完全取代 CloudEndure 控制台用户界面,亦不试图保证对该控制台界面所涉配置参数的全面覆盖。旨在特定运维条件下,最大化降低运维强度,提高工作效率。当然,云上灾备管理工具会持续扩展新功能,使得云上灾备管理更为便捷与高效。

高效配置

高效配置的核心是批量自动化处理,尽量减少手工步骤。管理工具整合 CloudEndure 复制实例信息以及目的区域虚拟网和机型信息,存入 DynamoDB 数据库,通过计算,批量地对 CloudEndure 项目的启动蓝图进行配置,实现高效管理的目的。简易的结构图如下所示。

新建项目

系统和 CloudEndure 一样以项目为单位进行管理,且依附于 CloudEndure 项目。当一个 CloudEndure 项目新建并正确配置后,方可对其进行管理。正确配置的定义是在项目中设置了 AWS 凭证 (AWS Credentials),并且完成了复制设置 (Replication Settings)。如果通过管理工具 EC2 实例温备模块新建项目,那么项目新建完成后就已经正确配置了。如果自行在 CloudEndure 上新建项目,则需要完成上述两部操作来正确配置。

要新建 CoudEndure 管理项目,在系统的 CloudEndure 管理项目界面中,点击加号弹出新建 CloudEndure 管理项目对话框。在 CloudEndure 项目下拉列表中,没有正确配置的项目是不可选的。建议名称与 CloudEndure 项目保持一致。目的区域不可选且与 CloudEndure 项目目的区域保持一致。该区域的虚拟网 VPC 会自动加载于 VPC 下拉列表。选择一个 VPC 绑定至项目并作为网络部分配置的参考范围。该 VPC 需要至少包含一个公网网段及一个私网网段。最后点击“新建”完成。

载入配置和安全组

在安装完代理软件,开始实例数据复制之后,可以进行启动蓝图的配置管理。第一步,是读取 CloudEndure 项目内实例信息并按照经济型规格初始化启动蓝图配置。点击启动蓝图载入启动蓝图。载入蓝图后,系统会集中显示项目内所有实例的内核、内存、盘型、机型、安全组、子网类型及地址等信息,一目了然。

在初始化载入启动蓝图的过程中,系统会根据标签信息关联安全组。具体来说,在绑定 VPC 的安全组中,可以设置键为 drp:ce:machine,值为实例名称的标签,以此把该安全组绑定到该实例。一个安全组可以绑定多个实例,用半角逗号分割多个实例名即可。例如在 dr-sg-ssh 的安全组中添加标签,键为 drp:ce:machine,值为:dr-pri-m4-x,dr-pri-m4-large。则该安全组会分别绑定到指定的两个实例。

安全组除了这种标签元数据的绑定模式,还可以使用对话框勾选,方法是点击启动蓝图选择安全组。一个实例可以适配多个安全组,一个安全组也可以绑定到多个实例。二者为多对多关系。

调整配置

在系统实例配置蓝图表中,勾选一个或多个待调整的蓝图,可以对其中的机型、盘型、子网、安全组进行调整。例如,将前缀为 dr-pub 的两个实例子网调整到公网,机型和盘型调整为生产用。点击启动蓝图调整启动蓝图。如果不想改变某项设置,选择“不变”。对于机型,如果对自动计算的机型不满意,可以选择“自选机型”,此时目的区域机型列表会加载,并变为可用,以便选择。

调整后的启动蓝图如下所示。此处,系统会根据子网类型找到合适的子网网段。对公网来说,需要有路由到互联网网关 IGW。然后,系统会在未使用的地址中,随机选择网络 IP 地址。可以看到机型已经调整为生产用高配型号 m5 系列,盘型也更改为 SSD。因为 t2.micro 可以满足 dr-pub-t3-nano 的性能要求,所以仍然使用 t2 系列。如果子网类型为私网,则系统在路由到 NAT 的子网网段中,随机选择未使用的 IP 地址。

可以看到,此处操作即是高效管理配置的核心所在。用户可以选择任意数量的实例配置,一键完成包括机型、盘型、子网类型以及网络地址的配置,且可以方便地在经济型和生产用机型和盘型之间的切换,最大限度的减少原来在 CloudEndure 控制台上的运维操作。

完成启动蓝图的调整后,可以点击启动蓝图配置启动蓝图,将调整好的蓝图一键适用到 CloudEndure 项目中。适用完成后,可以继续后续操作,包括测试启动实例,切换等。具体参考《利用云上灾备管理工具迁移和保护 EC2 实例》一文,不再赘述。

效率提升

在此做一个简单的计算。假设有 n 台实例,采用 CloudEndure 控制台来配置实例启动蓝图的子网类型及地址、安全组、机型、盘型,大约需要

(选择实例配置步骤 + 子网步骤 + 安全组步骤 + 机型步骤 + 盘型步骤) * n
= (3 + 5 + 2 + 2 + 2) * n
= 14n

如果使用本系统,可以批量对实例进行操作。考虑到安全组和其他设置是两个不同的对话框,则需要

(选择实例步骤 + 子网步骤 + 机型步骤 + 盘型步骤) + (选择实例步骤 + 安全组步骤)
= (1 + 1 + 2 + 1) + (1 + 2)
= 8

可以看出,使用本系统后,实例数量 n 不再是一个影响因素。进行任意实例启动蓝图配置所花费的时间和步骤变成一个常量。故可以极大地提高工作效率。

注意事项

在使用系统之前,需要设置 CloudEndure 的 API 序列号。点击设置 → CloudEndure API 序列号。该序列号与 CloudEndure 登录账号绑定,可用操作该账号下的所有项目。

工作展望

本文介绍的管理工具新功能,着重解决灾备演练和灾备准备之间启动蓝图配置切换的操作难题,试图尽可能降低运维压力和出错率。可以在大多数情况下,满足经济型和生产用模式之间高效快速切换实例启动蓝图配置的要求。本系统有一定的局限性,并不谋求完全取代 CloudEndure 控制台,或者涵盖所有相关参数。未来可以根据实际工作情况,有针对性的弥补局限性,扩大支持的配置选项和取值,扩大适用范围。例如支持实例配置文件,弹性网络接口、更丰富的盘型及参数的设置等。

CloudEndure 也提供了一系列脚本,用以提高相关工作的效率。其中有一个就是用来大批量设置启动蓝图的。脚本由 Python 写成,并附带了使用说明。显而易见,要快速使用该脚本同样需要相当的学习成本和知识门槛,比本文所述的新功能复杂不少。对于其中可以借鉴之处,亦会在新版本中进行有益补充。

参考资料

 

本篇作者

袁文俊

AWS 专业服务团队咨询顾问。曾在亚马逊美国西雅图总部工作多年,就职于 Amazon Relational Database Service (RDS) 关系型数据库服务开发团队。拥有丰富的后端开发及运维经验。现负责业务持续性及可扩展性运行、企业应用及数据库上云迁移、云上灾难恢复管理系统等架构咨询、方案设计及项目实施等工作。他拥有复旦大学理学学士学位。

黄敢

AWS 专业服务团队咨询顾问,负责企业级用户云上基础设施架构、迁移上云、云上灾备方案设计和实施。