内容提要
本文介绍如何利用 AWS Systems Manager 自动化文档与 EventBridge,根据 EC2 标签自动管理 AWS DRS 复制代理的完整生命周期:当标签 DR=yes 时,每 30 分钟安装并修复代理、保持其注册状态;复制停滞时先重启服务,失败则原地重装,若仍非代理问题则转 SNS 告警;当 DR=no 或删除标签时,先执行安全检查,再停止复制、删除源服务器并卸载代理,同时记录计费是否真正停止。该方案无需 Lambda,包含三层 RPO 保护及审计监控。
延伸解读
标签驱动的生命周期管理
方案用单个 EC2 标签 DR 的值决定代理生命周期阶段:yes 表示受保护,每 30 分钟安装并修复代理;pause 表示静默,保留代理但抑制告警并阻止下线;no 或删除标签则触发下线。其他值视为配置错误,自动化会跳过并记录 SKIPPED_MISCONFIGURED,避免误操作。标签值会先规范化(去空格、转小写),因此 DR=Yes 也能正确匹配。这种设计让运维只需改标签,无需手动调用多个接口。
三层 RPO 保护的实际边界
文章用三层机制保护客户配置的 15 分钟 RPO 目标,但明确这不是 AWS 服务保证。第一层是操作系统服务自动重启,Linux 几乎即时,Windows 默认延迟 30 秒;第二层依赖 EventBridge 跨区域转发停滞事件,触发重启或原地重装,耗时取决于环境与 DRS 停滞检测延迟;第三层 State Manager 每 30 分钟兜底,已超过 15 分钟目标,只能作为安全网。重装可能触发块级重扫描,大容量磁盘可能暂时超出 RPO 窗口。
下线时关注计费是否真正停止
下线文档在拆除前会做标签复查、已终止实例保护和可选审批门,然后记录复制状态、停止复制、删除源服务器并卸载代理。完成后根据实际结果输出状态:COMPLETED 表示源服务器已删除、计费停止;BILLING_STOPPED_ORPHAN 表示复制已停但删除未成功,需人工删除;FAILED 表示停止复制未成功,计费可能仍在;NO_SERVER 表示实例未注册,属于干净的空操作。此外还会检查活动恢复实例,因为恢复实例的 EC2 计费在源服务器删除后仍会继续。
部署与安全上的关键约束
方案无需维护 Lambda,逻辑放在 SSM Automation 文档中,由 EventBridge 或 State Manager 触发。部署前需准备源区域和 DR 区域、跨区域 TCP 443 与 1500 连通性、实例配置文件附带指定策略,以及现有 SNS 主题。建议先在审计模式运行,确认 S3 审计报告符合预期后再小范围开启安装和下线。IAM 角色遵循最小权限,Run Command 仅限 DR=yes 实例,且不存储长期凭证。删除自动化基础设施不会停止复制,DR=yes 实例仍会继续复制。
Q&A
如何用EC2标签控制AWS DRS代理的安装、修复和下线?
通过EC2实例上的DR标签值决定自动化行为:DR=yes时,每30分钟安装并修复代理、保持注册健康;DR=pause时,代理保持安装但抑制停滞告警并阻止下线;DR=no或删除标签时,执行安全检查后停止复制、删除源服务器并卸载代理;其他值视为配置错误,自动化跳过并记录SKIPPED_MISCONFIGURED状态。
AWS DRS代理复制停滞时,自动化修复流程是怎样的?
当DR区域检测到复制停滞并发出STALLED事件,EventBridge转发规则将事件跨区域发送到源区域,触发DRS-Agent-Heal文档。该文档先检查停滞标志和标签状态,然后重启代理服务;若重启无效,则原地重新安装代理(保留驱动状态)。对于非代理原因(如带宽限制、复制服务器过小),则通过SNS升级给运维人员。
下线DRS代理时如何确保计费真正停止?
下线文档在拆除后检查实际结果并记录状态:COMPLETED表示源服务器已删除、计费停止;BILLING_STOPPED_ORPHAN表示复制已停止但删除未成功,需手动删除;FAILED表示停止复制失败,计费可能仍活跃;NO_SERVER表示实例未注册为源服务器,无操作。审计报告会记录这些状态,帮助确认计费是否停止。
这个方案如何保护15分钟的RPO目标?
通过三层防护:第一层是操作系统服务自动重启(秒级),Linux使用systemd Restart=always,Windows使用服务恢复;第二层是EventBridge触发的修复(分钟级),检测到停滞事件后重启或重装代理;第三层是State Manager每30分钟的后备检查,捕获漂移和边缘情况。三层互补覆盖不同故障模式。
部署这个自动化方案需要哪些前提条件?
需要:具有管理权限的AWS账户;配置源区域和DR区域;在源区域和DR区域初始化AWS DRS;区域间开放TCP 443和TCP 1500网络连接;可选VPC端点;部署CloudFormation栈的IAM权限(包括CAPABILITY_NAMED_IAM和iam:PassRole);每个源EC2实例的实例配置文件附加AWSElasticDisasterRecoveryAgentInstallationPolicy和AmazonSSMManagedInstanceCore策略;现有的SNS主题;可选S3桶用于审计报告;以及Git、Bash 4+和yq工具。
如何避免自动化在DR演练期间误操作?
通过设置停机标志(Parameter Store中的/drs/control/event-in-progress)为true,可以暂停所有自动化动作。在声明的DR事件期间,将标志设为true;事件结束后设为false恢复。此外,标签值允许列表、终止实例保护、并发锁等安全防护也能防止意外操作。
这个方案如何实现监控和审计?
通过三个渠道:SNS通知发送给值班团队(onboarding仅在需要干预时通知,heal成功和需干预都通知,offboarding各阶段通知);S3审计报告为每个生命周期事件生成JSON对象,包含实例ID、主机名、平台、源服务器ID、状态和拆除前复制状态;CloudWatch指标提供Outcome指标(1=已处理,0=需关注),按事件类型维度展示队列健康。