【发布时间】:2021-06-02 20:14:21
【问题描述】:
我正在使用使用 CDK 的 EC2 部署来部署队列处理 ECS 服务。这是我的堆栈
from aws_cdk import core, aws_ecs_patterns, aws_ec2, aws_ecs
class EcsTestStack(core.Stack):
def __init__(self, scope: core.Construct, construct_id: str, **kwargs) -> None:
super().__init__(scope, construct_id, **kwargs)
_container_image = aws_ecs.ContainerImage.from_asset(
directory=".",
file='Dockerfile.ECS_Test',
exclude=["cdk.out"]
)
_scaling_steps = [{"upper": 0, "change": -1}, {"lower": 50, "change": +1}, {"lower": 100, "change": +2}]
_vpc = aws_ec2.Vpc(self, "ecs-test-vpc-v4", max_azs=3)
_cluster = aws_ecs.Cluster(self, "ecs-test-cluster-v4", vpc=_vpc)
_cluster.add_capacity("ecs-autoscaling-capacity-v4",
instance_type=aws_ec2.InstanceType("t2.small"),
min_capacity=1,
max_capacity=3)
self.ecs_test = aws_ecs_patterns.QueueProcessingEc2Service(
self,
"ECS_Test_Pattern_v4",
cluster=_cluster,
cpu=512,
scaling_steps=_scaling_steps,
memory_limit_mib=256,
image=_container_image,
min_scaling_capacity=1,
max_scaling_capacity=5,
)
堆栈从服务中的 1 个任务和 1 个 EC2 实例开始。根据我的_scaling_steps,当队列中的消息数 > 50 时,应该向服务添加一个新任务,并且应该向服务添加 2 个新任务。堆栈从服务中的 1 个任务和 1 个 EC2 实例开始。
但是当我向队列中添加 200 条新消息时,我可以看到有 1 个新任务添加到我的服务中,然后我什至收到此错误消息。
服务 EcsTestStackV4-ECSTestPatternv4QueueProcessingService5C84D200-c00N6R56hB0p 无法放置任务,因为没有容器实例满足所有 其要求。最接近的匹配容器实例 81e5380c718c4b558567dc6cc1fb1926 可用的 CPU 单元不足。
我还注意到没有添加新的 EC2 实例。
问题:当服务扩展时,如何将更多 EC2 实例添加到我的集群中?
【问题讨论】:
-
进展如何?仍然不清楚您的问题发生的原因?
标签: amazon-web-services amazon-ec2 amazon-ecs aws-cdk