首页 > 解决方案 > Apache Druid 无法连接到 zookeeper,Apache Druid 作为 docker 镜像部署在一个容器中

问题描述

我正在尝试在 docker 容器中部署 Apache -Druid。镜像构建成功。部署 Apache-druid 的 Docker Image 后,包括 zookeeper 在内的所有服务都正常启动。

这是我的设置,我在 Docker 远程主机上部署 Druid docker 映像,它在内部使用 Docker swarm。我为 Apache Druid 的每个服务配置了不同的容器名称、主机名。我已经配置了外部网络,我发现内部 swarm 正在不同的主机上启动这些服务。我已将“链接”配置为 Druid 服务的 Zookeeper,反之亦然。

但是,中间人、协调者和经纪人无法连接到 Zookeeper。以下是错误:

org.apache.zookeeper.ClientCnxn - 打开与服务器 zookeeper/IP 地址的套接字连接:2181。不会尝试使用 SASL 进行身份验证(未知错误)2020-03-19T22:04:05,673 INFO [main-SendThread(localhost:2181)] org.apache.zookeeper.ClientCnxn - 发生套接字错误:zookeeper/IP 地址:2181。 : 拒绝连接

所以我在 Docker 网络上运行不同的服务,在不同的节点上(Linux 上的 Docker)。这些服务是 Apache Druid 的一部分,如中层管理器、代理、路由器等。这些服务是单个 docker compose 文件的一部分。服务启动但无法连接到作为 Apache Druid 软件包一部分的 zookeeper。从我的基础设施团队发现,这些服务是在网络内的不同节点上启动的。我使用了定义的外部网络。另外,我正在定义 links 。如何配置服务以相互通信。这是我的码头工人撰写。这是我在下面评论中的 docker-compose 文件

请求输入。

谢谢和问候, Shubhada

标签: docker-composedocker-networkingdruiddocker-swarm-modedocker-network

解决方案


我已经解决了这个问题,将 druid 主机设置为 gateway.docker.internal


推荐阅读