在AWS上管理工人

3 投票
2 回答
683 浏览
提问于 2025-04-18 00:21

我偶尔会有一些需要大量计算资源的任务。这些任务会被放到一个叫做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——这可能更贴近你想要的东西。

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

5

你可以把一个自定义的指标发布到AWS CloudWatch,然后根据这个自定义指标设置一个自动扩展触发器和扩展策略。自动扩展功能可以根据你的设置自动启动实例,也可以根据你的策略自动关闭实例。你需要在启动配置中包含合适的用户数据,以便启动你的主机。就像任何EC2实例的用户数据一样,这些用户数据可以是一个bash脚本、ansible剧本,或者你喜欢的任何配置管理工具。

撰写回答