4

ノードの内部クラスターまたは企業クラウド内にデプロイすることを目的として、単純なマスターとマルチワーカートポロジを使用してAkkaで分散型リサーチアプリケーションを作成しています。(Akka 2.1が利用可能になったら、クラスタリングサポートの使用を検討します)

私の質問: コードを(Akkaマイクロカーネルを含むフォルダーの形式で)各ノードにデプロイし、起動し、実行させてから、必要に応じて破棄して繰り返す最も簡単で最良の方法は何ですか?

  • マイクロカーネルディレクトリと実行可能ファイルは、すべてのワーカーノードで同一であり、わずか数MBです。Configには、接続するマスターのIPが含まれています。
  • 手動でマスターを起動するつもりです。
  • これはビジネスクリティカルなアプリケーションではなく、個人的な調査の問題であるため、復元力は問題ではありません。
  • 重要なデータはワーカーにローカルに保存されません。
  • アプリケーションが完成した後、ノードを破棄せずに(たとえば、コードベースを改良して)別のアプリケーションを再デプロイしたい場合があります。

更新: Condorノードがマシン全体モードで実行されているジョブをサポートしていることがわかりました。これは、マイクロカーネルをジョブとして実行することをサポートする必要があり、完了時にワーカーが適切に終了することを確認する必要があります。

更新2: Zookeeperがこれに適している可能性があると誰かが言及しました。経験のある方からのご意見をいただければ幸いです。

4

1 に答える 1

2

ここにいくつかのアイデアがあります。私は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にはCloudFoundryが付属していると思いますが、直接使用することもできます:https ://micro.cloudfoundry.com/しかし、そのバージョンがどのようにスケールアップするかはわかりません。

  4. 独自のシステムをロールし、1つのVMイメージにインストールしてから、他のノードに複製します。

自分でロールする場合は、次のように行うことができます。これは、私がすでに開発したものと非常によく似ており、うまく機能します。

  • 好きなライブラリを使用して、Mavenを使用してアプリケーションを構築します。

  • ビルドされたバイナリをSonatypeNexusにプッシュします。

  • モジュールのmaven座標を指定して実行できるカスタムランチャーを作成します。私のlaucherは、最初にローカルのMavenリポジトリでjarをチェックします。jarが存在しない場合は、nexusからダウンロードします。次に、推移的な依存関係ツリー内のすべてのjarのクラスパスを構築します。次に、新しいクラスパスを使用して新しいクラスローダーを作成し、クラスローダーを介してメインクラスを起動します。

  • java-service-wrappeなどを使用して、起動時にconfigからいくつかのmaven座標とメインクラスの名前を読み取ることにより、実行するコードのバージョンをチェックするサービスを記述します。構成は、ネットワークドライブ上のファイル、事前構成されたURL、またはzookeeperである可能性があります。次に、これをランチャーに渡します。ランチャーはコードをダウンロードして実行します。

  • このサービスを、手動で、またはvmのクローンを作成して、多くのマシンにインストールします。

  • 利益!

Akkaについては特に言及していません。問題のほとんどは、複数のノードでコードを実行する方法にあるようです。

カスタムルートは私にとってはうまく機能しましたが、これを使用しているサーバーは数台しかなく、適切なグリッドコンピューティングはすべてデータシナプスで実行されます。しかし、これらのオープンソースPaaSの1つが適しているかどうか、もう一度やり直すのではないかと思います。

于 2012-08-30T08:26:17.317 に答える