

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# ECS 集群层
<a name="workinglayers-ecscluster"></a>

**重要**  
该 AWS OpsWorks Stacks 服务于 2024 年 5 月 26 日终止，新客户和现有客户均已禁用。我们强烈建议客户尽快将其工作负载迁移到其他解决方案。如果您对迁移有疑问，请通过 re [AWS : Post 或通过 Pre](https://repost.aws/) mium Su [AWS pp](https://aws.amazon.com/support) ort 与 AWS 支持 团队联系。

[亚马逊弹性容器服务](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html) (Amazon ECS) 管理亚马逊弹性计算云 (Amazon EC2) 实例集群（称为容器实例）上的 Docker 容器。ECS 集群层表示 Amazon ECS 集群，并通过提供相关功能来简化集群管理，这些功能包括：
+ 简化的容器实例预配置和管理
+ 容器实例操作系统和软件包更新
+ 用户权限管理
+ 容器实例性能监控
+ Amazon Elastic Block Store（Amazon EBS）卷管理
+ 公有和弹性 IP 地址管理
+ 安全组管理

ECS 集群层具有以下限制和要求：
+ 层仅适用于在 VPC（包括[默认 VPC](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-supported-platforms.html)）中运行的 Chef 11.10 或 Chef 12 Linux 堆栈。
+ 层的实例必须运行以下操作系统之一。
  + Amazon Linux 2
  + Amazon Linux 2018.03
  + Amazon Linux 2017.09
  + Amazon Linux 2017.03
  + Amazon Linux 2016.09
  + Amazon Linux 2016.03
  + Amazon Linux 2015.09
  + Amazon Linux 2015.03
  + Ubuntu 18.04 LTS
  + Ubuntu 16.04 LTS
  + Ubuntu 14.04 LTS
  + 自定义
+ 层的实例上的 [OpsWorks Stacks 代理版本](workingstacks-creating.md#workingstacks-creating-advanced)必须为 `3425-20150727112318` 或更高版本。

**Topics**
+ [向堆栈添加 ECS 集群层](#workinglayers-ecscluster-add)
+ [管理 ECS 集群](#workinglayers-ecscluster-manage)
+ [从堆栈中删除 ECS 集群层](#workinglayers-ecscluster-delete)

## 向堆栈添加 ECS 集群层
<a name="workinglayers-ecscluster-add"></a>

OpsWorks 堆栈简化了为现有 Amazon ECS 集群启动和维护容器实例的过程。要创建或启动其他 Amazon ECS 实体（如集群和任务），请使用 Amazon ECS 控制台、命令行界面 (CLI) 或 API。（有关更多信息，请参阅《[Amazon Elastic Container Service 开发人员指南](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/)》。） 然后，您可以通过创建 ECS 集群层将群集与堆栈关联起来，您可以使用该层管理 OpsWorks 堆栈中的群集。

您可以将集群与堆栈关联，如下所示：
+ 每个堆栈均可具有一个 ECS 集群层，它表示一个集群。
+ 一个集群只能与一个堆栈关联。

在将 ECS 集群层添加到堆栈之前，必须更新 OpsWorks 堆栈 AWS Identity and Access Management (IAM) 服务角色（通常命名为）`aws-opsworks-service-role`，以允许 OpsWorks 堆栈代表您与 Amazon ECS 进行交互。有关服务角色的更多信息，请参阅[允许 OpsWorks Stacks 代表你行事](opsworks-security-servicerole.md)。

首次创建 ECS 集群层时，控制台会提供一个**更新**按钮，您可以选择该按钮指示 OpsWorks Stacks 为您更新角色。 OpsWorks 然后，Stacks 会显示 “**添加图层**” 页面，以便您可以将图层添加到堆栈中。您只需更新服务角色一次。随后，您可以使用更新后的角色将 ECS 集群层添加到任意堆栈。

**注意**  
如果您愿意，可以通过向现有策略添加 `ecs:*` 权限来手动更新服务角色的策略，如下所示：  

```
{
  "Statement": [
    {
      "Action": [
        "ec2:*", 
        "iam:PassRole",
        "cloudwatch:GetMetricStatistics",
        "elasticloadbalancing:*",
        "rds:*",
        "ecs:*"
      ],
      "Effect": "Allow",
      "Resource": ["*"] 
    }
  ]
}
```

将集群与堆栈关联需要执行两项操作：将集群注册到堆栈，然后创建关联的层。 OpsWorks Stacks 控制台结合了这些步骤；图层创建会自动注册指定的集群。如果您使用 OpsWorks 堆栈 API、CLI 或 SDK，则必须使用单独的操作来注册集群并创建关联层。要使用控制台将 ECS 集群层添加到堆栈，请选择**层**，再选择**\$1层**或**添加层**，然后选择 ECS 集群层类型。

![\[Form for adding an ECS 集群 Layer, showing layer type, 集群 selection, and EC2 instance profile options.\]](http://docs.aws.amazon.com/zh_cn/opsworks/latest/userguide/images/add_layer_ecs.png)


**Add Layer** 页面包括以下配置选项：

**ECS 集群**  
要注册到堆栈的 Amazon ECS 集群。

**EC2 实例配置文件**  
集群的亚马逊弹性计算云 (Amazon EC2) 实例配置文件。此配置文件向正在集群的容器实例上运行的应用程序授予对其他 Amazon Web Service (包括 Amazon ECS) 的访问权。创建第一个 ECS 集群层时，选择**新建配置文件并允许 ECS 访问**直接 OpsWorks 堆栈来创建所需的配置文件，该配置文件名`aws-opsworks-ec2-role-with-ecs`为。随后，您可以对所有后续 ECS 集群层使用该配置文件。有关实例配置文件的更多信息，请参阅[为在 EC2 实例上运行的应用程序指定权限](opsworks-security-appsrole.md)。

您可以通过[编辑层的配置](workinglayers-basics-edit.md)来指定其他设置，包括：
+ [将 Elastic Load Balancing 负载均衡器](workinglayers-basics-edit.md#workinglayers-basics-edit-network)连接到任何层。

  此方法可能适合某些用例，但 Amazon ECS 提供了更高级的选项。有关更多信息，请参阅[服务负载均衡](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-load-balancing.html)。
+ 指定是否自动向容器实例[分配公有 IP 地址或弹性 IP 地址](workinglayers-basics-edit.md#workinglayers-basics-edit-network)。

  如果您禁用针对两个地址类型的自动分配，则除非子网已正确配置 NAT，否则该实例将无法联机。有关更多信息，请参阅 [在 VPC 中运行堆栈](workingstacks-vpc.md)。

## 管理 ECS 集群
<a name="workinglayers-ecscluster-manage"></a>

创建 ECS 集群层后，您可以使用 OpsWorks 堆栈管理集群，如下所示：

**预配置和管理容器实例**  
最初，ECS 集群层不包括任何容器实例，即使原始集群包含容器实例也是如此。一个选择是使用以下项的适当组合来管理层的实例：  
+ 手动向层[添加全天候实例](workinginstances-add.md)，并在不再需要这些实例时[将其删除](workinginstances-delete.md)。
+ 通过向层添加[基于时间的实例](workinginstances-autoscaling-timebased.md)来按计划添加或删除实例。
+ 通过向层中添加[基于负载的实例，根据 OpsWorks Stacks 主机指标或 CloudWatch 警报添加或删除实例](workinginstances-autoscaling-loadbased.md)。
如果堆栈的默认操作系统不支持 Amazon ECS，则当创建容器实例时,必须明确指定支持的操作系统-Amazon Linux 2、Amazon Linux 2018.03、Amazon Linux 2017.09、Amazon Linux 2017.03、Amazon Linux 2016.09、Amazon Linux 2016.03、Amazon Linux 2015.09、Amazon Linux 2015.03、Ubuntu 18.04 LTS、Ubuntu 16.04 LTS、Ubuntu 14.04 LTS 或 Custom。请勿使用 ECS 优化的 AMI 在 ECS 层中创建实例，因为此 AMI 已经包含 ECS 代理。 OpsWorks Stacks 还会在实例设置过程中尝试安装 ECS 代理，冲突可能导致安装失败。
有关更多信息，请参阅[优化服务器数](best-practices-autoscale.md)。 OpsWorks 堆栈将 A **WS OpsWorks-ECS-Cluster 安全组**分配给每个实例。在每个新实例完成启动后， OpsWorks Stacks 会通过安装 Docker 和 Amazon ECS 代理，然后在集群中注册该实例，将其转换为容器实例。  
如果您更愿意使用现有的容器实例，您可以[将其注册到堆栈](registered-instances-register.md)并[将其分配给 ECS 集群层](registered-instances-assign.md)。请注意，实例必须运行支持的操作系统、Amazon Linux 2015.03 或更高版本或 Ubuntu 14.04 LTS 或更高版本。  
一个容器实例不能同时属于一个 ECS 集群层和另一个内置层。但是，容器实例*可以*属于一个 ECS 集群层和一个或多个[自定义层](workinglayers-custom.md)。

**运行操作系统和软件包更新**  
在新实例完成启动后， OpsWorks Stacks 会安装最新的更新。然后，您可以使用 OpsWorks Stacks 使容器实例保持最新状态。有关更多信息，请参阅 [管理安全更新](workingsecurity-updates.md)。

**管理用户权限**  
OpsWorks Stacks 提供了一种管理容器实例权限的简单方法，包括管理用户的 SSH 密钥。有关更多信息，请参阅[管理用户权限](opsworks-security-users.md)和[管理 SSH 访问](security-ssh-access.md)。

**监控性能指标**  
OpsWorks Stacks 提供了多种方法来监控堆栈、层或单个实例的性能指标。有关更多信息，请参阅 [监控](monitoring.md)。

您通过 Amazon ECS 处理其他管理任务，例如创建任务或服务。有关更多信息，请参阅 [Amazon Elastic Container Service 开发人员指南](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/)。

**注意**  
要直接转到 Amazon ECS 控制台上的集群页，请选择**实例**，然后选择 **ECS 集群**(位于 ECS 集群层的部分的右上角附近)。

## 从堆栈中删除 ECS 集群层
<a name="workinglayers-ecscluster-delete"></a>

当您不再需要集群时，请删除 ECS 集群层并取消注册关联的集群。从堆栈中删除集群需要执行两项操作：取消注册集群，然后删除关联的层。 OpsWorks Stacks 控制台结合了这些步骤；删除图层会自动注销指定集群的注册。如果您使用 OpsWorks Stacks API、CLI 或 SDK，则必须使用单独的操作来注销集群并删除关联的层。

**使用控制台删除 ECS 集群层**

1. 如果您要控制任务的关闭方式，请使用 Amazon ECS 控制台、API 或 CLI 来缩减和删除集群的服务。有关更多信息，请参阅[清除您的 Amazon ECS 资源](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_CleaningUp.html)。

1. [停止层的实例](workinginstances-starting.md#workinginstances-starting-stop)，然后[将其删除](workinginstances-delete.md)。当您停止容器实例时， OpsWorks Stacks 会自动停止所有正在运行的任务，从集群中注销该实例，并终止该实例。
**注意**  
如果您具有与堆栈关联的现有容器实例，您可以[从层取消分配实例](registered-instances-unassign.md)，然后[取消注册实例](registered-instances-deregister.md)，这会将实例返回到 ECS 控制。

1. [删除图层](workinglayers-basics-delete.md)。 OpsWorks Stacks 会取消注册关联的集群，但不会将其删除。该集群将保留在 Amazon ECS 中。