Amazon ec2 芹菜、重调或自定义解决方案,用于在my cloud中的机器上处理作业?

Amazon ec2 芹菜、重调或自定义解决方案,用于在my cloud中的机器上处理作业?,amazon-ec2,delayed-job,celery,resque,task-queue,Amazon Ec2,Delayed Job,Celery,Resque,Task Queue,我的公司有数千个运行应用程序代码的服务器实例——一些实例运行数据库,其他实例运行web应用程序,还有一些运行API或Hadoop作业。所有服务器都运行Linux 在此云中,开发人员通常希望对实例执行以下两种操作之一: 升级在该实例上运行的应用程序的版本。通常这涉及a)在相关subversion存储库中标记代码,b)从该标记构建RPM,以及c)在相关应用程序服务器上安装该RPM。请注意,此操作将涉及四个实例:SVN服务器、生成主机(生成发生的位置)、YUM主机(存储RPM的位置)和运行应用程序的实

我的公司有数千个运行应用程序代码的服务器实例——一些实例运行数据库,其他实例运行web应用程序,还有一些运行API或Hadoop作业。所有服务器都运行Linux

在此云中,开发人员通常希望对实例执行以下两种操作之一:

  • 升级在该实例上运行的应用程序的版本。通常这涉及a)在相关subversion存储库中标记代码,b)从该标记构建RPM,以及c)在相关应用程序服务器上安装该RPM。请注意,此操作将涉及四个实例:SVN服务器、生成主机(生成发生的位置)、YUM主机(存储RPM的位置)和运行应用程序的实例

    如今,新应用程序版本的推出可能需要500个实例

  • 在实例上运行任意脚本。脚本可以用任何语言编写,只要解释器存在于该实例上。例如,UI开发人员希望运行他的“check_memory.php”脚本,该脚本对10个UI实例执行x、y、z操作,然后在满足某些条件时重新启动Web服务器

  • 我应该使用哪些工具来帮助构建此系统?我见过芹菜、辣椒和延迟工作,但它们似乎是为完成许多任务而建造的。这个系统的负载要小得多——也许在一个大日子里,可能会运行上千个升级作业,执行几百个任意脚本。此外,它们不支持用任何语言编写的任务

    中央“作业处理器”应如何与实例通信?SSH,消息队列(哪一个),还有什么

    谢谢你的帮助


    注意:此云是专有的,因此EC2工具不是一个选项。

    我可以想到两种方法:

  • 在服务器上设置无密码SSH,创建一个包含集群中所有计算机列表的文件,并直接使用SSH运行脚本。例如:sshuser@foo.com“ls-la”。这与Hadoop的集群启动和关闭脚本使用的方法相同。如果要动态分配任务,可以随机拾取节点

  • 使用Torque或Sun Grid Engine之类的工具来管理集群

  • 包安装可以封装在脚本中,因此您只需解决第二个问题,并使用该解决方案解决第一个问题:)