我正在使用简单的主站和多个工人拓扑编写一个带有akka的分布式研究应用程序,目的是部署到内部节点或企业云中。 (当Akka 2.1可用时,我将使用聚类支持)来调查)

我的问题: 什么是最简单/最佳方法可以在每个节点上部署我的代码(以包含akka microkernel的文件夹的形式)启动它,让它做到这一点,然后根据需要拆除并重复重复?

  • Microkernel目录和可执行文件对于每个工人节点以及仅几MB相同。 config包含他们将连接到的主机的IP。
  • 我打算手动启动主人。
  • 弹性不是一个问题,因为这不是一个企业关键申请,而不是私人 研究问题。
  • 没有重要数据在本地存储到工人。
  • 在应用程序完成后,我可能希望重新部署不同的应用程序而不拆除节点(例如,提缩码字)。

更新:发现Condor节点支持在全机模式下运行的作业。这应该支持将Microkernel作为作业运行,只需要确保在完成后正确退出。

更新2:有人提到的zookeeper可能非常适合这一点。将欣赏与经验的任何人输入。

有帮助吗?

解决方案

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

  1. 使用现有网格工具,例如 http://www.gridgain.com (哪个有一个gpl版本)。我也听说过与 http://www.hazelcast.com/

  2. 使用云箱,如机身, http://www.pistoncloud.com/press-releases/piston-cloud-launches-free-openstack-distribution/ 。我相信必须有其他人。

  3. airframe附带云铸造厂,但我相信,但你可以直接查看它: https:// micro.cloudfoundry.com/ 但不确定该版本如何缩放。

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

  5. 滚动自己的时候,你可以如下,这与我已经开发的东西非常相似,效果很好。

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

    • 将构建二进制文件推入SONATYPE Nexus。

    • 构建自定义启动器,鉴于模块的Maven协调可以运行它。如果他们不存在,我的Laucher首先检查罐子的本地Maven Repo,然后将它们从Nexus下载。然后它构造了传递依赖树中所有罐子的类路径。然后它使用新类路径创建一个新的ClassLoader,并通过ClassLoader启动主类。

    • 使用java-service-wrappe或类似,使用java-service-wrappe或类似,通过读取一些maven协调和从配置的主类的名称来检查要运行的代码版本。配置可以是网络驱动器上的文件,预先配置的URL,甚至是ZooKeeper。然后它将其传递给启动器,下载并运行代码。

    • 手动或通过克隆VM将此服务安装到许多机器上。

    • 利润!

    我没有提到akka,因为你的大多数问题似乎是如何在Mulitple节点上获取代码。

    自定义路线对我来说已经适用于,但是我只使用了一些使用此服务器,并且在数据突触中完成了所有正确的网格计算。但是,如果其中一个开源paas是一个很好的选择,我会想知道我是否被重新开始。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top