在分布式远程计算机上部署和执行程序

时间:2011-06-28 23:18:19

标签: linux deployment distributed

我正在开发一个可在Amazon EC2机器上运行的分布式程序。

理想情况下,我会在本地计算机上进行开发,触发脚本在远程计算机上部署源代码(我有ssh访问权限的所有Linux计算机),在每个计算机上触发编译命令远程机器然后在每个实例上运行程序,同时控制正在运行的程序(能够暂停它们)。

我想知道是否已经存在任何用于此类任务的工具(除了使用MPI,但这是另一个问题),如果没有,我应该遵循哪些最佳实践。

2 个答案:

答案 0 :(得分:2)

根据您的部署规模,有许多替代方案。我没有尝试过的一个有趣的问题是glu。还有着名的木偶,厨师系列的配置管理工具,它们有一些过程控制组件。

答案 1 :(得分:1)

你不能写Perl吗?

Net::OpenSSH::Parallel允许编写脚本,通过SSH并行地在多个服务器中并行运行命令:

#!/usr/bin/perl

use Net::OpenSSH::Parallel;

my @hosts = (...);

my $pssh = Net::OpenSSH::Parallel->new;
$pssh->add_host($_) for @hosts;

$pssh->all(rsync_put => '/local/path', '/server/path');
$pssh->all(cmd => 'cd /server/path && make');
$pssh->all(join => '*'); # waits for all the servers to reach this point.
$pssh->all(cmd => 'cd /server/path && ./your_program');

$pssh->run;