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

Posted

技术标签:

【中文标题】AWS OpsWorks 基于负载的实例(如 EC2 自动扩展)【英文标题】:AWS OpsWorks load-based instances by metrics (like EC2 autoscaling) 【发布时间】:2014-11-06 11:01:53 【问题描述】:

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

我需要在第二层创建基于负载的实例,但我在那里只看到 cpu/ram/load_avg 指标,这意味着我必须将至少一个第二层实例保持在始终开启模式以在以下情况下加载更多实例这是需要的。

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

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

【问题讨论】:

【参考方案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

【讨论】:

以上是关于AWS OpsWorks 基于负载的实例(如 EC2 自动扩展)的主要内容,如果未能解决你的问题,请参考以下文章

AWS+OpsWorks:如何使用 OpsWorks 启用 EC2 实例的详细监控

AWS Opsworks 未能添加 EC2 实例

OpsWorks 基于负载的实例与自动扩展组?

使用 AWS CLI 删除 OpsWorks EC2 实例

持续集成:使用 AWS Cloudformation+OpsWorks 在新创建的 EC2 实例上运行 Jenkins Build,最佳实践是啥?

Cloudformation + OpsWorks