

# Amazon ECS 集群
<a name="clusters"></a>

Amazon ECS 集群是任务或服务的逻辑分组，可为您的容器化应用程序提供基础设施容量。创建集群时，您可以从三种主要基础设施类型中进行选择，每种类型都针对不同的使用案例和操作要求进行了优化。

## 选择合适的集群类型
<a name="cluster-types-overview"></a>

Amazon ECS 为您的集群提供三种基础设施类型。请选择最符合您的工作负载要求、操作偏好和成本优化目标的类型：

Amazon ECS 托管实例（推荐）  
**最适合大多数工作负载**：Amazon 全面管理底层 Amazon EC2 实例，包括预置、修补和扩展。此选项在性能、成本效益和操作简便性之间实现了最佳平衡。  
**在以下情况下使用：**  
+ 您希望 Amazon 处理基础设施管理
+ 您需要具有自动优化功能的经济高效的计算
+ 您希望专注于您的应用程序而非基础设施
+ 您需要性能可预测且可灵活扩展

Fargate  
**无服务器计算**：只需为任务使用的资源付费，无需管理任何基础设施。非常适合工作负载变化无常且需要快速入门的情况。  
**在以下情况下使用：**  
+ 您需要完全无服务器操作
+ 您的工作负载不可预测或变化无常
+ 您希望最大限度地降低运营开销
+ 您需要快速部署和扩展

Amazon EC2 实例  
**完全控制**：您可以直接管理底层 Amazon EC2 实例，包括实例选择、配置和维护。  
**在以下情况下使用：**  
+ 您需要特定实例类型或配置
+ 您可以利用现有的 Amazon EC2 基础设施
+ 您需要自定义 AMI 或专用软件
+ 您需要对底层基础设施拥有最大程度的控制权

**注意**  
Amazon ECS 托管实例是大多数新工作负载的推荐选择，因为它提供了性能、成本优化和操作简便性的最佳组合，同时允许 Amazon 处理基础设施管理任务。

## 集群组件
<a name="cluster-components"></a>

除了基础设施容量外，集群还包括以下资源：
+ 您的任务和服务运行所在的网络（VPC 和子网）

  当您将 Amazon ECS 托管实例或 Amazon EC2 实例用于容量时，子网可以位于可用区、本地区域、Wavelength 区域或 Amazon Outposts。
+ 可选命名空间

  命名空间用于与 Service Connect 进行服务对服务通信。
+ 监控选项

  CloudWatch Container Insights 需要支付额外费用，是一项完全托管的服务。它会自动收集、聚合和汇总 Amazon ECS 指标与日志。

## 集群概念
<a name="cluster-concepts"></a>

以下是有关 Amazon ECS 集群的一般概念。
+ 您可以创建集群来隔离资源。
+ 集群是 Amazon Web Services 区域 特定的。
+ 集群的可能状态如下。  
ACTIVE  
集群已准备好接受任务，如果适用，您可以向集群注册容器实例。  
正在预置  
集群具有与其关联的容量提供程序，并且正在创建容量提供程序所需的资源。  
正在取消预置  
集群具有与其关联的容量提供程序，并且正在删除容量提供程序所需的资源。  
FAILED  
集群具有与其关联的容量提供程序，并且容量提供程序所需的资源无法创建。  
非活跃  
集群已删除。具有 `INACTIVE` 状态的集群可能会在一段时间内在您的账户中保持可被发现。此行为在将来可能会发生变化，因此请确保不依赖于持续存在的 `INACTIVE` 集群。
+ 集群可能同时包含托管在 Amazon ECS 托管实例、Amazon Fargate、Amazon EC2 实例或外部实例上的任务。任务可以作为启动类型或容量提供程序策略在 Amazon ECS 托管实例、Fargate 或 EC2 基础设施上运行。如果您使用 EC2 容量提供程序，Amazon ECS 不会跟踪和扩展 Amazon EC2 Auto Scaling 组的容量。
+ 集群可能同时包含 Amazon ECS 托管实例容量提供程序、自动扩缩组容量提供程序和 Fargate 容量提供程序。容量提供程序策略只能同时包含 Amazon ECS 托管实例容量提供程序、自动扩缩组容量提供程序或 Fargate 容量提供程序。
+ 您可以为 Amazon ECS 托管实例和 EC2 或自动扩缩组容量提供程序使用不同的实例类型。一个实例一次只能注册到一个集群。
+ 您可以通过创建自定义 IAM 策略来限制对集群的访问。有关更多信息，请参阅 [Amazon Elastic Container Service 的基于身份的策略示例](security_iam_id-based-policy-examples.md) 中的 [Amazon ECS 集群示例](security_iam_id-based-policy-examples.md#IAM_cluster_policies) 部分。
+ 您可以使用服务自动扩缩来扩缩 Fargate 任务。有关更多信息，请参阅 [自动扩缩 Amazon ECS 服务](service-auto-scaling.md)。
+ 您可以为集群配置默认 Service Connect 命名空间。设置默认 Service Connect 命名空间后，可以通过启用 Service Connect 将集群中创建的任何新服务添加为命名空间中的客户端服务。无需其他配置。有关更多信息，请参阅 [使用 Service Connect 连接具有短名称的 Amazon ECS 服务](service-connect.md)。

## 容量提供程序
<a name="capacity-providers"></a>

Amazon ECS 容量提供程序为集群中的任务管理基础设施的扩缩。每个集群可以有一个或多个容量提供程序和一个可选的容量提供程序策略。您可以为集群分配默认容量提供程序策略。容量提供程序策略确定任务在集群的容量提供程序之间的分布方式。运行独立任务或创建服务时，您可以使用集群的默认容量提供程序策略，也可以使用覆盖默认策略的容量提供程序策略。集群的默认容量提供程序策略仅在您未为任务或服务指定启动类型或容量提供程序策略时适用。如果提供其中任一参数，则不会使用默认策略。

Amazon ECS 为您的集群提供三种类型的容量提供程序：

Amazon ECS 托管实例容量提供程序  
Amazon 全面管理底层 Amazon EC2 实例，包括预置、修补、扩展和生命周期管理。这在性能、成本效益和操作简便性之间实现了最佳平衡。Amazon ECS 托管实例容量提供程序会根据您的工作负载要求自动优化实例选择和扩展。  
使用 Amazon ECS 托管实例，您可以享受以下优势：  
+ 自动实例预置和扩展
+ 托管修补和安全更新
+ 通过智能选择实例来优化成本
+ 减少运营开销

Fargate 容量提供程序  
无服务器计算，只需为任务使用的资源付费，无需管理任何基础设施。您只需将预定义的容量提供程序（Fargate 和 Fargate Spot）与集群关联。

自动扩缩组容量提供程序  
当您将 Amazon EC2 实例用于容量时，可以使用自动扩缩组来管理 Amazon EC2 实例。Auto Scaling 可帮助确保具有正确数量的 Amazon EC2 实例以处理应用程序负载。您对底层基础设施拥有完全控制权。

集群可能同时包含托管在 Amazon ECS 托管实例、Amazon Fargate、Amazon EC2 实例或外部实例上的任务。任务可以作为启动类型或容量提供程序策略在 Amazon ECS 托管实例、Fargate 或 EC2 基础设施上运行。如果您使用 EC2 作为启动类型，Amazon ECS 不会跟踪和扩缩 Amazon EC2 Auto Scaling 组的容量。

集群可能同时包含 Amazon ECS 托管实例容量提供程序、自动扩缩组容量提供程序和 Fargate 容量提供程序。容量提供程序策略只能同时包含 Amazon ECS 托管实例容量提供程序、自动扩缩组容量提供程序或 Fargate 容量提供程序。