将Perl部署到无共享群集

时间:2008-09-25 03:38:29

标签: perl deployment

有人建议将Perl模块的部署方法分配给无共享群集吗?

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

  1. 取下群集的一半
  2. 将Perl模块(CPAN样式模块)复制到已关闭的集群成员
  3. ssh到每个成员并在每个要安装的模块上运行perl Makefile.pl; make ; make install
  4. 确认部署
  5. 为新部署的集群成员服务,停止服务旧集群成员并重复步骤2 - > 4
  6. 这显然远非最优,任何人都拥有或知道用于将Perl模块部署到无共享群集的良好工具链?

7 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:3)

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

答案 2 :(得分:2)

过去,我开发了一个Perl程序,该程序使用Expect模块(来自CPAN)基本上自动化您描述的过程,自动sshing到每个主机,复制任何必要的文件,以及执行安装。不幸的是,这是为客户开发的,因此我无法访问要共享的代码。如果您熟悉Expect,那么设置它应该不会太难。

答案 3 :(得分:2)

我们目前有一个进行数据处理的集群Perl应用程序。我们还有许多CPAN模块和模块,我们已经开发了软件所依赖的模块和模块。当你说'无所事事'时,我假设你指的是像NFS挂载这样的东西。

如果机器具有相同的配置,那么您可以将整个应用程序构建到单个目录结构中(例如:/ opt / my-app),将其tar起来,这可能是您需要的唯一内容推到盒子里。

只要将其部署到框中,您就可以使用Capistrano。我们开发了几个我们自己的群集实用程序,这些实用程序背离了ssh - 我已经发布了该实用程序的一种形式:parallel-jobs。它的README显示了执行多个并行ssh命令的示例。扩展该程序是为了能够了解您的集群,然后能够跨集群执行相同的命令(而不是一系列不同的命令),这是一小步。

答案 4 :(得分:2)

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

还有一个项目可以获得所有CPAN的RedHat rpms,Dave Cross发表了一篇可能有用的演讲Perl in RPM-Land

如果您使用的是其他没有打包的系统,那么rsync选项(在一台机器上安装然后rsync安装到其他机器上)也可以正常工作,请注意您可以安装Windows共享和rsync如果需要,可以在unix上使用它。

使用像Puppet这样的中央管理器,可以更轻松地管理群集中的计算机,从安装代码到管理用户和电子邮件配置。还有一个Perl项目正在进行类似的工作,但尚未公开。

答案 5 :(得分:1)

Capistrano是一个允许您在一组服务器上运行命令的工具;它非常适合让您的任务变得更加轻松。

更进一步的自动化,还有复杂性,Puppet允许您定义一组服务器,为它们赋予角色,然后将订单集推送到订阅某个角色的每台机器上。 / p>

答案 6 :(得分:0)

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

如果这些系统具有相同的功能,您可以像其他人所说的那样,只需将已编译的模块从系统复制到系统,只需确保在接收系统上也具有所有依赖性。