基于指标的AWS OpsWorks基于负载的实例(如EC2自动扩展)

时间:2014-09-12 09:45:19

标签: amazon-web-services amazon-ec2 load-balancing autoscaling aws-opsworks

AWS OpsWorks堆栈有2层。第一层生成任务并将其存储到SQS队列,第二层执行这些任务。

我需要在第二层创建基于负载的实例,但我只看到cpu / ram / load_avg指标,这意味着我必须在永远在线模式下保留至少一个第二层实例才能加载更多它需要。

有没有办法按指标(SQS队列长度)创建实例,就像在EC2自动缩放中一样?

我知道我可以将这两个层安装到第一个实例,第一个层将运行第二个层,但我需要分开创建队列进程和执行任务进程。

1 个答案:

答案 0 :(得分:1)

没有与AWS Opsworks API的自动缩放部分集成。对于您的特定情况,您可以使用算法来确定实例是否是第一台机器,然后运行命令以关闭配方中的特定服务。

deploy/after_restart.rb / recipe name

layer = "worker" ## change to whatever you need
leader = node['opsworks']['layers'][layer]['instances'].keys.sort.first 
hostname = node['opsworks']['instance']['hostname']

if leader == hostname
  ...
  command to run and turn off the worker service
  ...
end