我正在尝试使用node.js的aws-sdk
软件包以编程方式扩展ECS集群
我已经通读了API文档(https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/ECS.html)的ECS部分,但是找不到用于更新ECS集群配置的API方法。
如果您进入ECS > clusters > your cluster > ECS Instances > Scale ECS Instances
,则可以在UI上执行此操作:
有没有办法通过现有方法以编程方式执行此操作?是否存在ECS.updateCluster
方法?
答案 0 :(得分:0)
看来,您的集群是根据控制台的首次运行经验创建的,这就是为什么您能够看到Scale ECS Instances Option的原因。
https://docs.aws.amazon.com/AmazonECS/latest/developerguide/scale_cluster.html
如果您的集群是在2015年11月24日之后使用控制台首次运行体验创建的,则可以放大或缩小与为集群创建的AWS CloudFormation堆栈关联的Auto Scaling组,以添加或删除容器实例。您可以从Amazon ECS控制台中执行此扩展操作。
如果您的集群不是在2015年11月24日之后使用控制台的首次运行体验创建的,则您无法从Amazon ECS控制台扩展集群。但是,您仍然可以在Auto Scaling控制台中修改与群集关联的现有Auto Scaling组。如果您没有与群集关联的Auto Scaling组,则可以从现有容器实例中创建一个。
我不建议使用控制台在生产环境中创建集群。理想情况下,您应该使用CF模板创建可以放置AutoScaling组的集群。
您可以使用以下API修改AutoScaling Group所需的计数。
https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/AutoScaling.html#setDesiredCapacity-property
var params = {
AutoScalingGroupName: "my-auto-scaling-group",
DesiredCapacity: 2,
HonorCooldown: true
};
autoscaling.setDesiredCapacity(params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});
答案 1 :(得分:0)
无法直接通过SDK进行操作。您必须使用基础ASG设置所需的计数。与后端一样,ECS Cluster设置由cloudformation模板完成,该模板为该EC2池创建一个Auto-Scaling组。
您将能够在EC2的ASG部分中找到与群集关联的自动扩展组。您可以使用SDK更新该自动伸缩组的所需计数,这会影响ECS中的所需计数。
如果要使用自动缩放功能,则可以使用cloudwatch警报根据不同指标(例如CPU预留/利用率或内存预留/利用率)来放大和缩小实例。
参考:https://docs.aws.amazon.com/AmazonECS/latest/developerguide/cloudwatch_alarm_autoscaling.html