在多个节点上进行短期Akka部署

时间:2012-05-22 09:21:00

标签: cloud cluster-computing akka apache-zookeeper grid-computing

我正在使用简单的主和多工作拓扑与Akka编写分布式研究应用程序,目的是部署到内部节点集群或企业云中。 (当Akka 2.1可用时,我将考虑使用群集支持)

我的问题: 将代码(以包含Akka微内核的文件夹形式)部署到每个节点上的最简单/最好的方法是什么,启动它,让它做它的事情,然后拆除并根据需要重复?

  • 每个工作节点的微内核目录和可执行文件是相同的,只有几MB。 Config包含他们将连接到的主服务器的IP。
  • 我打算手动启动主人。
  • 弹性不是一个问题,因为这不是一个关键业务应用程序,而是一个私有应用程序 研究问题。
  • 当地没有重要数据存储在工人身上。
  • 应用程序完成后,我可能想要重新部署不同的应用程序而不会拆除节点(例如,已经改进了代码库)。

更新:发现Condor节点支持在整机模式下运行的作业。这应该支持将微内核作为一项工作运行,并且只需要确保工作人员在完成后正确退出。

更新2:有人提到Zookeeper可能非常适合这个。希望有经验的人提供意见。

1 个答案:

答案 0 :(得分:2)

以下是一些想法。我没有Akka的经验,但我确实知道网格计算和部署。

  1. 使用现有的网格工具,例如http://www.gridgain.com(具有GPL版本)。我也听说有人用http://www.hazelcast.com/

  2. 构建一个网格
  3. 使用云端邮箱,例如机身,http://www.pistoncloud.com/press-releases/piston-cloud-launches-free-openstack-distribution/。我确信必须有其他人。

  4. 我相信机身附带Cloud Foundry,但您可以直接使用它:https://micro.cloudfoundry.com/但不确定该版本如何扩展。

  5. 滚动您自己的系统,安装到一个VM映像中,然后将其克隆到其他节点上。

  6. 当谈到你自己的时候,你可以这样做,这与我已经开发并且运作良好的东西非常相似。

    • 使用maven构建应用程序,使用您喜欢的库。

    • 将内置的二进制文件推入Sonatype Nexus。

    • 构建一个自定义启动器,给定模块的maven坐标可以运行它。我的laucher首先检查当地maven repo的罐子,如果它们不存在,那么它从nexus下载它们。然后它构造传递依赖树中所有jar的类路径。然后它使用新的类路径创建一个新的类加载器,并通过类加载器启动主类。

    • 使用java-service-wrappe或类似方法编写服务,在启动时通过从config读取一些maven坐标和主类的名称来检查要运行的代码的版本。 Config可以是网络驱动器上的文件,预配置的URL,甚至是zookeeper。然后将其传递给下载并运行代码的启动器。

    • 将此服务安装到许多计算机上,手动或通过克隆虚拟机。

    • 利润!

    我没有特别提到Akka,因为你的大多数问题似乎都是如何让代码在多个节点上运行。

    自定义路由对我来说效果很好,但后来我只有几台服务器使用它,所有我正确的网格计算都是在数据突触中完成的。但我确实想知道如果其中一个开源PaaS很适合我是否重新开始。