2013-10-04 24 views
6

Tworzę topologie do burzy (storm-project.net). Mam 2 zdalne klastry: inscenizacja i produkcja.Rozmieszczanie topologii do różnych klastrów zdalnych?

Mam dwa pliki storm.yaml na kliencie (mój laptop, na którym piszę kod), które wskazują na różne zdalne klastry, production.storm.yaml i staging.storm.yaml.

Niestety, jedynym sposobem, w jaki mogę się między nimi przełączać, jest zmiana dowiązania symbolicznego do ~/.storm/storm.yaml przed zdalnym wdrożeniem topologii za pomocą polecenia "burza słoika". Jest to błąd podatny na błędy i tworzy zależność w drzewie źródłowym projektu do czegoś w dość arbitralnym miejscu w drzewie plików klienta.

Musi istnieć lepszy sposób. "lista burzowa --config staging.storm.yaml" da mi informacje o klastrze pomostowym, ale nie mogę znaleźć porównywalnej flagi, aby ustawić plik conf z "buforem jar". A może jest taka zmienna środowiskowa jak "STORM_HOME", którą mogę ustawić?

Odpowiedz

2

Też miałem ten sam problem. To, co zrobiłem, to napisać plik Makefile do wdrażania moich topologii Storm. Gdzie różne cele tworzyłyby różne dowiązania symboliczne. Coś jak:

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 

więc rozmieścić topologię do produkcji można przejść:

make deploy-production 

i to samo z inscenizacji. Zobaczysz, że topologia jest również zapakowana (jeśli używasz Mavena). Możesz także mieć różne pliki yaml jako część twojego repozytorium i mieć dowiązania symboliczne tylko wskazywać na twoje repozytorium. Alternatywnie możesz mieć pliki yaml na swoich maszynach wdrażania i mogą one być różne dla różnych wdrożeń. Zawsze o tej samej nazwie.

8

Nie trzeba do prowadzenia oddzielnych plików .yaml. Można zastąpić konfigurację nimbus.host przy użyciu opcji wiersza poleceń -c:

storm jar -c nimbus.host=nimbus.example.com my-storm-jar.jar com.example.MyTopology 
Powiązane problemy