在 Docker Swarm 中运行集群时公开 Nifi UI



我使用以下配置在docker swarm上运行Apache Nifi集群:

version: '3'
services:
zookeeper:
hostname: zookeeper
image: 'bitnami/zookeeper:latest'
environment:
- ALLOW_ANONYMOUS_LOGIN=yes
nifi:
image: apache/nifi:latest
ports:
- 8080
environment:
- NIFI_WEB_HTTP_PORT=8080
- NIFI_CLUSTER_IS_NODE=true
- NIFI_CLUSTER_NODE_PROTOCOL_PORT=8082
- NIFI_ZK_CONNECT_STRING=zookeeper:2181
- NIFI_ELECTION_MAX_WAIT=1 min

这工作正常,我可以轻松扩展 Nifi 实例的数量。

但是,当尝试通过已发布的端口访问 Nifi UI 时,它似乎不起作用。 尝试通过任何群节点访问连接时,我收到连接被拒绝。

ID                  NAME            MODE                REPLICAS      IMAGE                                   PORTS
klp9kjm7jwdy        nifi            replicated          3/3           apache/nifi:latest                      *:30003->8080/tcp
qa3rf9pi6uyw        zookeeper       replicated          1/1           bitnami/zookeeper:latest

该问题似乎与Nifi绑定到运行它的主机的主机名有关。 通过使用其容器 ID 使其仅在群网络内可用。

这确实可以在群网络内的任何容器内工作,但不能通过已发布的端口。

我还尝试配置NIFI_WEB_HTTP_HOST=0.0.0.0以确保 Nifi 绑定到所有网络接口,但这会中断集群中实例之间的通信。

我应该如何配置 Nifi/Docker swarm 以便能够通过 swarm 路由网状网络正确访问 Nifi 的 UI?

在 Apache Nifi Dev Mail List 的帮助下设法启动并运行它。

问题在于,默认情况下,Nifi 不会绑定到所有网络接口,并且来自 swarm 网络的流量使用不同的网络接口。 也可以通过将其他网络接口添加到 Nifi 配置来工作。

我的 Nifi 容器有三个网络接口eth0eth1eth2,所以我将这些属性添加到${NIFI_HOME}/conf/nifi.properties

nifi.web.http.network.interface.eth0=eth0
nifi.web.http.network.interface.eth1=eth1
nifi.web.http.network.interface.eth2=eth2

我想这可以缩小到仅添加用于来自 Swarm 入口网络的流量的网络接口。

相关内容

  • 没有找到相关文章

最新更新