9

随着流程在开发、测试和生产阶段的推进,我们正在努力找出更新处理器配置的最佳方法。当流部署到特定环境时,我们真的希望避免在处理器中操作主机、端口等引用。至少在我们的例子中,我们将为 ElasticSearch、PostGres 等提供不同的主机。其他人是如何处理这个问题的?

我们考虑过的事情:

  • 使用表达式语言从属性文件中提取配置。这对于启用了 EL 的处理器非常有用,但对于没有启用 EL 的处理器则不然。
  • 操作流 xml 并覆盖主机、端口等配置。有点担心无意中损坏 xml 以及跨 NIFI 版本的可移植性。

任何提示或建议将不胜感激。很有可能存在我们忽略考虑的明显解决方案。

编辑:

我们将使用 Byran 建议的模板。它们肯定会满足我们的需求,并且似乎是我们在众多环境中控制配置的好方法。

https://github.com/aperepel/nifi-api-deploy

4

2 回答 2

9

这个讨论经常出现,这里肯定有改进的余地……

您是正确的,目前的一种方法是将环境相关的属性值提取到 bootstrap.conf 中,然后通过表达式语言引用它们,以便 flow.xml.gz 可以从一个环境移动到另一个环境。正如您所提到的,这只适用于支持表达式语言的属性。

为了在未来更容易做到这一点,有一个功能建议,称为变量注册表:

https://cwiki.apache.org/confluence/display/NIFI/Variable+Registry

您可能想看看一个有趣的方法是使用模板。有一个 GitHub 项目可以用来帮助解决这个问题:

https://github.com/aperepel/nifi-api-deploy

于 2016-04-14T09:33:16.950 回答
4

您可以查看这篇文章自动化 NIFI 模板部署

对于自动化 NIFI 模板部署,有一个运行良好的工具:https ://github.com/hermannpencole/nifi-config

  • 准备你的 nifi 开发

    1. 在 nifi 上创建模板
    2. 并下载它
    3. 使用工具提取示例配置
  • 将其部署到生产中
    1. 使用工具取消部署旧版本
    2. 使用工具部署模板
    3. 使用工具更新生产配置
于 2017-08-19T08:23:31.520 回答