2013-10-04 2 views
6

폭풍 (storm-project.net)에 대한 토폴로지를 개발 중입니다. 2 개의 원격 클러스터가 있습니다 : 스테이징 및 프로덕션.다른 원격 클러스터에 토폴로지를 배포 하시겠습니까?

다른 원격 클러스터 인 production.storm.yaml 및 staging.storm.yaml을 가리키는 두 개의 storm.yaml 파일 (코드를 작성한 랩톱)이 있습니다.

안타깝게도 "storm jar"명령을 통해 원격으로 토폴로지를 배포하기 전에 ~/.storm/storm.yaml에 대한 심볼릭 링크를 변경하는 것이 유일한 방법입니다. 이것은 오류가 발생하기 쉽고 프로젝트 소스 트리에서 클라이언트의 파일 트리에있는 임의의 위치에 대한 종속성을 만듭니다.

더 좋은 방법이있을 것입니다. "storm list --config staging.storm.yaml"은 준비 클러스터에 대한 정보를 제공하지만 "storm jar"로 conf 파일을 설정하는 비교 플래그를 찾을 수 없습니다. 아니면 내가 설정할 수있는 "STORM_HOME"과 같은 환경 변수가 있을까요?

답변

2

나는 또한 동일한 문제가있었습니다. 내가 한 것은 스톰 토폴로지를 배포하기위한 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 파일을 저장소의 일부로 가질 수 있으며 symlink가 저장소를 가리 키도록 할 수 있습니다. 또는 배포 시스템에 yaml 파일을 저장할 수 있으며 배포시 다를 수 있습니다. 항상 같은 이름으로.

8

별도의 .yaml 파일을 유지 관리 할 필요가 없습니다. 명령 줄 옵션을 사용하여 nimbus.host 설정을 무시할 수 있습니다.

storm jar -c nimbus.host=nimbus.example.com my-storm-jar.jar com.example.MyTopology 
관련 문제