gpt4 book ai didi

java - 在 Docker Swarm 中运行集群时暴露 Nifi UI

转载 作者:行者123 更新时间:2023-12-02 18:17:52 34 4
gpt4 key购买 nike

我正在使用以下配置在 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 时,它似乎不起作用。尝试通过任何 swarm 节点访问连接时,连接被拒绝。
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 绑定(bind)到它运行的主机的主机名这一事实有关。通过使用它的容器 ID 使其仅在 swarm 网络中可用。

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

我也试过配置 NIFI_WEB_HTTP_HOST=0.0.0.0确保 Nifi 绑定(bind)到所有网络接口(interface),但这会破坏集群中实例之间的通信。

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

最佳答案

Apache Nifi Dev Mailing List 的帮助下设法启动并运行它.

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

我的 Nifi 容器有三个网络接口(interface) eth0 , eth1eth2 ,所以我将这些属性添加到 ${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 入口网络的流量的网络接口(interface)。

关于java - 在 Docker Swarm 中运行集群时暴露 Nifi UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62391633/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com