apache-nifi - 我可以使用 localhost 而不是 Nifi 集群中的实际节点 IP 地址访问 Nifi Rest-API 吗?
问题描述
例如; 我在 nifi 集群中有 3 个 nifi 节点。这些节点的示例主机名;
- 192.168.12.50:8080(主)
- 192.168.54.60:8080
- 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”吗?
解决方案
这取决于几件事......如果您安全运行,那么您拥有为特定于主机名的每个节点生成的证书,因此 Web 请求中的主机需要与证书中的主机匹配,所以您不能在这种情况下使用 localhost 。
它还取决于 NiFi 的 Web 服务器的配置方式。如果 nifi.web.http.host 或 nifi.web.https.host 指定了特定的主机名,则 Web 服务器仅绑定到该主机名,并且可能不接受具有不同主机名的连接。在默认的不安全设置中,如果您将 nifi.web.http.host 留空,则它会绑定到所有接口。
您也许可以使用表达式语言函数来获取当前节点的主机名。因此,您可以使 url 类似于“http://${hostname()}/nifi-api/controller/cluster”。
推荐阅读
- sql - 已找到 ID 的 SQL SELECT 查询
- visual-studio-app-center - 如何通过推送通知将用户发送到 URL
- spring-boot - 无法在 Spring Boot 应用程序中提供 JSP
- java - LongSummaryStatistics 为什么要实现 IntConsumer?
- ios - SSL 操作因代码而失败,同时向 ios 设备发送推送通知
- java - 尝试 WSO2 IoT 3.3.0 android 注册时如何修复错误“注册失败”?
- javascript - 多文档事务不使用 MongoDB Atlas
- java - Apache Hadoop 与 Gora 中的组合器功能
- angular - 部署编辑好的 npm 包
- android - 来自 url 的 setRingtone 与适配器类中的 RecyclerView (Android)