发布于: Jul 22, 2022

 

本文档介绍的解决方案是通过利用 Auto Scaling Group 生命周期功能,判断外部状态信息,执行特定的命令或脚本来实现对有状态应用的管理

 

在很多情况下,尤其是在云应用管理的场景中,需要对 Auto Scaling Group 里的 EC2 在启动和停止时执行一些特定的操作,从而实现定制化的功能,满足业务上的需求。比如游戏服内部应用大量交叉互联并且交互依赖 IP 地址,实例恢复后希望保持 IP 地址不变,还有共享应用配置文件,不需要预先配置实例,以及采用分组分区的模式部署游戏服,希望每台机器部署的应用和承担的角色不一样。 还有很多的客户通过 Consul 来实现服务的注册和发现,希望在 EC2 终止时执行 Consul 命令来注销实例资源等等。

本文档介绍的解决方案是通过利用 Auto Scaling Group 生命周期功能,判断外部状态信息,结合 Amazon Systems Manager 登陆实例,执行特定的命令或脚本来实现对有状态应用的管理,满足上述业务上的需求。在本文档介绍的实验里,通过 EC2 Auto Scaling 生命周期挂钩, Amazon EventBridge 和 Systems Manager (SSM) Automation,来实现在 ASG 里的 EC2 被 terminate 之前执行命令,生成一个测试文件并把文件压缩,然后上传到 S3 上。 客户可以根据自己的场景,来替换执行的命令或脚本,从而实现相关的业务需求。

 

Amazon EventBridge 是一种无服务器事件总线服务,可以轻松地将应用程序与来自各种来源的数据相连接。您可以设置路由规则来确定发送数据的目的地,以便构建能够实时响应所有数据源的应用程序架构。利用 EventBridge,您可以构建事件驱动的体系结构,这些体系结构是松散耦合的和分布式的。EventBridge 以前的名称为 Amazon CloudWatch Events。现有的 CloudWatch Events 用户可以在新的 EventBridge 控制台和 CloudWatch Events 控制台中访问其现有的默认总线、规则和事件。EventBridge 使用相同的 CloudWatch Events API,因此您使用的所有现有的 CloudWatch Events API 都保持不变。Amazon Web Services Systems Manager 让您能够查看和控制 Amazon Web Services 上的基础设施。Systems Manager 可以提供一个统一的用户界面,供您查看多种 Amazon Web Services 服务的运行数据,并在 Amazon Web Services 资源上自动执行操作任务。Systems Manager (SSM) Automation 简化了 EC2 实例和其他 Amazon Web Services 资源,能够构建自动化工作流以配置和管理实例和 Amazon Web Services 资源,例如重新启动一个或多个 EC2 实例或创建 EC2 AMI。

Amazon EC2 Auto Scaling 生命周期从 Auto Scaling 组启动实例并将其投入使用时开始,在实例终止时结束。生命周期挂钩能够在 Auto Scaling 组启动或终止时执行自定义操作,当 Amazon EC2 Auto Scaling 响应横向扩展事件时,生命周期挂钩将新启动的实例从 Pending 状态设置为 Pending: Wait 状态,此时您可以在实例上安装或配置软件等,在完成生命周期操作后,实例将进入 Pending: Proceed 状态,当实例完全配置后,将会附加到 Auto Scaling 组并且进入 InService 状态。同样在响应缩减事件时,生命周期挂钩将终止的实例从 Terminating 状态设置为 Terminating: Wait 状态,此时可以执行连接到实例并下载日志或其他数据等操作,在完成生命周期操作后,实例将进入 Terminating: Proceed 状态,最终进入 Terminated 状态。下图阐释了 Amazon EC2 Auto Scaling 生命周期内的实例状态之间的过渡。

 

 

相关文章