在 ECS 的所有教程中,您需要创建一个集群,然后创建一个自动扩展组,这将产生实例。不知何故,在所有这些教程中,实例神奇地出现在集群中,但没有人提示连接自动缩放组和集群的原因。
我的自动缩放组按预期生成实例,但它们只是没有出现在我的 ecs 集群上,该集群拥有我的 docker 定义。
我缺少的连接在哪里?
在 ECS 的所有教程中,您需要创建一个集群,然后创建一个自动扩展组,这将产生实例。不知何故,在所有这些教程中,实例神奇地出现在集群中,但没有人提示连接自动缩放组和集群的原因。
我的自动缩放组按预期生成实例,但它们只是没有出现在我的 ecs 集群上,该集群拥有我的 docker 定义。
我缺少的连接在哪里?
我为此苦苦挣扎了一段时间。获取与您的 ECS 集群关联的自动扩展组中的实例的关键在于用户数据。当您创建启动配置时,当您进入第 3 步“配置详细信息”时,请点击高级选项卡并为您的用户数据输入如下所示的简单 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
自动缩放组与集群没有严格关联。但是,可以配置自动缩放组,以便每个启动的实例都将自己注册到特定的集群中。
将实例注册到集群中是运行在实例上的ECS Agent的职责。如果您使用的是Amazon ECS 优化的 AMI,ECS 代理将在实例启动时启动并将其自身注册到配置的集群中。但是,您也可以按照安装说明在其他 Linux AMI 上使用 ECS 代理。
嗯,我发现了。它是关于 ecs-agent 及其配置文件 /etc/ecs/ecs.config 的全部内容(此文件将通过 Userdata 字段创建,在创建 EC2 实例时,甚至是从自动扩展配置中。)在此处阅读有关其配置选项的信息: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上的集群向导。它将为您的集群创建一个自动缩放组,在它前面创建一个负载均衡器,并将它们很好地连接起来。
这个问题很老,但答案并不完整。让您自己的自动扩展组显示在您的集群中需要两个部分(截至 2022 年 1 月)。
您需要确保为ECS_CLUSTER
变量设置了集群名称,/etc/ecs/ecs.config
如本答案中所述:https ://stackoverflow.com/a/35324937/583875
您需要为集群创建一个新的容量提供程序并附加此 Auto Scaling 组。为此,请转到集群 -> 容量提供程序 -> 创建 -> 在 下选择您的 Auto Scaling 组Auto Scaling group
。
另一个棘手的部分是让您的服务使用实例(如果您正在运行服务)。您需要编辑服务,并更改Capacity provider strategy
. 单击Add another provider
并选择您在上面 (2) 中创建的新容量提供程序。
就这样!为确保一切正常:您应该在 Graph -> Capacity Providers 下看到您的容量提供程序,您应该在 Graph -> ECS Instances 下看到来自您的 Auto Scaling 组的实例。