2008-09-25 229 views
5

任何人都有关于将Perl模块部署到无共享集群的方法的建议吗?将Perl部署到无共享集群

我们目前的方法是非常手动的。

  1. 取下半群集
  2. 复印Perl模块(CPAN风格模块)被击落的集群成员
  3. SSH到每个构件和被安装在每个模块上运行perl Makefile.pl; make ; make install
  4. 确认部署
  5. 在服务中,新部署的集群成员停止服务旧集群成员并重复步骤2→4

这显然远不是最优的,任何人都知道将Perl模块部署到无共享集群的好工具链?

回答

4

以一个节点脱机,安装Perl,然后用它来重新映像的其他节点。

至少,这就是我想象你想要在无共享集群安装软件。 Perl只是你正在安装的应用程序。

2

我过去开发了一个Perl程序,它使用Expect模块(来自CPAN)基本上自动执行所描述的过程,自动对每个主机进行sshing,复制所有必需的文件并执行安装。不幸的是,这是为客户现场开发的,因此我无法访问代码进行分享。如果您熟悉Expect,那么设置起来应该不会太困难。

0

我不知道一个无共享集群是什么,但如果它使用了一些基础的* nix系统如Fedora,Mandriva的,或Ubuntu。许多perl模块都是针对特定体系结构进行预编译的。你可以很容易地运行这些。

如果这些系统都是一样的拱你可以做别人说,只是在编译的模块从系统复制到系统中,只要确保你拥有所有的依赖关系,以及在接收方系统。

2

我们目前有一个群集Perl应用程序,做数据处理。我们还有许多我们开发的软件所依赖的CPAN模块和模块。当你说'没有共享'时,我假设你指的是NFS挂载之类的东西。

如果机器具有相同的配置,那么您可能可以将整个应用程序构建到单个目录结构中(例如:/ opt/my-app),并且可以成为您唯一需要的东西推到箱子。

至于它部署在箱子上,您可能能够使用Capistrano。我们开发了几个我们自己的集群实用程序,它们搭载了ssh - 我已经发布了该实用程序的一种形式:parallel-jobs。它的README显示了一个执行多个并行ssh命令的例子。扩展该程序以便能够了解您的群集,然后能够跨群集执行相同的命令(而不是一系列不同的命令)是一小步。

3

假设所有的机器都是相同的,你应该能够保持一个规范的安装,并使用rsync或其他东西来保持其他更新。

1

Capistrano是一种工具,它允许您在一组服务器上运行命令;它非常适合让你的任务更容易。

再往下自动化线,而且复杂,是Puppet,允许你做定义一组服务器,给他们的角色,然后推出的代码集,以每台机器订阅了一定的作用。

2

如果您使用的是Debian或Ubunto操作系统,那么您可以打包您的Perl模块 - 我已经开源了一些代码来帮助解决这个问题:Perl module builder它仍然非常粗糙,但可以工作,并且可以使用您自己的代码作为CPAN模块,这会使部署更容易。

还有一个项目可以获得所有CPAN的RedHat rpms,Dave Cross给出了一个可能有用的谈话Perl in RPM-Land

如果你在其他一些没有打包的系统上,那么rsync选项(安装在一台机器上,然后在其他机器上安装rsync)也应该可以工作,注意你可以在它上面安装一个windows共享和rsync unix如果需要的话。

使用中央管理器一样Puppet使创建并在集群中保持机器了很多更容易管理,从安装代码管理用户和电子邮件配置。还有一个Perl项目正在进行类似的工作,但尚未公布。