【问题标题】:Kafka with Docker Problems有 Docker 问题的 Kafka
【发布时间】:2017-10-15 17:32:40
【问题描述】:

我正在尝试通过 docker-compose 文件部署 kafka,甚至通过安装 kafka 映像并手动运行它。当我开始运行 kafka server(broker) 时,这两个步骤都会给我这个错误

INFO 发起客户端连接,connectString=188.226.151.167:2181 sessionTimeout=6000 watcher=org.I0Itec.zkclient.ZkClient@323b36e0 (org.apache.zookeeper.ZooKeeper) [2017-05-16 13:44:49,903] 信息等待保持器状态 SyncConnected (org.I0Itec.zkclient.ZkClient) [2017-05-16 13:44:49,909] 信息打开与服务器 188.226.151.167/188.226.151.167:2181 的套接字连接。不会尝试使用 SASL 进行身份验证(未知错误)(org.apache.zookeeper.ClientCnxn) [2017-05-16 13:44:55,904] INFO 终止 ZkClient 事件线程。 (org.I0Itec.zkclient.ZkEventThread)

任何人都可以清楚地解释发生了什么以及如何解决它

【问题讨论】:

  • 你能分享你的 docker-compose 吗?另外,请分享你正在开发的 docker 版本和操作系统。
  • docker compose file version: '2' services: zookeeper: image: wurstmeister/zookeeper ports: - "2181:2181" kafka: build: .端口:-“9092:9092”环境:KAFKA_ADVERTISED_HOST_NAME:192.168.99.100 KAFKA_CREATE_TOPICS:“test:1:1”KAFKA_ZOOKEEPER_CONNECT:动物园管理员:2181 卷:-/var/run/docker.sock:/var/run/docker.sock
  • 操作系统版本:Ubuntu 16.04 Docker 版本:Docker 版本 17.04.0-ce

标签: docker apache-kafka docker-compose dockerfile


【解决方案1】:

它通过禁用防火墙连接解决了外部机器通过 docker 连接的所有 kafka 命令: ufw禁用

【讨论】:

    【解决方案2】:

    我已经将我的 docker compose 设置为这样,并且一切正常:

    version: '2'
    services:
      zookeeper:
        image: wurstmeister/zookeeper
        ports:
          - 2181:2181
        hostname: zookeeper
        container_name: zookeeper
        volumes:
          - /tmp/docker/zk1/logs:/logs
          - /tmp/docker/zk1/data:/data
      kafka:
        image: wurstmeister/kafka
        ports:
          - 9092:9092
        depends_on:
          - zookeeper
        environment:
          KAFKA_CREATE_TOPICS: "test1:1:1,test2:1:1"
          HOSTNAME_COMMAND: "route -n | awk '/UG[ \t]/{print $$2}'"
          KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
        volumes:
          - /var/run/docker.sock:/var/run/docker.sock
          - /tmp/docker/kafka/logs:/logs
          - /tmp/docker/kafka/data:/data
          - ./tmp/docker/kafka/kafka-logs:/kafka
        hostname: kafka
        container_name: kafka
    

    我已将端口设置为类似于“2181:2181”而不仅仅是“2181”,以便可以在我的容器外访问。

    我还设置了卷,这样每次我重新启动容器时都会记住上次的所有数据。

    【讨论】:

    • 当我制作这个 docker compose 文件时,这些错误出现在我身上异常动物园管理员1 | EndOfStreamException:无法从客户端 sessionid 0x15c1a74ce3c0002 读取附加数据,可能客户端已关闭套接字
    • 你确定这个 docker compose 文件不依赖于任何其他文件吗?
    • 我想知道 [link] HOSTNAME_COMMAND 是什么?因为当我尝试输入这个命令时 [command] route -n | awk '/UG[ \t]/{print $$2}' in terminal 我什么都看不到 这是本地主机 IP 还是 docker 机器 IP?
    • 我不知道您为什么会收到此错误。我刚刚使用我在上面发布的代码创建了一个带有 docker-compose.yml 的测试目录,它完美地工作。不过,您不一定需要设置 KAFKA_CREATE_TOPICS,您可以通过应用程序初始化来完成。老实说,我正在测试该命令,但我使用了通过我的应用程序动态创建的其他主题。至于我在wurstmeister/kafka 上找到的命令,如果没有这个 HOSTNAME_COMMAND,它就无法工作,所以我按照建议进行了设置。
    • 通过禁用 docker machine firewall 命令解决:ufw disable
    【解决方案3】:

    试试这个:

    kafka:
      network_mode: 'bridge'
      image: wurstmeister/kafka
      links:
        - zookeeper
      environment:
        HOSTNAME_COMMAND: "hostname -I | awk -F' ' '{print $$1}'"
        KAFKA_ADVERTISED_PORT: 9092
        KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
    zookeeper:
      network_mode: 'bridge'
      image: wurstmeister/zookeeper
    

    【讨论】:

      猜你喜欢
      • 2018-12-14
      • 1970-01-01
      • 2023-03-25
      • 2020-02-17
      • 2015-10-24
      • 2019-04-14
      • 2019-07-22
      • 2021-03-09
      • 2021-07-14
      相关资源
      最近更新 更多