我这里有一个具体的用例。我需要自动扩展在 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)
Run Code Online (Sandbox Code Playgroud)
我正在寻找的是垂直缩放部分。到目前为止,我最好的想法如下:
你认为这可行吗?还有更好的解决办法吗?您可以发现任何潜在的问题吗?
预先感谢您的任何想法!