Storm的部署雖然不是特別麻煩,但是在生產環境中,為了提高部署效率,方便管理維護,使用Docker來統一管理部署是一個不錯的選擇。下面是我開源的一個新的項目,一個配置好了storm與mono環境的Docker鏡像編排:storm-mono-docker。
這個項目得益於https://github.com/ptgoetz/storm-vagrant和https://github.com/wurstmeister/storm-docker;在此感謝他們的付出!
項目使用的Docker鏡像托管在 https://index.docker.io。
准備工作
-
安裝 Docker Engine,https://docs.docker.com/
-
安裝 docker-compose http://docs.docker.com/compose/install/
-
克隆git項目:
git clone https://github.com/ziyunhx/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
返回的結果就是你的IP,本例中可以通過 http://192.168.59.103:49080 來訪問。
如何部署提交一個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
如何連接我的容器?
通過使用 docker-compose ps 找到你希望連接的容器的ssh端口,然后通過ssh連接:
$ ssh root@`boot2docker ip` -p $CONTAINER_PORT
密碼是 ‘ziyunhxpass’ (位於:https://registry.hub.docker.com/u/ziyunhx/base/dockerfile/)。
本文來自 The NewIdea,作者 Carey Tzou 。
首發地址:http://www.tnidea.com/deploy-storm-by-docker.html
未經授權,拒絕任何全文及摘要轉載!