NIFI服务部署教程


一、基本介绍

什么是NiFi?

简单的说, NiFi 就是为了解决不同系统间数据自动流通问题而建立的。虽然 dataflow 这个术语在各种场景都有被使用,但我们在这里使用它来表示不同系统间的自动化的可管理的信息流。自企业拥有多个系统开始,一些系统会有数据生成,一些系统要消费数据,而不同系统之间数据的流通问题就出现了。这些问题出现的相应的解决方案已经被广泛的研究和讨论,其中企业集成 eip 就是一个全面且易于使用的方案。

下面介绍在 Linux 与 Windows 平台部署 nifi 服务的具体步骤。

二、Linux部署

1. 下载

https://archive.apache.org/dist/nifi/

这里我选择版本是1.14.0,因为是部署到公网服务器,非常不推荐默认的Http访问方式,下面的教程会通过Toolkit设置访问权限,只有持有证书的用户才可以正常访问 NIFI 服务。

2. 配置JDk

yum install -y java-1.8.0-openjdk-devel.x86_64      # 安装JDK

vim /etc/profile            # 修改配置文件

i进行编辑,定位到最后,添加如下命令:

export JAVA_HOME=/usr/lib/jvm/java-1.8.0
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

完成后先按esc再输入:wq保存退出,输入下行命令重载配置。

source  /etc/profile        # 生效配置

3. 生成证书

进入官网下载 toolkit 文件,注意要和你的 NIFI 版本一致,下载地址

上传文件到服务器,解压toolkit文件,打开toolkit-1.14.0/bin目录,解压文件并生成证书。

unzip toolkit-1.14.0.zip    # 解压文件

cd toolkit-1.14.0/bin

./tls-toolkit.sh standalone -n "localhost" -C "CN=Admin, OU=NIFI" -o target

运行结束会在bin文件下生成target文件夹。
localhost文件

其中.p12文件为授权证书,.password为证书密码,只有持有相应的证书后续才能访问,一会需要手动导入浏览器。打开localhost文件夹,里面会生成三个文件:nifi.properties,keystore.jks,truststore.jks

将三个文件复制到1.14.0/conf目录下,把命令中/usr/nifi/1.14.0替换成你的NIFI解压路径。

cd target/localhost

cp nifi.properties /usr/nifi/1.14.0/conf
cp keystore.jks /usr/nifi/1.14.0/conf
cp truststore.jks /usr/nifi/1.14.0/conf

4. 端口修改

修改 NIFI 服务相关配置,配置文件路径:1.14.0/conf/nifi.properties

vim 1.14.0/conf/nifi.properties

找到如下代码,按i进行编辑,修改以下配置项,完成后先按esc再输入:wq保存退出。

nifi.web.https.host=0.0.0.0                 # 设置为: 0.0.0.0
nifi.web.https.port=xxx                     # 访问端口,自定义设置
nifi.web.https.network.interface.default=
nifi.web.jetty.working.directory=./work/jetty
nifi.web.jetty.threads=200
nifi.web.max.header.size=16 KB
nifi.web.proxy.context.path=
nifi.web.proxy.host=IP:Port                 # 代理地址,设置为你的服务器IP和端口
nifi.web.max.content.size=
nifi.web.max.requests.per.second=30000
nifi.web.request.timeout=60 secs
nifi.web.request.ip.whitelist=IP:Port       # 访问白名单,设置为你的服务器IP和端口
nifi.web.should.send.server.version=true   

5. 用户配置

打开1.14.0/conf目录的authorizers.xml文件。

cd  1.14.0/conf

vim authorizers.xml

i进入编辑模式,找到如下代码,添加CN=Admin, OU=NIFI,一共需要改两处,完成后esc + :wq保存退出。

<userGroupProvider>
  <identifier>file-user-group-provider</identifier>
  <class>org.apache.nifi.authorization.FileUserGroupProvider</class>
  <property name="Users File">./conf/users.xml</property>
  <property name="Legacy Authorized Users File"></property>

  <!-- 只改这一行 -->
  <property name="Initial User Identity 1">CN=Admin, OU=NIFI</property>
</userGroupProvider>

<accessPolicyProvider>
  <identifier>file-access-policy-provider</identifier>
  <class>org.apache.nifi.authorization.FileAccessPolicyProvider</class>
  <property name="User Group Provider">file-user-group-provider</property>
  <property name="Authorizations File">./conf/authorizations.xml</property>
  <property name="Initial Admin Identity"></property>
  <property name="Legacy Authorized Users File"></property>

  <!-- 只改这一行 -->
  <property name="Node Identity 1">CN=Admin, OU=NIFI</property>
  <property name="Node Group"></property>
</accessPolicyProvider>

6. 启动服务

启动服务之后浏览器访问地址:https://IPAdress:Port/nifi 即可。

cd /usr/local/nifi/1.14.0/bin       # 进入nifi目录

./nifi.sh start                     # 启动服务
./nifi.sh stop                      # 停止服务

三、Windows部署

1. 下载

和上面一样版本选的是1.14.0,文件名:1.14.0-bin.zip,同时下载Toolkit工具包:toolkit-1.14.0-bin.zip

https://archive.apache.org/dist/nifi/

2. 生成证书

解压toolkit文件,打开toolkit-1.14.0/bin目录,在此文件夹下以管理员身份运行命令窗口,输入下行命令。

.\tls-toolkit.bat standalone -n localhost -C CN=Admin,OU=NIFI -o target

运行结束会在bin文件下生成target文件夹。其中蓝色的框起来的是证书,只有持有相应的证书后续才能访问,一会需要手动导入浏览器。
Target文件

进入该文件下的localhost文件夹,里面会生成三个文件:nifi.properties,keystore.jks,truststore.jks
localhost文件

将上面生成的三个文件复制到1.14.0/conf目录下,会提示你替换nifi.properties,选择确认即可。

3. 端口修改

打开1.14.0/conf目录的nifi.properties文件,找到如下代码,修改对应端口,当然你可以不该使用默认端口。

nifi.web.war.directory=./lib
nifi.web.http.host=
nifi.web.http.port=
nifi.web.http.network.interface.default=
nifi.web.https.host=localhost
nifi.web.https.port=9600                    # 只要修改这一行

4. 用户配置

打开1.14.0/conf目录的authorizers.xml文件,找到如下代码,添加CN=Admin, OU=NIFI,注意一共需要改两处。

<userGroupProvider>
  <identifier>file-user-group-provider</identifier>
  <class>org.apache.nifi.authorization.FileUserGroupProvider</class>
  <property name="Users File">./conf/users.xml</property>
  <property name="Legacy Authorized Users File"></property>

  <!-- 只改这一行 -->
  <property name="Initial User Identity 1">CN=Admin, OU=NIFI</property>
</userGroupProvider>

<accessPolicyProvider>
  <identifier>file-access-policy-provider</identifier>
  <class>org.apache.nifi.authorization.FileAccessPolicyProvider</class>
  <property name="User Group Provider">file-user-group-provider</property>
  <property name="Authorizations File">./conf/authorizations.xml</property>
  <property name="Initial Admin Identity"></property>
  <property name="Legacy Authorized Users File"></property>

  <!-- 只改这一行 -->
  <property name="Node Identity 1">CN=Admin, OU=NIFI</property>
  <property name="Node Group"></property>
</accessPolicyProvider>

5. 证书导入

打开 Google 浏览器设置,按如下图所示操作。

点击导入,选择之前生成的CN=Admin_OU=NIFI.p12文件,下一步即可,证书的密码在CN=Admin_OU=NIFI.password中。
导入

6. 启动服务

  • 前台启动

    打开1.14.0/bin目录,双击run-nifi.bat即可启动,第一次启动会比较慢需要等几分钟。
    浏览器访问地址:https://localhost:9600/nifi,如果你没有改端口,默认的则为9443。

  • 后台运行

    设置后台运行就不用一直开着命令行窗口,通过注册服务进行启动即可,更加方便。

    具体教程参考之前一篇文章:将bat注册为服务

    经过测试虽然可以通过设置服务进行后台运行,但当手动停止服务时nifi进程并不会停止,所以必须手动关闭相应进程,打开命令行窗口,输入如下命令手动关闭nifi服务。

    netstat -ano | findstr 9600      # 查看端口占用进程
    
    taskkill -PID 17820 -F           # 关闭对应进程
    

    第一句命令中的9600替换成你之前设置的nifi端口,如果你没有修改默认端口,那么Https默认为9443http8080;第二行命令中的17820是根据第一句命令查询到进程ID,根据你查询到的结果替换即可。


文章作者: 烽火戏诸诸诸侯
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 烽火戏诸诸诸侯 !
  目录