1.环境准备

准备三台4c8g的centos7服务器,分别安装jdk8,zookeeper-3.5.7(zookeeper-3.4.7版本不行,官网要求不低于3.5.5),如果不用root安装,就直接切换到对应用户(例:afp)。

  • node01
  • node02
  • node03

2.下载nifi安装包和nifi-toolkit-1.19.1-bin.zip安装包(本教程已验证过1.19.1和1.27.0版本)

下载地址:https://archive.apache.org/dist/nifi/1.19.1/

3.把下载好的安装包分别上传到三台服务器

上传到/opt/app/middles目录下,nifi-toolkit-1.19.1-bin.zip安装包只放到node01节点即可

#在三台服务器上分别执行
unzip nifi-1.19.1-bin.zip

#在node01上解压tookit
unzip nifi-toolkit-1.19.1-bin.zip

4.禁用selinux

#在三台服务器上都执行
vim /etc/selinux/config

######把下面的值改成disabled
SELINUX=disabled

#重启三台服务器
reboot

5.使用nifi-toolkit生成证书

登录node01节点,执行的命令参数含义具体参考官网文档:https://nifi.apache.org/docs.html

NIFI系列---【Linux离线安装nifi集群+内嵌zookeeper】_服务器

cd /opt/app/middles/nifi-toolkit-1.19.1
#这里注意用hostname,不要用ip
bin/tls-toolkit.sh standalone -C 'CN=username,OU=NIFI' -n 'node01,node02,node03' -K 123456789012 -S 123456789012 -P 123456789012 -o 'output'

参数解析:

  • standalone: 表示在一个节点生成证书,可以生成多个节点的,这里在node01生成这三个节点的证书。
  • -n:设置节点地址,多个用逗号隔开。
  • -K (--keyPassword): 设置需要使用的密码。
  • -S (--keyStorePassword): 设置需要使用的密钥库密码。
  • -P (--trustStorePassword): 设置要使用的密钥库密码。
  • -o: 设置一个输出目录

NIFI系列---【Linux离线安装nifi集群+内嵌zookeeper】_服务器_02

cd output

NIFI系列---【Linux离线安装nifi集群+内嵌zookeeper】_zookeeper_03

cp CN* node01
cp CN* node02
cp CN* node03

cp nifi-* node01
cp nifi-* node02
cp nifi-* node03

6.把生成好的证书分发到三个节点的nifi-1.19.1/conf目录下

scp -r node01/* node01:/opt/app/middles/nifi-1.19.1/conf
scp -r node02/* node02:/opt/app/middles/nifi-1.19.1/conf
scp -r node03/* node03:/opt/app/middles/nifi-1.19.1/conf

7.修改三台nifi-1.19.1/conf下的连接内嵌zookeeper的配置

vi /opt/app/middles/nifi-1.19.1/conf/state-management.xml

#########把下面的zookeeper地址写上,修改这个:<property name="Connect String">node01:2181,node02:2181,node03:2181</property>
<cluster-provider>
    <id>zk-provider</id>
    <class>org.apache.nifi.controller.state.providers.zookeeper.ZooKeeperStateProvider</class>
    <property name="Connect String">node01:2181,node02:2181,node03:2181</property>
    <property name="Root Node">/nifi</property>
    <property name="Session Timeout">10 seconds</property>
    <property name="Access Control">Open</property>
</cluster-provider>

vi /opt/app/middles/nifi-1.27.0/conf/zookeeper.properties
#注意把最后一行的"server.1="注释掉
server.1=node01:2888:3888;2181
server.2=node02:2888:3888;2181
server.3=node03:2888:3888;2181

8.修改nifi.properties

vi /opt/app/middles/nifi-1.19.1/conf/nifi.properties

把下面nifi.properties的值在三个节点分别修改一下

NIFI系列---【Linux离线安装nifi集群+内嵌zookeeper】_ide_04

#开启内嵌zookeeper
nifi.state.management.embedded.zookeeper.start=true
nifi.state.management.embedded.zookeeper.properties=./conf/zookeeper.properties
nifi.zookeeper.connect.string=node01:2181,node02:2181,node03:2181

#开启security properties配置
nifi.sensitive.props.key=woshimima
nifi.sensitive.props.key.protected=
nifi.sensitive.props.algorithm=NIFI_PBKDF2AES_GCM_256
nifi.sensitive.props.additional.keys=

nifi.security.autoreload.enabled=false
nifi.security.autoreload.interval=10 secs
nifi.security.keystore=./conf/keystore.jks
nifi.security.keystoreType=jks
nifi.security.keystorePasswd=123456789012
nifi.security.keyPasswd=123456789012
nifi.security.truststore=./conf/truststore.jks
nifi.security.truststoreType=jks
nifi.security.truststorePasswd=123456789012
nifi.security.user.authorizer=single-user-authorizer
nifi.security.allow.anonymous.authentication=false
nifi.security.user.login.identity.provider=single-user-provider
nifi.secutiry.user.jws.key.rotation.period=PT1H
nifi.security.ocsp.responder.url
nifi.security.ocsp.responder.certificate=

9.如果不用root用户登录,记得修改bootstrap.conf

run.as=afp

10.在三个节点分别设置web初始登录密码

因为nifi是无中心服务,所以三个节点都要设置,如果设置完启动了之后,想修改admin的密码,可以再执行一下下面的命令,重启一下即可。

#给bin目录下的sh脚本赋予执行权限
cd bin
chmod 775 *
#三个节点都执行:统一密码
bin/nifi.sh set-sensitive-properties-key 123456789012
#三个节点都执行:创建用户名密码
bin/nifi.sh set-single-user-credentials admin 123456789012

11.启动nifi

#三个节点都执行
bin/nifi.sh start

12.浏览器登录web页面

web访问地址:https://node01:9443/nifi,初始化比较慢,请耐心等候

NIFI系列---【Linux离线安装nifi集群+内嵌zookeeper】_zookeeper_05