惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

月光博客
月光博客
D
Docker
腾讯CDC
J
Java Code Geeks
大猫的无限游戏
大猫的无限游戏
The Cloudflare Blog
Martin Fowler
Martin Fowler
MongoDB | Blog
MongoDB | Blog
博客园 - Franky
博客园 - 三生石上(FineUI控件)
Recent Announcements
Recent Announcements
F
Fortinet All Blogs
IT之家
IT之家
WordPress大学
WordPress大学
M
MIT News - Artificial intelligence
爱范儿
爱范儿
Microsoft Azure Blog
Microsoft Azure Blog
Vercel News
Vercel News
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
小众软件
小众软件
N
Netflix TechBlog - Medium
T
Tailwind CSS Blog
Engineering at Meta
Engineering at Meta
博客园 - 【当耐特】

热爱生活与梦想

迁移LeanCloud的Waline评论数据到TiDB/Neon 25年江浙地区暑假自驾游之感慨 使用阿里云灵码继续完成构建 SSL 证书管理器 亲手给儿子做的棒棒糖摩天轮六一礼物 使用腾讯云 CodeBuddy 构建 SSL 证书管理器 修复代码块默认高度相关缺陷 HugoNexT4.7.2 新功能和升级提示 改善代码块折叠和选中功能 支持Github风格的警告样式 新增音乐短代码功能支持 给文章添加摘要和过期提示功能 回顾24年的过去总结 修复Mathjax行内显示公式的问题 给Hugo文章增加阅读更多跳转的锚点定位功能 Win10隐匿的VPN设置和L2TP连接常见错误 Go语言中“糟糕”的日期时间格式化设计 DaoCloud道客提供的免费Docker镜像代理服务 感谢万能淘宝让自己吃到喜欢的美食 WSL运行时遇到未知异常错误无法使用 隐藏的换行符导致Base64加密解密失败 MySQL自带客户端直接免密登录操作 Linux系统中删除目录软链接的注意项 Java程序调用外网API时CA问题 如何不关机重启WSL2恢复虚拟服务 在Windows上安装Podman容器平台做虚拟化 记一次无法弹出移动硬盘的记录 为友情链接添加自动检测脚本 重新激活Github的2FA认证 Linux中使用tar压缩命令排除文件 继续小米手环的健康生活之旅
Apache Nifi在Windows环境下搭建伪群集及证书登录
凡梦星尘 · 2017-10-27 · via 热爱生活与梦想

前些时间做了关于Apache Nifi分布式集群的搭建分享,但很多时候要搭建分布式集群机器资源是个问题,而现在的单机的配置还是相当不错的,故现在就做个关于Windows上搭建个伪分布式集群的分享,同时通过另外一种方式实现Apache Nifi的授权认证。

系统环境及软件版本

  • Windows8.1

  • JDK1.8.0_131

  • Nifi-1.4.0

Nifi安装目录WEB端口
xxx\nifi-ncm9443
xxx\nifi-cluster019444
xxx\nifi-cluster029445

(其它版本可参考此篇文章) 另在测试中发个问题,使用Apache Nifi内嵌的Zookeeper搭建伪集群里启动总是提示端口占用的问题,故放弃只采用了单结点启动。

生成本地Nifi服务证书

解压nifi-toolkit-1.4.0-bin.tar.gz文件后,通过CMD进入bin目录,执行以下的命令:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
D:\DevelopTools\nifi-toolkit-1.4.0\bin>tls-toolkit.bat standalone -n "localhost(
3)" -C "CN=Admin, OU=ApacheNIFI" -o "..\target"
2017/10/26 18:21:32 INFO [main] org.apache.nifi.toolkit.tls.standalone.TlsToolki
tStandaloneCommandLine: No nifiPropertiesFile specified, using embedded one.
2017/10/26 18:21:32 INFO [main] org.apache.nifi.toolkit.tls.standalone.TlsToolki
tStandalone: Running standalone certificate generation with output directory ..\
target
******************************************************************************
2017/10/26 18:21:34 INFO [main] org.apache.nifi.toolkit.tls.standalone.TlsToolki
tStandalone: Successfully generated client certificate ..\target\CN=Admin_OU=Apa
cheNIFI.p12
2017/10/26 18:21:34 INFO [main] org.apache.nifi.toolkit.tls.standalone.TlsToolki
tStandalone: tls-toolkit standalone completed successfully

生成后的目录结构如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
Folder PATH listing for volume senhui.li
Volume serial number is 000000F0 FA46:A0EB
D:.
CN=Admin_OU=ApacheNIFI.p12
CN=Admin_OU=ApacheNIFI.password
│  nifi-cert.pem
│  nifi-key.key
├─localhost
│      keystore.jks
│      nifi.properties
│      truststore.jks
├─localhost_2
│      keystore.jks
│      nifi.properties
│      truststore.jks
└─localhost_3
        keystore.jks
        nifi.properties
        truststore.jks

特意注意: -C “CN=Admin, OU=ApacheNIFI” 中间的空格必须保留

拷贝Nifi服务证书

  • localhost目录下的文件拷贝到nifi-ncm目录下替换所有的文件
  • localhost_2目录下的文件拷贝到nifi-cluster01目录下替换所有的文件
  • localhost_3目录下的文件拷贝到nifi-cluster02目录下替换所有的文件
  • CN=Admin_OU=ApacheNIFI.p12CN=Admin_OU=ApacheNIFI.password拷贝到桌面备用,后续登录需要使用

配置单点Zookeeper相关

创建目录及id

进入nifi-ncm的目录,创建woker目录,并把server id写到文件中,命令如下:

1
2
D:\DevelopTools\nifi-ncm>mkdir -p state\zookeeper
D:\DevelopTools\nifi-ncm>echo -n '1' > state/zookeeper/myid

更新ZK配置

进入nifi-ncm的conf目录,打开zookeeper.properties文件,内容更新参考如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
clientPort=2181
initLimit=10
autopurge.purgeInterval=24
syncLimit=5
tickTime=2000
dataDir=./state/zookeeper
autopurge.snapRetainCount=30

# 只需要配置端口服务
server.1=localhost:2181

更新Nifi配置

进入nifi-ncm的conf目录,打开nifi.properties文件,更新如下的配置属性:

1
2
3
4
5
nifi.state.management.embedded.zookeeper.start=true

# zookeeper properties, used for cluster management #
# 另外两个节点,只要编辑此字段即可
nifi.zookeeper.connect.string=localhost:2181

更新State配置

进入nifi-ncm的conf目录,打开state-management.xml文件,更新zookeeper配置,如下:

1
2
3
4
5
6
7
8
9

<cluster-provider>
    <id>zk-provider</id>
    <class>org.apache.nifi.controller.state.providers.zookeeper.ZooKeeperStateProvider</class>
    <property name="Connect String">localhost:2181</property>
    <property name="Root Node">/nifi</property>
    <property name="Session Timeout">10 seconds</property>
    <property name="Access Control">Open</property>
</cluster-provider>

然后把此文件拷贝到nifi-cluster01nifi-cluster02相同的目录下

配置Nifi Admin

添加Admin用户

进入nifi-ncm的conf目录,打开authorizers.xml文件,找到file-provider添加如下配置:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
<authorizer>
    <identifier>file-provider</identifier>
    <class>org.apache.nifi.authorization.FileAuthorizer</class>
    <property name="Authorizations File">./conf/authorizations.xml</property>
    <property name="Users File">./conf/users.xml</property>
    <property name="Initial Admin Identity">CN=Admin, OU=ApacheNifi</property>
    <property name="Legacy Authorized Users File"></property>

    <property name="Node Identity 1">CN=localhost, OU=NIFI</property>
    <property name="Node Identity 2">CN=localhost_2, OU=NIFI</property>
    <property name="Node Identity 3">CN=localhost_3, OU=NIFI</property>
</authorizer>

然后把此文件同时拷贝到别外两个节点目录。

注:Node Identity x中的OU要写成NIFI,尝试过用别的名称好像不成功,具体的原因未知,感兴趣的可以自行探究一二。

安装证书

打开谷歌浏览器,在设置中找到安全选项中找到管理证书,点击Import开始导入上面生成的证书:CN=Admin_OU=ApacheNIFI.p12,密码在后缀名为.password的文件中,如下图所示:

WIN-NIFI-CLUSTER-00

WIN-NIFI-CLUSTER-01

启动Nifi服务

进入到Nifi安装目录,然后在bin目录中找到run-nifi.bat文件并双击运行,注意启动的顺序: nifi-ncm–>nifi-cluster01/2,等待片刻后(可能会有点久,需要一个选举的过程)打开浏览器输入"https://localhost:9443/nifi",选择刚刚导入的证书,如看到下面的画面表示启动成功:

WIN-NIFI-CLUSTER-02

WIN-NIFI-CLUSTER-03

用户策略

刚登录NIFI页面时,你会发现图标都是灰色的,需要赋予相应的权限才可以开始编辑权限才可以开始编辑。点击页面左侧面板上的钥匙图标,会弹出访问策略的窗口,如下图所示:

在此会看到用户列表为空,那么就要给相应的行为添加用户,点击Create链接即可开始添加,如下图所示:

WIN-NIFI-CLUSTER-04

WIN-NIFI-CLUSTER-05

WIN-NIFI-CLUSTER-044

待所有的权限添加完成后,便可看到NIFI页面的按钮已经点亮,可以开始创建流程。

示例演示

模板上传

下载 DEMO 压缩包,解压出来有个WordCountDemo.xml文件。然后打开浏览器输入NIFI访问地址: https://localhost:9443/nifi/,点击左侧面板中的上传按钮上传模板,如下图所示:

WIN-NIFI-CLUSTER-06

创建流程

拖动NIFI页面顶部的模板按钮到画板空白处,点击ADD按钮即可,然后双击打开WordCountDemo组找到PutFile组件,修改目录地址为你机器的实际可访问路径,如下图所示:

WIN-NIFI-CLUSTER-07

WIN-NIFI-CLUSTER-08

启动流程

点击NIFI页面左下角的NiFi Flow链接返回到主面板,点击WordCountDemo组,然后点击左侧面板中的开始按钮启动流程,如下图所示:

WIN-NIFI-CLUSTER-09

如无异常那么此时你可在目录下找到名为telltale_heart_wordcount的文件,打开便可看到如下图的统计内容:

WIN-NIFI-CLUSTER-10

至此在本地搭建NIFI伪集群就完成了,有问题欢迎留言。