在AWS上管理员工

时间:2014-03-28 17:21:11

标签: python amazon-web-services rabbitmq celery

我偶尔会遇到高CPU密集型任务。它们被发送到一个单独的high-intensity队列,由一台非常大的机器(大量的CPU,大量的RAM)消耗。但是,这台机器每天只需要运行一个小时。

我想在AWS上自动部署此映像,由high-intensity队列中的未完成消息触发,然后在不忙时安全停止。有点像:

  • 某个代理(可能是我自己的软件在我的监视器服务器上运行)检查队列大小,确定有x > x_threshold个新工作要完成(例如,如果有5个未完成的“大”工作,我想触发“ )
  • 启动特定AWS实例,向代理(RabbitMQ)注册并使用作业
  • 一旦工人闲置一些t > t_idle(例如,超过10分钟),机器就会关闭。

我是否可以使用任何工具来简化自动化过程,或者我是否需要自行引导所有工具?

2 个答案:

答案 0 :(得分:5)

您可以public a custom metric访问AWS CloudWatch,然后根据自定义指标设置autoscale triggerscaling policy。 Autoscale可以为您启动实例,并根据您的策略将其终止。您必须在launch configuration中包含适当的用户数据以引导主机。就像任何EC2实例的userdata一样,它可以是bash脚本或ansible playbook,也可以是你选择的配置管理工具。

答案 1 :(得分:0)

对于您的方案可能有些过分,但作为起点,您可能需要查看AWS OpsWorks。

http://aws.amazon.com/opsworks/ http://aws.amazon.com/opsworks/faqs/

如果确实比你需要的水平更高,你可以使用aws cloudformation - 也许有点'更接近金属'来满足你的需要。

http://aws.amazon.com/cloudformation/