2013-10-04 27 views
6

我開發風暴拓撲(storm-project.net)。我有2個遠程集羣:分段和生產。將拓撲部署到不同的遠程集羣?

我有兩個storm.yaml文件在客戶端(我的筆記本上寫代碼)指向不同的遠程集羣production.storm.yaml和staging.storm.yaml。

不幸的是,我知道它們之間進行切換的唯一途徑是通過「風暴罐子」命令遠程部署拓撲之前改變一個符號鏈接到〜/ .storm/storm.yaml。這很容易出錯,並且會在項目源代碼樹中創建一個依賴項,以便在客戶機文件樹中的相當任意的地方進行操作。

必須有一個更好的辦法。 「風暴名單--config staging.storm.yaml」給我有關臨時集羣信息,但我不能找到一個可比的標誌設置爲「風暴罐子」 conf文件。或者可能有像我可以設置的「STORM_HOME」這樣的環境變量?

回答

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文件,並且對於不同的部署,它們可能會有所不同。始終使用相同的名稱。

8

你並不需要保持獨立.yaml文件。您可以使用-c命令行選項覆蓋nimbus.host配置:

storm jar -c nimbus.host=nimbus.example.com my-storm-jar.jar com.example.MyTopology