Amazon ECS 新增自动回滚功能

Amazon ECS 推出自动回滚功能

Amazon 最近为其 Amazon ECS 服务推出了原生支持自动回滚的功能。该功能利用 Amazon CloudWatch 指标警报来监控部署过程,并在必要时回滚正在进行的部署。此功能支持使用 CloudWatch Container Insights 为 Amazon ECS 收集的任何系统指标以及自定义指标。

功能概述

  • 监控与回滚机制:在创建或更新 Amazon ECS 服务时,可以配置一个或多个 CloudWatch 指标警报,以确定部署是否成功。在滚动更新期间,一旦更新后的服务中有任务在运行,Amazon ECS 就会开始监控配置的 CloudWatch 警报。
  • 部署状态:新的任务构成主要部署(Primary Deployment),而之前的任务称为活动部署(Active Deployment)。如果没有配置警报,当主要部署健康且达到所需数量,且活动部署数量为零时,滚动更新完成。如果配置了警报,部署会继续一段称为“烘焙时间”(Bake Time)的额外时间。
  • 烘焙时间:烘焙时间根据 CloudWatch 警报属性自动计算。在烘焙时间结束时,如果没有触发任何警报且服务保持正常状态,则部署被视为成功。如果触发了一个或多个警报,则会启动自动回滚。
  • 回滚过程:触发回滚后,会通过事件总线发送通知,当前部署状态设置为 FAILED,活动部署将重新提升为主要部署,并扩展到所需数量。失败的部署将被缩减并删除。

配置方法

  • 创建警报:可以通过 AWS 控制台、AWS CloudFormation 或 CLI 创建警报。例如,使用 create-service 命令创建一个带有部署警报的 Linux 服务:

    aws ecs create-service \
         --service-name MyService \
         --deployment-controller type=ECS \
         --desired-count 2 \
         --deployment-configuration "alarms={alarmNames=[alarm1Name,alarm2Name],enable=true,rollback=true}" \
         --task-definition sample-fargate:1 \
         --launch-type FARGATE \
         --platform-os LINUX \
         --platform-version 1.4.0 \
         --network-configuration "awsvpcConfiguration={subnets=[subnet-12344321],securityGroups=[sg-12344321],assignPublicIp=ENABLED}"
  • 自定义指标:可以使用 CloudWatch Container Insights 收集的系统指标,也可以通过 Prometheus 客户端库或 OpenTelemetry SDK 使用自定义指标。

推荐指标

  • 应用负载均衡器:建议使用 HTTPCode_ELB_5XX_CountHTTPCode_ELB_4XX_Count 指标来检查 HTTP 错误代码的峰值。
  • 现有应用:可以使用 CPUUtilizationMemoryUtilization 指标来监控 CPU 和内存的消耗。

支持与反馈

  • 支持范围:Amazon CloudWatch 警报仅支持使用滚动更新部署控制器的 Amazon ECS 服务。
  • 反馈渠道:该功能已全面可用,用户可以在 GitHub 上的 容器公共路线图 提交问题或反馈。

总结

Amazon ECS 的自动回滚功能通过 CloudWatch 指标警报提供了一种可靠的部署监控和回滚机制,确保在部署出现问题时能够及时回滚,保障服务的稳定性和可用性。用户可以通过多种方式配置警报,并利用系统或自定义指标进行监控。

阅读 27
0 条评论