【问题标题】:Can I access to Nifi Rest-API using localhost instead of actual node-ip address in Nifi cluster?我可以使用 localhost 而不是 Nifi 集群中的实际节点 IP 地址访问 Nifi Rest-API 吗?
【发布时间】:2019-01-25 11:15:57
【问题描述】:

例如;我在 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 获取集群摘要结果。

在这种情况下,我可以使用 "localhost:8080/nifi-api/controller/cluster" 代替 "192.168.12.50: 8080/nifi-api/controller/cluster" 用于 nifi 集群中的每个节点?

【问题讨论】:

    标签: apache-nifi


    【解决方案1】:

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

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

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

    【讨论】:

    • 首先感谢您的回复!用于安全的 nifi 集群;流程可以这样吗? 1- ExecuteProcess:使用 hostname() 获取当前节点的令牌 2- ExecuteProcess:从 1 接收令牌,然后使用令牌从 rest-api 获取数据对吗?
    • 是的应该是可能的,如果您只使用服务器中的 keystore.jsk,您也可以避免需要令牌,因此您的 http 处理器将使用配置有相同 keystore.jks 的 SSLContextService和使用 nifi.properties 的 truststore.jks
    • 我会为你的第二个建议做更多的研究。现在一切都清楚了!非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-25
    • 2011-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多