【问题标题】:AWS OpsWorks load-based instances by metrics (like EC2 autoscaling)AWS OpsWorks 基于负载的实例(如 EC2 自动扩展)
【发布时间】:2014-11-06 11:01:53
【问题描述】:
有一个 2 层的 AWS OpsWorks 堆栈。第一层生成任务并将其存储到 SQS 队列中,第二层执行这些任务。
我需要在第二层创建基于负载的实例,但我在那里只看到 cpu/ram/load_avg 指标,这意味着我必须将至少一个第二层实例保持在始终开启模式以在以下情况下加载更多实例这是需要的。
有没有办法像 EC2 自动缩放一样按指标(SQS 队列长度)创建实例?
我知道我可以将两个层都安装到第一个实例,第一层将运行第二个,但我需要将创建队列进程和执行任务进程分开。
【问题讨论】:
标签:
amazon-web-services
amazon-ec2
load-balancing
autoscaling
aws-opsworks
【解决方案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