質問

単純なマスターと複数のワーカートポロジを使用してAkkaを使った分散研究アプリケーションを書いています。 (Akka 2.1が利用可能になると、クラスタリングのサポートの使用を検索します)

私の質問: 各ノードに(Akka Microkernelを含むフォルダの形式で)コードを展開するための最も簡単な/最善の方法は、それを起動し、それを実行してから、必要に応じて繰り返しますか?

  • MicroKernelディレクトリと実行可能ファイルは、ワーカーノードごと、わずか数MBで同じです。 configは、それらが接続するマスターのIPを含みます。
  • 手動でマスターを起動するつもりです。
  • これはビジネスクリティカルなアプリケーションではなく、むしろプライベートではないので、李>回復力は懸念ではありません。 研究問題
  • 重要なデータは労働者にローカルに保存されていません。
  • アプリケーションが完了したら、ノードを引き下げることなく別のアプリケーションを再デプロイしたい場合があります(例えば、CodeBaseを絞り込み)。

update:全体のマシンモードで実行されているジョブをサポートするようにコンドームノードを見つけました。これはMicroKernelをジョブとして実行することをサポートし、完了したときに労働者が正しく終了することを確認する必要があります。

更新2:誰かがこれに適しているかもしれません。経験を持つ人からの入力に感謝します。

役に立ちましたか?

解決

ここにいくつかのアイデアがあります。私はAkkaの経験がありませんが、グリッドコンピューティングと展開について知っています。

  1. http://www.gridgain.com (どれである)のような既存のグリッドツールを使用してください。 GPLバージョンを持っています。また、 http://www.pistoncloud.com/press-releases/piston-cloud-launches-free-openstack-distribution/ 。私は他の人がなければならないと確信しています。

  2. 航空機にはクラウド鋳物が付属しています、私は信じていますが、直接それを使って見ることができます: https:// micro.cloudfoundry.com/ そのバージョンがどのようにスケールアップするかわからない。

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

  4. あなた自身がロールロールするようになると、次のようにすることができます。これは、私がすでに開発したものと非常によく似ています。

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

    • バイナリをSonatype Nexusに押し込みます。

    • モジュールのMaven座標を与えられたカスタムランチャーを構築することができます。私のLaucherは最初にjarsのための地元のMaven Repoをチェックします。彼らが存在しないならば、それはNexusからそれらをダウンロードします。それから、推移的な依存ツリー内のすべてのjarのクラスパスを構築します。その後、新しいクラスパスを持つ新しいクラスローダーを作成し、ClassLoaderを介してメインクラスをランチャーします。

    • サービスを書く、Java-Service-Wrappeまたは類似のものを使用して、Startupで実行するコードのバージョンをチェックし、Configからメインクラスの名前を読み取ることで実行するコードのバージョンを確認します。 configは、ネットワークドライブ、事前設定されたURL、またはZooKeeperのファイルであり得る。次にこれをダウンロードして実行するランチャーにこれを渡します。

    • このサービスを手動で、またはVMのクローニングを介して、さまざまなマシンにインストールします。

    • 利益!

    具体的には、あなたの問題のほとんどがMulitpleノードで実行されているコードを取得する方法のようです。

    カスタムルートは私にとってうまくいっていますが、これを使用しているサーバーはほんの数人のサーバーを持っています。また、私の適切なグリッドコンピューティングはすべてデータシナプスで行われます。しかし、私はこれらのオープンソースのPaaのうちの1つが良いフィット感になるのであれば、私が再び始めることになったのか疑問に思う。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top