You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NIFI 1.12.1集群对接K8s部署的TLS加密ZooKeeper 3.7.0报NotSslRecordException错误

问题根因

你遇到的io.netty.handler.ssl.NotSslRecordException错误本质是:NIFI客户端向指定ZK端口发起TLS握手后,收到的返回报文为明文流量,不符合TLS报文格式。你的初始推测方向有误,并非NIFI使用HTTP通信,通常由两类问题导致:

  • 端口配置不匹配:你填写的3181端口实际是ZK的明文客户端端口,并非启用TLS的加密端口
  • NIFI 1.12.1版本固有缺陷:该版本依赖的Curator ZK客户端框架无法直接读取nifi.properties中配置的ZK TLS证书参数,需单独配置ZK客户端专属配置文件才能正常启用TLS通信

排查验证步骤

  1. 先验证ZK加密端口可用性
    执行以下命令确认3181确实是ZK的TLS加密端口:
openssl s_client -connect myzk:3181

如果命令正常输出ZK服务端证书链,说明端口配置正确;如果握手失败或无证书返回,说明你误填了ZK的明文端口,需替换为ZK配置中secureClientPort指定的端口。

解决方案

步骤1:新增ZooKeeper客户端专属配置

在NIFI所有节点的conf目录下新建zookeeper-client.properties文件,写入以下内容:

zookeeper.client.secure=true
ssl.client.auth=need
ssl.keyStore.location=/opt/nifi/nifi-current/config-data/certs/zk/keystore.jks
ssl.keyStore.password=123456
ssl.keyStore.type=JKS
ssl.trustStore.location=/opt/nifi/nifi-current/config-data/certs/zk/truststore.jks
ssl.trustStore.password=123456
ssl.trustStore.type=JKS

步骤2:调整nifi.properties配置

  • 确认nifi.zookeeper.connect.string填写的所有ZK节点端口,和ZK侧secureClientPort配置完全一致
  • 将nifi.zookeeper.connect.timeout、nifi.zookeeper.session.timeout调整为10 secs,避免TLS握手超时
nifi.zookeeper.connect.timeout=10 secs
nifi.zookeeper.session.timeout=10 secs

步骤3:重启NIFI集群所有节点,配置即可生效

内容的提问来源于stack exchange,提问作者venoty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 19:54:03