首页 > 解决方案 > 我可以使用 localhost 而不是 Nifi 集群中的实际节点 IP 地址访问 Nifi Rest-API 吗?

问题描述

例如; 我在 nifi 集群中有 3 个 nifi 节点。这些节点的示例主机名;

  1. 192.168.12.50:8080(主)
  2. 192.168.54.60:8080
  3. 192.168.95.70:8080

我知道我可以从所有 nifi 节点访问 nifi-rest api。我有 GetHTTP 处理器,用于从 rest-api 获取集群摘要,并且该处理器仅在 pimary 节点上运行。我确实将此处理器的“URL”属性设置为192.168.12.50:8080/nifi-api/controller/cluster

但是,如果主节点宕机,则会选举新的主节点。因此,我将无法从新的主节点访问 192.168.12.50:8080 地址。因为这个节点宕机了。因此,我将无法从 rest-api 获得集群摘要结果。

在这种情况下,我可以为 nifi 集群中的每个节点使用“localhost:8080/nifi-api/controller/cluster”而不是“192.168.12.50:8080/nifi-api/controller/cluster”吗?

标签: apache-nifi

解决方案


这取决于几件事......如果您安全运行,那么您拥有为特定于主机名的每个节点生成的证书,因此 Web 请求中的主机需要与证书中的主机匹配,所以您不能在这种情况下使用 localhost 。

它还取决于 NiFi 的 Web 服务器的配置方式。如果 nifi.web.http.host 或 nifi.web.https.host 指定了特定的主机名,则 Web 服务器仅绑定到该主机名,并且可能不接受具有不同主机名的连接。在默认的不安全设置中,如果您将 nifi.web.http.host 留空,则它会绑定到所有接口。

您也许可以使用表达式语言函数来获取当前节点的主机名。因此,您可以使 url 类似于“http://${hostname()}/nifi-api/controller/cluster”。


推荐阅读