我正在开发一个将在Amazon EC2机器上运行的分布式程序。在分布式远程机器上部署和执行程序
理想我想发展我的本地机器上,触发脚本部署在远程计算机上(所有的Linux机器上,我有ssh访问)源,在每个远程机器上,然后触发的编译命令在控制正在运行的程序的同时在每个实例上运行程序(可以暂停它们)。
我想知道是否已经有这样的任务的工具(除了使用MPI,但这是另一个问题),如果不是,我应该遵循什么最佳实践。
我正在开发一个将在Amazon EC2机器上运行的分布式程序。在分布式远程机器上部署和执行程序
理想我想发展我的本地机器上,触发脚本部署在远程计算机上(所有的Linux机器上,我有ssh访问)源,在每个远程机器上,然后触发的编译命令在控制正在运行的程序的同时在每个实例上运行程序(可以暂停它们)。
我想知道是否已经有这样的任务的工具(除了使用MPI,但这是另一个问题),如果不是,我应该遵循什么最佳实践。
根据您的部署规模,有很多备选方案。一个我没有亲自尝试的有趣的是glu。还有着名的puppet,配置管理工具的厨师家族有一些过程控制组件。
难道你不能写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;