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
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: 设置一个输出目录
cd output
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的值在三个节点分别修改一下
#开启内嵌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,初始化比较慢,请耐心等候