6

嵐 (storm-project.net) のトポロジを開発しています。ステージングと本番の 2 つのリモート クラスターがあります。

クライアント (コードを書いているラップトップ) に 2 つの storm.yaml ファイルがあり、これらは異なるリモート クラスター、production.storm.yaml と staging.storm.yaml を指しています。

残念ながら、それらを切り替える唯一の方法は、シンボリック リンクを ~/.storm/storm.yaml に変更してから、"storm jar" コマンドを使用してトポロジをリモートでデプロイすることです。これはエラーが発生しやすく、クライアントのファイル ツリー内のかなり任意の場所にある何かへのプロジェクト ソース ツリー内の依存関係を作成します。

もっと良い方法があるはずです。「storm list --config staging.storm.yaml」でステージング クラスタに関する情報が得られますが、conf ファイルに「storm jar」を設定するための同等のフラグが見つかりません。それとも、設定できる「STORM_HOME」のような環境変数がありますか?

4

2 に答える 2

9

個別の .yaml ファイルを維持する必要はありません。コマンド ライン オプションnimbus.hostを使用して、構成をオーバーライドできます。-c

storm jar -c nimbus.host=nimbus.example.com my-storm-jar.jar com.example.MyTopology
于 2013-11-11T19:59:03.827 に答える
2

私も同じ問題を抱えていました。私が行ったことは、Storm トポロジーをデプロイするための Makefile を作成することでした。異なる目標が異なるシンボリックリンクを作成する場所。何かのようなもの:

export STORM_PATH=/opt/storm
export PROJECT_PATH=/project/path

compile:
    cd $(PROJECT_PATH)
    mvn compile

package:
    cd $(PROJECT_PATH)
    mvn package

deploy-staging: package
    ln -s $(STORM_PATH)/conf/staging.storm.yaml $(STORM_PATH)/conf/storm.yaml
    storm jar $(PROJECT_PATH)/target/project.jar my.project.Topology myTopology

deploy-production: package
    ln -s $(STORM_PATH)/conf/production.storm.yaml $(STORM_PATH)/conf/storm.yaml
    storm jar $(PROJECT_PATH)/target/project.jar my.project.Topology myTopology

したがって、トポロジを本番環境にデプロイするには、次のようにします。

make deploy-production

ステージングも同様です。トポロジもパッケージ化されていることがわかります (Maven を使用している場合)。また、さまざまな yaml ファイルをリポジトリの一部として保持し、シンボリック リンクがリポジトリを指すようにすることもできます。または、デプロイメント マシンに yaml ファイルを配置し、デプロイメントごとに異なるファイルにすることもできます。いつも同じ名前で。

于 2013-10-10T06:44:11.583 に答える