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

Posted

技术标签:

【中文标题】如何将我的自动缩放组连接到我的 ecs 集群?【英文标题】:How can I connect my autoscaling group to my ecs cluster? 【发布时间】:2016-05-14 04:21:12 【问题描述】:

在所有 ECS 教程中,您需要创建一个集群,然后创建一个自动扩展组,这将产生实例。不知何故,在所有这些教程中,实例神奇地出现在集群中,但没有人提示连接自动缩放组和集群的原因。

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

我缺少的连接在哪里?

【问题讨论】:

【参考方案1】:

我为此苦苦挣扎了一段时间。获取与您的 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

【讨论】:

是的,我已经到了这一点。但感谢您在此处添加此内容。您甚至可以从 amazon S3 加载 ecs.config。我将其添加到我的答案中。 这其实是正确的答案。 ECS_CLUSTER 中的 /etc/ecs/ecs.config 需要具有正确的名称。就是这样!【参考方案2】:

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

将实例注册到集群是在实例上运行的ECS Agent 的责任。如果您使用的是Amazon ECS-optimized AMI,ECS 代理将在实例启动时启动并将其自身注册到configured cluster。但是,您也可以通过关注the installation instructions 在其他 Linux AMI 上使用 ECS 代理。

【讨论】:

要完成更多响应,这是重新(启动)代理所需的命令:sudo start ecs。配置代理后使用。 谢谢,这个答案帮助我意识到我的问题不是缺乏关联,而是我的 ASG 启动配置正在创建没有公共 IP 的 ec2 实例,这阻止了 ECS 代理注册实例。【参考方案3】:

嗯,我发现了。 都是关于 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 上的集群向导。 它将为您的集群创建一个自动缩放组,在其前面创建一个负载均衡器,并将它们很好地连接起来。

【讨论】:

【参考方案4】:

这个问题很老,但答案并不完整。将您自己的自动扩展组显示在集群中需要两个部分(截至 2022 年 1 月)。

    您需要确保为/etc/ecs/ecs.config 中的ECS_CLUSTER 变量设置集群名称,如此答案中所述:https://***.com/a/35324937/583875

    您需要为集群创建新的容量提供程序并附加此 Auto Scaling 组。为此,请转到集群 -> 容量提供程序 -> 创建 -> 在 Auto Scaling group 下选择您的 Auto Scaling 组。

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

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

【讨论】:

以上是关于如何将我的自动缩放组连接到我的 ecs 集群?的主要内容,如果未能解决你的问题,请参考以下文章

如何从我的 Amazon EC2 实例中连接到 Amazon Redshift 集群

如何让 AWS ECS 自动将我的容器的端口映射到主机(EC2)

AWS ECS 使用 docker 和 nginx,如何将我的 nginx 配置放入容器中?

服务自动缩放描述可扩展目标未运行

如何将我的 DreamHost DNS 注册网站指向我的 EC2 实例?

Deploybot 将我的存储库推送到 AWS EC2 上的哪个位置?