Storm的部署雖然不是特別麻煩,但是在生產環境中,為了提高部署效率,方便管理維護,使用Docker來統一管理部署是一個不錯的選擇。下面是我開源的一個新的專案,一個配置好了storm與mono環境的Docker映象編排:storm-mono-docker

準備工作

使用

首先將命令列目錄切換到剛剛克隆下來的git專案目錄;

通過以下命令啟動叢集:

docker-compose up -d
  • 你也可以使用 docker-compose up 命令來將結果輸出到當前命令列介面,但是在你結束它之前無法進行任何其它操作,而一旦命令列退出,所有的容器都將停止。而 docker-compose up -d 將在後臺啟動所有容器。

停止這個叢集的所有容器:

docker-compose stop

容器一旦停止,下次直接啟動將無法正常連結容器,導致storm執行異常,你可以在結束後使用以下命令結束和移除所有的Docker快取:

docker kill $(docker ps -q) ; docker rm $(docker ps -a -q)

增加更多的supervisors:

docker-compose scale supervisor=4

使用以下命令刪除所有的映象檔案(小心,這會讓你下一次啟動時花費更多時間下載容器,僅在不想繼續使用時執行):

docker rmi $(docker images -q -a)

重新構建和更新

你可以在修改Dockerfile後使用以下命令來重新構建映象:rebuild.sh ;

使用以下命令來更新映象到最新版本:refresh.sh 。

問與答

如何訪問Storm UI來檢視執行狀況?

在docker-compose.yml中有下面這段配置:

ui:
  image: ziyunhx/storm-ui
      ports:
        - "49080:8080"

它告訴我們將Docker映象的8080埠對映到了主機的49080,因此你可以通過訪問 http://localhost:49080 來訪問。如果你使用 boot2docker ,你可以通過以下命令得到虛擬機器的IP:

$ boot2docker ip
The VM's Host only interface IP address is: 192.168.59.103

如何部署提交一個topology?

如果 nimbus 的IP與埠不是預設的,你需要指定它們後來提交,本例中可以使用以下命令:

storm jar target/your-topology-fat-jar.jar com.your.package.AndTopology topology-name -c nimbus.host=192.168.59.103 -c nimbus.thrift.port=49627

如果上述命令沒有起作用,你可以在本地的Storm配置檔案(storm.yaml)配置以下項:

nimbus.host: "192.168.59.103"    
nimbus.thrift.port: 49627

然後執行以下命令提交:

storm jar target/your-topology-fat-jar.jar com.your.package.AndTopology topology-name