如何解决受保护的 NiFi 不会与 NiFi 注册表通信
我在 Docker 中安装了独立安全的 NiFi 1.12.1,一切正常。我成功地使用了站点到站点远程处理器、站点到站点的 Nifi 公告转发、调用 NiFi API 进行自我监控等。我通过证书登录。到目前为止一切正常。
当我尝试使用 NiFi Registry 时出现问题。我可以访问两个实例:安全和不安全。
无论我指定什么确切格式(FQDN,只是一个名称,带 /nifi-registry 或不带),当我尝试访问(例如通过导入进程组)任一 NiFi 注册表时来自 NiFi,它以 o.a.n.w.a.config.NiFiCoreExceptionMapper org.apache.nifi.web.NiFiCoreException: Unable to obtain listing of buckets: java.net.ConnectException: Connection refused (Connection refused). Returning Conflict response.
失败。在日志中只是带有 enormous stack-trace 的这条消息,仅此而已。
我检查了所有证书,它们看起来没问题(证书路径,证书用于 clientAuth 和 serverAuth)。我什至用它们自己登录 NiFi ...... 最让我惊讶的是,它适用于 Site-To-Site 协议、API 调用等,但不适用于 NiFi Registry。
请问您不知道可能有什么问题吗?或者有什么想法要检查什么?
解决方法
TL;博士:
使用 IP 地址或编辑 /etc/hosts
。问题在于将主机名转换为 IP 地址。
当我尝试通过 InvokeHTTP 直接从 NiFi 访问 NiFi Registry 的 API 时,我注意到一件重要的事情 - 不同容器中的任何内容都没有响应我(failed to connect
到目标):
#Safe NiFi - the one I am troubleshooting
https://<my FQDN>:8443/nifi-api/flow/registries
#Safe NiFi Registry (another container) - the one I am trying connect to
https://<my FQDN>:18443/nifi-registry-api/buckets
#Unsafe NiFi (another container) - just for test
http://<my FQDN>:28080/nifi-api/flow/registries
#Unsafe NiFi Registry (another container) - just for test
http://<my FQDN>:38080/nifi-registry-api/buckets
然后我突然明白了:为了解决站点到站点连接的问题(容器名称与为托管机器颁发的 HTTPS 证书的差异),我给 容器 赋予了与托管相同的名称Docker 机器。为了验证我使用了 IP 地址而不是 FQDN,并且它有效。同时检查 /etc/hosts
证实了这一点 - FQDN 指向容器的 IP 地址而不是 Docker 主机。
因此,一个给定的 FQDN 在容器中解析为本地主机和其他任何地方的 Docker 主机。并且由于在 NiFi 注册表端口上的本地主机上没有任何监听 ...
因此,作为解决方案,要么修改 /etc/hosts 以删除违规行,要么使用 IP 地址强制遍历 Docker 主机。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。