代码之家  ›  专栏  ›  技术社区  ›  Matthew Watson

将Perl部署到无共享集群

  •  5
  • Matthew Watson  · 技术社区  · 16 年前

    有人对Perl模块到不共享集群的部署方法有什么建议吗?

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

    1. 取下半个集群
    2. 将Perl模块(CPAN样式的模块)复制到关闭的集群成员
    3. ssh到每个成员并运行 perl Makefile.pl; make ; make install 在要安装的每个模块上
    4. 确认部署
    5. 在服务中为新部署的群集成员提供服务,停止为旧群集成员提供服务,并重复步骤2->4

    这显然远不是最佳的,有人知道或知道将Perl模块部署到一个无共享集群的良好工具链吗?

    7 回复  |  直到 16 年前
        1
  •  4
  •   Michael Carman    16 年前

    使一个节点离线,安装Perl,然后使用它重新映射其他节点。

    至少,这是我想象中您希望在一个无共享集群中安装软件的方式。Perl只是您碰巧安装的应用程序。

        2
  •  3
  •   Dan Aditi    16 年前

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

        3
  •  2
  •   Dave Sherohman    16 年前

    在过去,我开发了一个Perl程序,它使用Expect模块(来自CPAN)基本上自动化您描述的过程,自动对每个主机执行ssh,复制任何必要的文件,并执行安装。不幸的是,这是为客户机开发的,所以我没有权限共享代码。如果你熟悉Expect,那么设置起来就不太难了。

        4
  •  2
  •   Kyle Burton    16 年前

    我们目前有一个集群Perl应用程序来进行数据处理。我们还有许多CPAN模块和我们开发的软件所依赖的模块。当你说“什么都不共享”时,我假设你指的是像nfs挂载这样的东西。

    如果机器具有相同的配置,那么您可以将整个应用程序构建成一个单一的目录结构(例如:/opt/my-app),对其进行tar升级,这可能是您唯一需要推到框中的东西。

    只要将它部署到盒子中,就可以使用 Capistrano . 我们开发了两个自己的集群实用程序,它们与ssh结合使用,我已经发布了一种形式的实用程序: parallel-jobs . 它的 README 显示了执行多个并行ssh命令的示例。扩展该程序以了解集群,然后能够在集群中执行相同的命令(而不是一系列不同的命令),这只是一个很小的步骤。

        5
  •  2
  •   Ranguard    16 年前

    如果您使用的是Debian或Ubto操作系统,那么您可以打包您的Perl模块——我已经打开了一些源代码来帮助实现这一点: Perl module builder 它仍然很粗糙,但是可以工作,可以在您自己的代码和CPAN模块上工作,这使得部署更加容易。

    还有一个项目是为所有的CPAN获取Redhat RPM,Dave Cross做了一个演讲。 Perl in RPM-Land 可能有用。

    如果您在其他没有打包的系统上,则rsync选项(安装在一台计算机上,然后 rsync 对于其他人来说)也应该可以,注意,如果需要,您可以挂载一个Windows共享并在Unix上同步到它。

    使用中央管理器 Puppet 使在集群中创建和维护机器变得更容易管理,从安装代码到管理用户和电子邮件配置。还有一个Perl项目正在开发中,可以做一些类似的事情,但这还没有公开。

        6
  •  1
  •   Drew Stephens    16 年前

    Capistrano 是一个允许您在一组服务器上运行命令的工具;它非常适合使您的任务变得相当容易。

    自动化的进一步发展,也包括复杂性,是 Puppet 这允许您定义一组服务器,赋予它们角色,然后将代码集推送到订阅某个角色的每台计算机上。

        7
  •  0
  •   J.J.    16 年前

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

    如果这些系统具有相同的架构,您可以像其他人所说的那样做,只需将编译后的模块从一个系统复制到另一个系统,只需确保您拥有所有依赖项以及接收者系统。