将拓扑部署到不同的远程集群?

lmvvr0a8  于 2021-06-24  发布在  Storm
关注(0)|答案(2)|浏览(378)

我正在为storm(storm project.net)开发拓扑。我有两个远程集群:暂存和生产。
我在客户机上有两个storm.yaml文件(在我的笔记本电脑上编写代码),它们指向不同的远程集群production.storm.yaml和staging.storm.yaml。
不幸的是,我知道在它们之间切换的唯一方法是在通过“storm jar”命令远程部署拓扑之前将符号链接更改为~/.storm/storm.yaml。这很容易出错,并且会在项目源代码树中创建对客户端文件树中任意位置的某个内容的依赖关系。
必须有更好的办法。”storm list--config staging.storm.yaml“将为我提供有关临时集群的信息,但是我找不到一个类似的标志来将conf文件设置为”storm jar“。或者我可以设置一个环境变量,比如“storm\u home”?

hs1rzwqc

hs1rzwqc1#

我也有同样的问题。我所做的是编写一个makefile来部署我的storm拓扑。不同的目标会产生不同的符号链接。比如:

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文件作为存储库的一部分,并使符号链接指向存储库。或者,您可以在部署计算机上拥有yaml文件,并且对于不同的部署,它们可以是不同的。总是用同一个名字。

8nuwlpux

8nuwlpux2#

您不需要维护单独的.yaml文件。您可以覆盖 nimbus.host 通过使用 -c 命令行选项:

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

相关问题