我正在开发一个可在Amazon EC2机器上运行的分布式程序。
理想情况下,我会在本地计算机上进行开发,触发脚本在远程计算机上部署源代码(我有ssh访问权限的所有Linux计算机),在每个计算机上触发编译命令远程机器然后在每个实例上运行程序,同时控制正在运行的程序(能够暂停它们)。
我想知道是否已经存在任何用于此类任务的工具(除了使用MPI,但这是另一个问题),如果没有,我应该遵循哪些最佳实践。
答案 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;