在AWS上管理工人
我偶尔会有一些需要大量计算资源的任务。这些任务会被放到一个叫做high-intensity
的队列里,然后由一台非常强大的机器来处理(这台机器有很多CPU和内存)。不过,这台机器每天只需要运行大约一个小时。
我想在AWS上自动部署这个任务处理的环境,让它能根据high-intensity
队列里的待处理消息来启动,并在不忙的时候安全地停止。大概流程是这样的:
- 有一个代理程序(可能是我自己在监控服务器上运行的软件)会检查队列的大小,判断是否有
x > x_threshold
个新任务需要处理(比如,我希望当有5个待处理的“大”任务时触发) - 启动一个特定的AWS实例,它会注册到消息中间件(RabbitMQ)上,并开始处理这些任务
- 一旦这个工作机器在
t > t_idle
的时间内(比如超过10分钟)没有工作,它就会被关闭。
有没有什么工具可以帮助我简化这个自动化的过程,还是说我得自己从头开始搭建一切?
2 个回答
0
这可能对你的情况来说有点过了,但作为一个起点,你可以看看AWS OpsWorks。
http://aws.amazon.com/opsworks/ http://aws.amazon.com/opsworks/faqs/
如果这确实有点超出你的需求,你可以使用AWS CloudFormation——这可能更贴近你想要的东西。
5
你可以把一个自定义的指标发布到AWS CloudWatch,然后根据这个自定义指标设置一个自动扩展触发器和扩展策略。自动扩展功能可以根据你的设置自动启动实例,也可以根据你的策略自动关闭实例。你需要在启动配置中包含合适的用户数据,以便启动你的主机。就像任何EC2实例的用户数据一样,这些用户数据可以是一个bash脚本、ansible剧本,或者你喜欢的任何配置管理工具。