2013-10-04 4 views
6

Je développe des topologies pour la tempête (storm-project.net). J'ai 2 clusters distants: mise en scène et production.Déploiement de topologies vers différents clusters distants?

J'ai deux fichiers storm.yaml sur le client (mon ordinateur portable sur lequel j'écris le code) qui pointent vers les différents clusters distants, production.storm.yaml et staging.storm.yaml. Malheureusement, le seul moyen que je connaisse pour basculer entre eux est de changer un lien symbolique en ~/.storm/storm.yaml avant de déployer des topologies à distance via la commande "storm jar". Ceci est source d'erreurs et crée une dépendance dans l'arborescence source du projet vers quelque chose à un endroit plutôt arbitraire dans l'arborescence du fichier du client.

Il doit y avoir un meilleur moyen. "stormlist --config staging.storm.yaml" me donnera des informations sur le cluster de transfert, mais je ne peux pas trouver un indicateur comparable pour définir le fichier conf avec "storm jar". Ou peut-être existe-t-il une variable d'environnement comme "STORM_HOME" que je peux définir?

Répondre

2

J'ai également eu le même problème. Ce que j'ai fait était d'écrire un Makefile pour déployer mes topologies Storm. Où différents objectifs créeraient des liens symboliques différents. Quelque chose comme:

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 

Donc, pour déployer une topologie à la production, vous pouvez aller:

make deploy-production 

et même avec la mise en scène. Vous verrez que la topologie est également fournie (si vous utilisez Maven). Vous pouvez également avoir les différents fichiers yaml dans votre référentiel et les liens symboliques pointent vers votre référentiel. Vous pouvez également avoir les fichiers yaml sur vos machines de déploiement et ils peuvent être différents pour différents déploiements. Toujours avec le même nom.

8

Vous n'avez pas besoin de gérer des fichiers .yaml séparés. Vous pouvez remplacer la configuration nimbus.host à l'aide de l'option de ligne de commande -c:

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