当 AutoScaling 组的 desiredCapacity 为 0 时,AWS ECS 不会启动 EC2 实例
AWS ECS doesn't start an EC2 Instance when AutoScaling Group has desiredCapacity as 0
场景一:
我按顺序创建了以下资源:
- 创建 AutoScalingGroup/ASG(最小容量为 1)
- 创建 ECS 集群
- 将 AutoScalingGroup 作为提供商附加到 ECS
我在这种情况下面临的问题是,EC2 由 ASG 启动并且未连接到 ECS,因为 ECS_CLUSTER 值与实际集群名称不同。这感觉很明显,因为 ASG 在提供程序添加到集群之前启动。
场景二:
- 创建 AutoScalingGroup/ASG(minCapacity 为 0,desiredCapacity 为 0)
- 创建 ECS 集群
- 将 AutoScalingGroup 作为提供商附加到 ECS
- 添加任务定义并创建服务
服务无法启动,因为出现错误:“在您的集群中找不到容器实例”
场景 2 让我感到困惑 - 不清楚 ECS 扩展策略是否也会创建第一个实例?
一些解决方案建议将最小容量保持为 1,以便它起作用。但如果我这样做,我最终会进入场景 1,其中第一个 EC2 实例无法向 ECS 注册。
您必须在启动配置或模板中使用 user_data
才能正确设置 ECS 实例。这包括提供一个集群名称,如 AWS docs:
中所述
#!/bin/bash
cat <<'EOF' >> /etc/ecs/ecs.config
ECS_CLUSTER=your_cluster_name
EOF
场景一:
我按顺序创建了以下资源:
- 创建 AutoScalingGroup/ASG(最小容量为 1)
- 创建 ECS 集群
- 将 AutoScalingGroup 作为提供商附加到 ECS
我在这种情况下面临的问题是,EC2 由 ASG 启动并且未连接到 ECS,因为 ECS_CLUSTER 值与实际集群名称不同。这感觉很明显,因为 ASG 在提供程序添加到集群之前启动。
场景二:
- 创建 AutoScalingGroup/ASG(minCapacity 为 0,desiredCapacity 为 0)
- 创建 ECS 集群
- 将 AutoScalingGroup 作为提供商附加到 ECS
- 添加任务定义并创建服务
服务无法启动,因为出现错误:“在您的集群中找不到容器实例”
场景 2 让我感到困惑 - 不清楚 ECS 扩展策略是否也会创建第一个实例?
一些解决方案建议将最小容量保持为 1,以便它起作用。但如果我这样做,我最终会进入场景 1,其中第一个 EC2 实例无法向 ECS 注册。
您必须在启动配置或模板中使用 user_data
才能正确设置 ECS 实例。这包括提供一个集群名称,如 AWS docs:
#!/bin/bash
cat <<'EOF' >> /etc/ecs/ecs.config
ECS_CLUSTER=your_cluster_name
EOF