【问题标题】:automating NIFI template deployment自动化 NIFI 模板部署
【发布时间】:2018-10-29 08:06:35
【问题描述】:

我是 nifi 的新手,我想了解(因为它看起来很多基于 GUI)是否有一种方法可以在 Nifi 上自动扩展和缩减,以及如何采用 xml Nifi 模板并将其部署到集群.

本质上,我们尝试做的是使用 Nifi 从 kafka 服务器收集 JMX 和日志文件,因为它们以自动方式出现,因此日志记录和 JMX 计数器开始流入,比如说 Elasticsearch 集群。

例如,现在我们已经使用 Ansible 自动部署了 kafka 服务器,因此希望在集群部署的同时配置和部署 Nifi xml teamplates,这样就不需要人工干预来收集 kafka jmx 计数器和日志文件。

如何在 Nifi 中实现自动化?

【问题讨论】:

    标签: apache-nifi


    【解决方案1】:

    有许多工具和技术可用于自动部署模板,包括:

    困难的部分是从现有流程迁移到新流程,尤其是在现有流程可能有排队的流程文件并且出处历史引用现有流程的情况下。但是,如果您要自动化 NiFi 集群的整个部署并将模板部署到空白画布,这可能不是问题。

    您可以在Configuration Management of Flows 阅读对所涉及问题和未来计划的完整处理。

    【讨论】:

      【解决方案2】:

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

      • 准备你的 nifi 开发

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

      【讨论】:

        【解决方案3】:

        基本上您需要将下载的模板导入目标生产实例;你可以使用nifi-rest-api

        创建 nifi 模板并手动下载到文件夹后,您应该使用脚本或工具将模板导入目标 nifi 实例并在导入后更改一些设置。

        您可以使用一些工具:

        1. this 是一个基于脚本的部署项目。
        2. this 一个是基于java的

        如果你还不够;您可以创建一个与上述工具类似的工具。您可以在所有步骤中使用 nifi-rest-api。部署步骤应如下所示:

        • 获取现有模板 (GET /flow/templates)
        • 删除现有模板(与您的模板同名的模板)
        • 删除相关的控制器服务(数据库连接池、Http Context)
        • 上传您的模板
        • 删除之前由您的模板创建的数据流
        • 从更新后的新模板创建数据流

        可能您在导入过程中存在更多子步骤,这取决于您的模板和数据流属性。所有步骤都有一个 rest-api 服务调用,您可以在上面的第一个链接中找到。

        【讨论】:

          【解决方案4】:

          您可以使用提供 CLI 的 Nifi-Toolkit 与 NIFI 实例和 NIFI Registry 实例进行交互。

          可以编写一个 Powershell 脚本来自动化整个部署过程。

          您需要将注册客户端注册到您的 Nifi 实例。在您的注册表实例中为每个环境创建适当的存储桶并将此实例连接到您的 Nifi 流后,您可以使用 Nifi 工具包,该工具包提供从一个环境导出流并通过注册表存储桶将其导入其他环境的命令。

          例如从 nifi-toolkit 代码库中的 Cli.sh 或 cli.bat 运行以下命令。

          registry export-flow-version -f $fromFlowidentifier -fv $flowversion -o temp-flow.json -ot json -u $registrylink ;

          这里的 fromflowidentifier 是在您的注册表存储桶中找到的流标识符。 temp.json 是将流导出到的文件。导出后,您可以使用以下命令导入流程。

          registry import-flow-version -f $toflowidentifier -i temp-flow.json -u $registrylink ;

          这里假设您已将 nifi 实例与 registryclient 中的存储桶链接。

          这是我用于导入 nifi 流的示例自动部署 powershell 脚本:它不仅会部署流,还会设置流变量。如果由于某种原因部署失败,它也会发送一封电子邮件。这假设您正在使用 Nifi-registry 并已安装 Nifi-toolkit。请仔细阅读自述文件,脚本也被注释以正确理解。

          这是示例 powershell 脚本:https://anp8729.github.io/Nifi_AutoDeploymentScript/

          【讨论】:

          • 请将相关命令添加到您的答案中;当您的链接更改或过期时,说答案在另一座城堡对我们没有好处。另外,SO 搜索也找不到链接的内容。
          猜你喜欢
          • 2019-10-06
          • 1970-01-01
          • 2017-06-07
          • 1970-01-01
          • 1970-01-01
          • 2013-09-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多