【问题标题】:NIFI - Dev to Test to ProdNIFI - 从测试到生产的开发
【发布时间】:2016-04-13 14:02:28
【问题描述】:

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

我们考虑过的事情:

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

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

编辑:

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

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

【问题讨论】:

  • 嗨,我是这个 nifi-api-deploy 项目的创建者。我一直在根据反馈和人们想要使用它的方式对其进行改进。随时参与并提供反馈和/或请求。

标签: apache-nifi


【解决方案1】:

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

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

为了让这在未来变得更容易,有一个功能提案,称为变量注册表:

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

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

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

【讨论】:

  • 一如既往,感谢您的意见,布莱恩。我会看看模板。
  • 嗨 Bryan,我用@scarpacci 看了一下 nifi-api-deploy 实用程序,它似乎走在了正确的轨道上。我们有相当复杂的流程,编写的代码似乎不能很好地与在根级处理器组或控制器上取消部署处理器/连接一起使用。手动删除和重新部署似乎没问题。即使所有包含的处理器都标记为已停止,它似乎也会自动启动处理器组。
  • 嗨乔希,很高兴它似乎在您想要做的事情的正确轨道上。就功能而言,该项目由社区成员维护,因此,如果您认为某些事情无法正常工作,最好的选择可能是通过 GitHub 页面提交问题,我知道现在有几个未解决的问题讨论进行中。关于自动启动停止的进程组的部分听起来应该解决。
【解决方案2】:

你可以看看这个帖子automating NIFI template deployment

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

  • 准备你的 nifi 开发

    1. 在 nifi 上创建模板
    2. 并下载它
    3. 使用工具提取示例配置
  • 在生产中部署它
    1. 使用工具取消部署旧版本
    2. 使用工具部署模板
    3. 使用工具更新生产配置

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-30
    • 2011-04-24
    • 1970-01-01
    • 1970-01-01
    • 2011-08-28
    • 2023-04-03
    • 2019-04-17
    相关资源
    最近更新 更多