一、基本介绍
什么是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
文件夹。
其中.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
文件夹。其中蓝色的框起来的是证书,只有持有相应的证书后续才能访问,一会需要手动导入浏览器。
进入该文件下的localhost
文件夹,里面会生成三个文件:nifi.properties,keystore.jks,truststore.jks
。
将上面生成的三个文件复制到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
默认为9443
,http
为8080
;第二行命令中的17820
是根据第一句命令查询到进程ID,根据你查询到的结果替换即可。