设置sunbird遥测KafkaDruid和超集

zxlwwiss  于 2021-06-04  发布在  Kafka
关注(0)|答案(2)|浏览(319)

我正在尝试创建一个基于移动事件的分析 Jmeter 板。我想将所有组件停靠到docker中的容器中,并在localhost中部署它,并创建一个分析 Jmeter 板。
太阳鸟遥测https://github.com/project-sunbird/sunbird-telemetry-service
Kafkahttps://github.com/wurstmeister/kafka-docker
Druidhttps://github.com/apache/incubator-druid/tree/master/distribution/docker
超集https://github.com/apache/incubator-superset
我做了什么
Druid
我执行了命令 docker build -t apache/incubator-druid:tag -f distribution/docker/Dockerfile . 我执行了命令 docker-compose -f distribution/docker/docker-compose.yml up 在一切都被打开之后http://localhost:4008/看到Druid在奔跑
完成构建和运行需要3.5小时
Kafka
导航到kafka文件夹 docker-compose up -d 执行了这个命令
问题
当我们执行druid时,一个zookeeper开始运行,当我们启动kafka时,docker文件启动另一个zookeeper,我无法在kafka和zookeeper之间建立连接。在我开始太阳鸟遥测,并试图创建主题和连接Kafka从太阳鸟它没有得到连接。
我不明白我做错了什么。我们能告诉Kafka分享由Druid创建的Zookeeper吗。我完全不熟悉这个环境和这些堆栈。我正在研究这个。我做错什么了吗。有谁能指出Kafka和Druid如何正确地联系在一起而不是docker。
note:- i 我在我的mac电脑里运行这些
我的Kafka文件

version: '2'
services:
  zookeeper:
    image: wurstmeister/zookeeper
    ports:
      - "2181:2181"
  kafka:
    build: .
    ports:
      - "9092"
    environment:
      KAFKA_ADVERTISED_HOST_NAME:**localhost ip**
      KAFKA_ZOOKEEPER_CONNECT:**localhost ip**:2181
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

vc6uscn9

vc6uscn91#

我们能告诉Kafka分享由Druid创建的Zookeeper吗
您可以将所有服务放在同一个compose文件中。
这里列出了Druid和Kafka的联系
https://github.com/apache/incubator-druid/blob/master/distribution/docker/environment#l31
你可以把Kafka设为同一个地址,是吗
例如,下载上面的文件并将Kafka添加到Druid合成文件中。。。

version: "2.2"

volumes:
  metadata_data: {}
  middle_var: {}
  historical_var: {}
  broker_var: {}
  coordinator_var: {}
  overlord_var: {}
  router_var: {}

services:

  # TODO: Add sunbird

  postgres:
    container_name: postgres
    image: postgres:latest
    volumes:
      - metadata_data:/var/lib/postgresql/data
    environment:
      - POSTGRES_PASSWORD=FoolishPassword
      - POSTGRES_USER=druid
      - POSTGRES_DB=druid

  # Need 3.5 or later for container nodes
  zookeeper:
    container_name: zookeeper
    image: zookeeper:3.5
    environment:
      - ZOO_MY_ID=1

  druid-coordinator:
    image: apache/incubator-druid
    container_name: druid-coordinator
    volumes:
      - coordinator_var:/opt/druid/var
    depends_on: 
      - zookeeper
      - postgres
    ports:
      - "3001:8081"
    command:
      - coordinator
    env_file:
      - environment

  # renamed to druid-broker
  druid-broker: 
    image: apache/incubator-druid
    container_name: druid-broker
    volumes:
      - broker_var:/opt/druid/var
    depends_on: 
      - zookeeper
      - postgres
      - druid-coordinator
    ports:
      - "3002:8082"
    command:
      - broker
    env_file:
      - environment

 # TODO: add other Druid services

 kafka:
    image: wurstmeister/kafka
    ports:
      - "9092"
    depends_on: 
      - zookeeper
    environment:
      KAFKA_ADVERTISED_HOST_NAME: kafka
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181/kafka  # This is the same service that Druid is using
vulvrdjw

vulvrdjw2#

我们能告诉Kafka分享由Druid创建的Zookeeper吗
是的,因为有一个 zookeeper.connect Kafka代理的设置,指定Kafka将尝试连接到的zookeeper地址。如何做到这一点完全取决于您使用的docker映像。例如,一个流行的图像wurstmeister/kafka docker通过将所有以kafka\开始的环境变量Map到代理设置并将它们添加到server.properties来实现这一点,这样 KAFKA_ZOOKEEPER_CONNECT 成为 zookeeper.connect 设置。我建议看一下官方文档,看看还可以配置什么。
当我们启动Kafka时,docker文件启动另一个zookeeper
这是你的问题。是docker compose文件启动zookeeper,kafka,并将kafka配置为使用绑定的zookeeper。您需要通过移除绑定的zookeeper并将kafka配置为使用不同的zookeeper来修改它。理想情况下,应该有一个docker compose文件来启动整个设置。

相关问题