如何将我的自动缩放组连接到我的 ecs 集群?

How can I connect my autoscaling group to my ecs cluster?

在所有 ECS 教程中,您需要创建一个集群,然后创建一个自动缩放组,这将生成实例。不知何故,在所有这些教程中,实例神奇地出现在集群中,但没有人暗示自动缩放组和集群之间的联系。

我的自动缩放组按预期生成实例,但它们只是没有出现在我的 ecs 集群上,它拥有我的 docker 定义。

我缺少的连接在哪里?

嗯,我发现了。 都是关于 ecs-agent 及其配置文件 /etc/ecs/ecs.config (在创建 EC2 实例时,即使是从自动缩放配置中,也会通过 Userdata 字段创建此文件。) 在此处阅读其配置选项:http://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-config.html

但您甚至可以复制存储在 Amazon S3 上的 ecs.config,这样做(以下行进入 Userdata 字段):

#!/bin/bash
yum install -y aws-cli
aws configure set default.s3.signature_version s3v4
aws configure set default.s3.addressing_style path
aws configure set default.region eu-central-1
aws s3 cp s3://<bucketname>/ecs.config /etc/ecs/ecs.config

注意:Signature_version v4 特定于某些地区,例如 eu-central-1。 只有当您的实例的 IAM 角色(在我的例子中是 ecsInstanceRole)具有正确的 AmazonS3ReadOnlyAccess

时,此 ofc 才有效

AWS GUI 控制台方式为: 在 https://console.aws.amazon.com/ecs/home#/firstRun 使用群集向导。 它将为您的集群创建一个自动缩放组,在它前面有一个负载均衡器,并将它们很好地连接起来。

自动缩放组与集群没有严格关联。但是,可以配置一个自动缩放组,以便每个启动的实例都将自己注册到一个特定的集群中。

将实例注册到集群是 ECS Agent running on the instance. If you're using the Amazon ECS-optimized AMI, the ECS Agent will launch when the instance boots and register itself into the configured cluster. However, you can also use the ECS Agent on other Linux AMIs by following the installation instructions 的责任。

我为此苦苦挣扎了一段时间。获取与您的 ECS 集群关联的自动缩放组中的实例的关键在于用户数据。当您进入第 3 步时创建启动配置时 "Configure Details" 点击高级选项卡并为您的用户数据输入一个简单的 bash 脚本,如下所示。

#!/usr/bin/env bash
echo ECS_CLUSTER=your_cluster_name >> /etc/ecs/ecs.config

可在此处找到代理配置的所有可用参数http://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-config.html

这个问题很旧,但答案不完整。让您自己的自动缩放组显示在您的集群中有两个部分(截至 2022 年 1 月)。

  1. 您需要确保在 /etc/ecs/ecs.config 中为 ECS_CLUSTER 变量设置集群名称,如本答案中所述:

  2. 您需要为集群创建一个新的容量提供程序并附加此 Auto Scaling 组。为此,请转到集群 -> 容量提供程序 -> 创建 -> Select 您在 Auto Scaling group 下的自动缩放组。

另一个棘手的部分是让您的服务使用实例(如果您有服务 运行)。您需要编辑服务,并更改 Capacity provider strategy。单击 Add another provider 并选择您在上面 (2) 中创建的新容量提供程序。

就是这样!为确保一切正常:您应该在 Graph -> Capacity Providers 下看到您的容量提供程序,并且您应该在 Graph -> ECS 实例下看到您的自动缩放组中的实例。