gpt4 book ai didi

amazon-ecs - 使用 AWS ECS Fargate 进行水平和垂直自动扩展

转载 作者:行者123 更新时间:2023-12-03 23:49:36 29 4
gpt4 key购买 nike

我这里有一些具体的用例。我需要自动扩展在 ECS Fargate 上运行的分布式 Web 应用程序。问题是所有节点都需要在内存中保留相同的数据(因此增加节点数量无助于内存压力)。因此,只有在水平(添加节点)和垂直(增加节点内存)扩展时才能正确处理增加的负载。

水平自动缩放很简单。 AWS CDK 为负载平衡的 Fargate 任务提供了很好的高级构造,并且可以非常轻松地添加更多任务来处理 CPU 负载:

service = aws_ecs_patterns.ApplicationLoadBalancedFargateService(
self,
'FargateService',
cpu=256,
memory_limit_mib=512,
...
)

scalable_target = service.service.auto_scale_task_count(max_capacity=5)
scalable_target.scale_on_cpu_utilization('CpuScaling', target_utilization_percent=60)

我正在寻找的是 垂直缩放 部分。到目前为止,我最好的想法如下:
  • 为集群的内存使用情况创建 CloudWatch 警报。触发超过 60%。
  • 警报向 SNS 主题发送消息,从而触发 lambda 函数。
  • lambda 描述当前任务定义并解析出 CPU 和内存参数。然后它创建一个新版本的任务定义,增加内存(和 CPU,如果需要,因为 CPU 和内存在 Fargate 中不是独立的值)。
  • 最后,lambda 使用新的任务定义更新服务。这应该会触发滚动更新并导致集群具有相同数量的节点,但每个节点具有更大的内存。

  • 你认为这行得通吗?有没有更好的解决办法?您可以发现任何潜在问题吗?

    提前感谢您的任何想法!

    最佳答案

    这似乎是解决此问题的合理方法并且可以工作。

    一个问题可能是,您没有跟踪 IaC 模板中增加的内存需求。当您运行更改服务中任何内容的堆栈更新时,这可能会导致服务“重置”为最小内存。

    为了解决这个问题,你可以创建 SSM-Parameters 来保存 CPU 和内存单元的值,你 reference in your template 。您的 Lambda 也需要使用新值更新它们。这样,通过 CloudFormation/CDK 对服务的更新不应立即触发扩展过程。

    您只是在内存方面进行了扩展,是否存在内存需求减少并且您也可以缩减的情况? (这可以通过相同/或类似的机制来完成,只是要记住一些事情)

    关于amazon-ecs - 使用 AWS ECS Fargate 进行水平和垂直自动扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59628660/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com