Amazon Elastic Container Service
开发人员指南 (API 版本 2014-11-13)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

Amazon ECS 中的常见使用案例

本主题将提供 Amazon ECS: 微服务和批处理作业中的常见使用案例的指南。在这里,您可以找到对于让您的应用程序在 Amazon ECS 上运行可能很有用的注意事项和外部资源以及每个解决方案的常见方面。

微服务

微服务是使用一种软件架构性方法构建的,该方法可将复杂的应用程序分解为小型、独立的服务。容器非常适合用于运行小型、独立的服务,并且它们还具有以下优点:

  • 借助容器,服务可以使用您的所有依赖项在不可变的映像中轻松建模。

  • 容器可使用任何应用程序和任何编程语言。

  • 容器映像是一个受版本控制的项目,因此您可以跟踪容器映像到其来源。

  • 您可以本地测试容器并大规模部署同一项目。

以下部分将介绍您在设计要在 Amazon ECS 上运行的微服务架构时必须考虑的一些方面和难题。您也可以在 GitHub 上查看微服务参考架构。有关更多信息,请参阅使用 Amazon ECS、AWS CloudFormation 和 应用程序负载均衡器 部署微服务

Auto Scaling

您的微服务架构的应用程序负载可能随时间而变化。响应式应用程序可以扩展或缩减,具体取决于实际或预期的负载。Amazon ECS 为您提供了多个工具,这些工具不仅可扩展在集群中运行的服务,还可扩展实际集群本身。

例如,Amazon ECS 为您的集群和服务提供了 CloudWatch 指标。有关更多信息,请参阅Amazon ECS CloudWatch 指标。您可以监控集群和服务的内存和 CPU 利用率。然后,使用这些指标触发 CloudWatch 警报,这些警报可在您的集群资源几乎耗尽时自动扩展集群。在您不需要很多资源时缩减集群。有关更多信息,请参阅教程:通过 CloudWatch 警报扩展容器实例

除了增大集群大小之外,您还可以选择将 Amazon ECS 服务配置为使用 服务 Auto Scaling 根据 CloudWatch 警报上调或下调其预期数量。服务 Auto Scaling 在支持 Amazon ECS 的所有区域中可用。有关更多信息,请参阅服务 Auto Scaling

服务发现

服务发现是大多数分布式系统和服务导向型架构的关键组件。利用服务发现,当您的微服务组件在给定基础设施上创建和终止时,系统将自动发现它们。有几种可让您的服务变得可发现的方法。以下资源介绍了几个示例:

授权和密钥管理

管理密钥 (如应用程序的数据库凭证) 始终是一个具有挑战性的问题。使用 Parameter Store 和适用于任务的 IAM 角色管理 Amazon ECS 应用程序的密钥一文重点介绍了如何将 Amazon ECS 的适用于任务的 IAM 角色功能与 AWS Systems Manager Parameter Store 集成。Parameter Store 提供了一个可管理配置数据的集中式存储,无论数据是纯文本数据(如数据库字符串)还是密钥(如的密码)均适用。

日志记录

您可以将容器实例配置为向 CloudWatch Logs 发送日志信息。这使您能够在一个方便位置查看容器实例中的不同日志。有关在您的利用Amazon ECS-optimized AMI 启动的容器实例上开始使用 CloudWatch Logs 的更多信息,请参阅将 CloudWatch Logs 用于容器实例

您可在任务中配置容器以将日志信息发送到 CloudWatch Logs。这使您能够在一个方便的位置查看容器中的不同日志,并防止您的容器日志占用您的容器实例上的磁盘空间。有关在您的任务定义中开始使用 awslogs 日志驱动程序的更多信息,请参阅使用 awslogs 日志驱动程序

持续集成和持续部署

持续集成和持续部署 (CICD) 是一个用于基于 Docker 容器的微服务架构的常见流程。您可以创建执行以下操作的管道:

  • 监控对源代码存储库的更改

  • 从该源构建新的 Docker 映像

  • 将映像推送到映像存储库,如 Amazon ECR 或 Docker Hub

  • 将 Amazon ECS 服务更新为在您的应用程序中使用新映像

以下资源将概述如何以不同的方式执行此操作:

批处理作业

Docker 容器特别适合批处理作业工作负载。批处理作业通常是短暂且易并行的。您可以将批处理应用程序打包到 Docker 映像中,以便在任何位置 (如在 Amazon ECS 任务中) 部署它。如果您有兴趣运行批处理作业工作负载,请考虑以下资源:

  • AWS Batch:对于任何规模的完全托管的批处理,您都应考虑使用 AWS Batch。AWS Batch 让开发人员、科学家和工程师能够轻松高效地在 AWS 上运行数十万个批处理计算任务。AWS Batch 可根据提交的批处理任务的数量和特定资源要求动态预置最佳的计算资源(如 CPU 或内存优化实例)数量和类型。有关更多信息,请参阅 AWS Batch 产品详细信息页

  • Amazon ECS 参考架构:批处理:此参考架构展示如何使用 AWS CloudFormation、Amazon S3、Amazon SQS 和 CloudWatch 警报来处理 Amazon ECS 上的批处理。

本页内容: