nifi1.28.1集群部署详细记录
NiFi 1.28.1 必须使用JDK 1.8或更高版本,低于此版本将无法运行。
验证命令:java -version
配置一定用主机名!!!
1.解压安装包
unzip nifi-1.28.1-bin.zip
2.配置环境变量
cat <<‘EOF’ > /etc/profile.d/nifi.sh
export NIFI_HOME=/data12/nifi/nifi-1.28.1
export PATH= P A T H : PATH: PATH:{NIFI_HOME}/bin
EOF
sleep 1
source /etc/profile.d/nifi.sh
cat <<‘EOF’ > /etc/profile.d/jdk8.sh
export JAVA_HOME=/usr/java/jdk1.8.0_202-amd64/jre
export PATH= P A T H : PATH: PATH:{JAVA_HOME}/bin
EOF
sleep 1
source /etc/profile.d/jdk8.sh
cd /data12/nifi/nifi-1.28.1/
3.配置内置 ZooKeeper
修改vi conf/zookeeper.properties
initLimit=10
autopurge.purgeInterval=24
syncLimit=5
tickTime=2000
dataDir=./state/zookeeper
autopurge.snapRetainCount=30
server.1=wf-gd2-bpit-dp-dn-17-92:2888:3888;2181
server.2=wf-gd2-bpit-dp-dn-17-93:2888:3888;2181
server.3=wf-gd2-bpit-dp-dn-17-94:2888:3888;2181
创建 myid 文件(每个节点唯一):
cd $NIFI_HOME
mkdir -p ./state/zookeeper
echo 1 > ./state/zookeeper/myid # 节点1 写1,节点2 写2,节点3 写3,依此类推
echo 2 > ./state/zookeeper/myid
echo 3 > ./state/zookeeper/myid
4.集群核心配置
1、修改vi conf/state-management.xml 配置 ZooKeeper 连接串(所有节点相同):
zk-provider
org.apache.nifi.controller.state.providers.zookeeper.ZooKeeperStateProvider
wf-gd2-bpit-dp-dn-17-92:2181,wf-gd2-bpit-dp-dn-17-93:2181,wf-gd2-bpit-dp-dn-17-94:2181
/nifi
10 seconds
Open
2、配置vi conf/nifi.properties
设置为当前节点的主机名
nifi.cluster.node.address=wf-gd2-bpit-dp-dn-17-92
#nifi.cluster.node.address=wf-gd2-bpit-dp-dn-17-93
#nifi.cluster.node.address=wf-gd2-bpit-dp-dn-17-94
是否是集群中的节点,默认值为false。
nifi.cluster.is.node=true
此端口设置为高于1024的开放端口(任何较低的端口都需要root)。
nifi.cluster.node.protocol.port=8888
用于与集群中其他节点通信的线程数。此属性默认为10。
nifi.cluster.node.protocol.threads=10
#与集群中其他节点进行通信的最大线程数。此属性默认为50。
nifi.cluster.node.protocol.max.threads=50
指定在选择流作为“正确”流之前要等待的时间
nifi.cluster.flow.election.max.wait.time=5 mins
指定集群中导致流的早期选择所需的节点数
nifi.cluster.flow.election.max.candidates=1
cluster 负载均衡配置
nifi.cluster.load.balance.host=wf-gd2-bpit-dp-dn-17-92
#nifi.cluster.load.balance.host=wf-gd2-bpit-dp-dn-17-93
#nifi.cluster.load.balance.host=wf-gd2-bpit-dp-dn-17-94
nifi.cluster.load.balance.port=6342
nifi.cluster.load.balance.connections.per.node=4
nifi.cluster.load.balance.max.thread.count=8
nifi.cluster.load.balance.comms.timeout=30 sec
ZooKeeper 列表
nifi.state.management.embedded.zookeeper.start=true
nifi.zookeeper.connect.string=wf-gd2-bpit-dp-dn-17-92:2181,wf-gd2-bpit-dp-dn-17-93:2181,wf-gd2-bpit-dp-dn-17-94:2181
nifi.zookeeper.connect.timeout=3 secs
nifi.zookeeper.session.timeout=3 secs
ZooKeeper 存储数据根目录。默认值为 /nifi
nifi.zookeeper.root.node=/nifi
nifi web ui的访问域名
nifi.web.https.host=wf-gd2-bpit-dp-dn-17-92
#nifi.web.https.host=wf-gd2-bpit-dp-dn-17-93
#nifi.web.https.host=wf-gd2-bpit-dp-dn-17-94
nifi的访问端口号
nifi.web.https.port=8443
nifi.cluster.protocol.is.secure=true
nifi.remote.input.secure=true
敏感信息加密密钥
nifi.sensitive.props.key=123456789012K
nifi节点间通信端口
nifi.cluster.node.protocol.port=11443
5.TLS证书生成与配置
1.用Nifi-Toolkit生成证书和nifi.properties(在wf-gd2-bpit-dp-dn-17-92机子上执行)
sh /data12/nifi/nifi-toolkit-1.28.1/bin/tls-toolkit.sh standalone -O -n ‘wf-gd2-bpit-dp-dn-17-92,wf-gd2-bpit-dp-dn-17-93,wf-gd2-bpit-dp-dn-17-94’ -C ‘CN=wf-gd2-bpit-dp-dn-17-92,OU=NIFI’ -C ‘CN=wf-gd2-bpit-dp-dn-17-93,OU=NIFI’ -C ‘CN=wf-gd2-bpit-dp-dn-17-94,OU=NIFI’ -K 123456789012K -S 123456789012K -P 123456789012K -o ‘/data12/nifi/nifi-toolkit-1.28.1/tls’
2.请将从wf-gd2-bpit-dp-dn-17-92节点生成的证书文件分别复制到wf-gd2-bpit-dp-dn-17-92、wf-gd2-bpit-dp-dn-17-93以及wf-gd2-bpit-dp-dn-17-94各节点上NiFi安装目录下的配置文件夹中。
scp tls/wf-gd2-bpit-dp-dn-17-92/*.jks root@wf-gd2-bpit-dp-dn-17-92:/data12/nifi/nifi-1.28.1/conf/
scp tls/wf-gd2-bpit-dp-dn-17-93/*.jks root@wf-gd2-bpit-dp-dn-17-93:/data12/nifi/nifi-1.28.1/conf/
scp tls/wf-gd2-bpit-dp-dn-17-94/*.jks root@wf-gd2-bpit-dp-dn-17-94:/data12/nifi/nifi-1.28.1/conf/
3.将生成出来的nifi.properties TLS相关部分替换到nifi-1.28.1/conf下nifi.properties相关配置
vim /data12/nifi/nifi-1.28.1/conf/nifi.properties
#拷贝如下配置
nifi.security.autoreload.enabled=false
nifi.security.autoreload.interval=10 secs
nifi.security.keystore=./conf/keystore.jks
nifi.security.keystoreType=jks
nifi.security.keystorePasswd=123456789012K
nifi.security.keyPasswd=123456789012K
nifi.security.truststore=./conf/truststore.jks
nifi.security.truststoreType=jks
nifi.security.truststorePasswd=123456789012K
nifi.security.user.authorizer=single-user-authorizer
nifi.security.allow.anonymous.authentication=false
nifi.security.user.login.identity.provider=single-user-provider
nifi.security.user.jws.key.rotation.period=PT1H
nifi.security.ocsp.responder.url=
nifi.security.ocsp.responder.certificate=
#替换nifi-1.28.1/conf下nifi.properties相关配置
vim /data12/nifi/nifi-1.28.1/conf/nifi.properties
6.默认配置的Single User 模式进行登录认证。conf/login-identity-providers.xml
在NiFi安装目录中,请执行以下命令以创建当前节点的用户名和密码。其中,username将作为登录NiFi Web用户界面时使用的身份标识,而password则为其对应的认证密钥。
/data12/nifi/nifi-1.28.1/bin/nifi.sh set-single-user-credentials xyxy xy1234567890
7.启动集群
启动顺序
先启动所有节点的 ZooKeeper 服务(嵌入式):
bin/nifi.sh start
关键提示:所有节点需在5分钟内启动完毕,否则选举可能失败!
集群管理命令:
bin/nifi.sh status # 查看状态
bin/nifi.sh restart # 重启(需滚动执行)
bin/nifi.sh stop
8.验证集群状态
访问任意节点的 Web UI:https://wf-gd2-bpit-dp-dn-17-92:8443/nifi
查看集群状态:顶部状态栏显示 Cluster: 3 /3 Nodes 表示所有节点在线。
日志排查:检查 logs/nifi-app.log 无 ERROR 级错误。