当前位置: 首页 > news >正文

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 级错误。

http://www.lqws.cn/news/576073.html

相关文章:

  • 【51单片机用数码管显示流水灯的种类是按钮控制数码管加一和流水灯】2022-6-14
  • JavaEE初阶第五期:解锁多线程,从 “单车道” 到 “高速公路” 的编程升级(三)
  • vue-32(部署一个 Nuxt.js 应用程序)
  • 多线程环境下的线程安全资源与缓存池设计:ThreadSafeObject 与 CachePool 实例解析
  • 类图+案例+代码详解:软件设计模式----简单工厂方法、工厂方法、抽象工厂方法
  • 腾讯云实名资质 “待补充后提交” 解决方法
  • 蓝桥杯51单片机设计
  • 青少年编程与数学 02-022 专业应用软件简介 04 矢量图形设计软件:CorelDRAW
  • 华为云Flexus+DeepSeek征文 | Word办公软件接入华为云ModelArts Studio大模型,实现AI智能办公
  • 【Unity】MiniGame编辑器小游戏(七)贪吃蛇【Snake】
  • Rust C++ OpenCV kafka-rs实践
  • 【Wireshark】高级过滤技巧精讲
  • 【c/c++3】类和对象,vector容器,类继承和多态,systemd,stdboost
  • 【c/c++1】数据类型/指针/结构体,static/extern/makefile/文件
  • 利用deepseek学术搜索
  • HTTP中常见的Content-Type
  • [Android]ANR的线程
  • Redis Cluster Gossip 协议
  • C++高效结合主流工具:现代系统底层动力
  • 机电一体化论文写作实战指南:从创新设计到工程验证的完整路径
  • 面试复盘6.0
  • mybatis-plus从入门到入土(一):快速开始
  • Windows安装虚拟机、ROS2
  • 实战四:基于PyTorch实现猫狗分类的web应用【2/3】
  • springboot校园新闻网站
  • 如果将Word里每页的行数设置成50行
  • STM32——HAL库总结
  • ECMAScript 2019(ES2019):数组与对象操作的精细化升级
  • PYTHON从入门到实践10-文件操作与异常
  • MySQL-复合查询