2013-10-04 8 views
6

私はstorm(storm-project.net)のトポロジを開発しています。私は2つのリモートクラスタを持っています:ステージングと生産。異なるリモートクラスタにトポロジを展開しますか?

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

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

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

答えて

2

私も同じ問題がありました。私がしたことは、私のStormトポロジを展開するためのMakefileを書くことでした。目標が異なると、異なるシンボリックリンクが作成されます。

make deploy-production 

およびステージングと同じ:だからあなたが行くことができ、生産へのトポロジを展開する

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 

:ような何か。 Mavenを使用している場合は、トポロジもパッケージ化されていることがわかります。異なるyamlファイルをリポジトリの一部として持つこともでき、シンボリックリンクがリポジトリを指すようにすることもできます。代わりに、yamlファイルをデプロイメントマシンに置くこともできます。デプロイメントマシンごとにyamlファイルを作成することもできます。常に同じ名前で。

8

別個の.yamlファイルを管理する必要はありません。 コマンドラインオプションを使用してnimbus.host設定を上書きすることができます。

storm jar -c nimbus.host=nimbus.example.com my-storm-jar.jar com.example.MyTopology 
関連する問題