我正在開發一個將在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;