почему я должен использовать docker изображение "confluentinc / kafka" для кластера kafka? - PullRequest
1 голос
/ 06 января 2020

Я сделал

docker-compose up

для кластеризации kafka на моем локальном компьютере.

и всякий раз, когда я хочу создать топи c, извлекайте темы, которые у меня есть, или ищите данные, хранящиеся в топи c я использую

docker run --net=host --rm confluentinc/cp-kafka:latest kafka-topics --describe --topic bar --zookeeper localhost:32181

, который находится на официальном сайте развертывания кластера kafka.

Однако я действительно хочу использовать Kafka в моем локальном хранилище, а не образ kafka docker, подобный

kafka-topics --describe --topic bar --zookeeper localhost:32181

если я использую код выше, я сталкиваюсь с этой ошибкой.

Exception in thread "main" kafka.zookeeper.ZooKeeperClientTimeoutException: Timed out waiting for connection while in state: CONNECTING
        at kafka.zookeeper.ZooKeeperClient.$anonfun$waitUntilConnected$3(ZooKeeperClient.scala:258)

Кроме того, если я проверяю netstat -anp tcp нет портов LISTEN из кластера kafka.

Что я должен делать? и, пожалуйста, дайте мне знать, что я пропускаю сейчас о docker (потому что я действительно новичок в docker :()

Это конфигурация yaml

---
version: '2'
services:
  zookeeper-1:
    image: confluentinc/cp-zookeeper:latest
    environment:
      ZOOKEEPER_SERVER_ID: 1
      ZOOKEEPER_CLIENT_PORT: 22181
      ZOOKEEPER_TICK_TIME: 2000
      ZOOKEEPER_INIT_LIMIT: 5
      ZOOKEEPER_SYNC_LIMIT: 2
      ZOOKEEPER_SERVERS: localhost:22888:23888;localhost:32888:33888;localhost:42888:43888
    network_mode: host
    extra_hosts:
      - "moby:127.0.0.1"

  zookeeper-2:
    image: confluentinc/cp-zookeeper:latest
    environment:
      ZOOKEEPER_SERVER_ID: 2
      ZOOKEEPER_CLIENT_PORT: 32181
      ZOOKEEPER_TICK_TIME: 2000
      ZOOKEEPER_INIT_LIMIT: 5
      ZOOKEEPER_SYNC_LIMIT: 2
      ZOOKEEPER_SERVERS: localhost:22888:23888;localhost:32888:33888;localhost:42888:43888
    network_mode: host
    extra_hosts:
      - "moby:127.0.0.1"

  zookeeper-3:
    image: confluentinc/cp-zookeeper:latest
    environment:
      ZOOKEEPER_SERVER_ID: 3
      ZOOKEEPER_CLIENT_PORT: 42181
      ZOOKEEPER_TICK_TIME: 2000
      ZOOKEEPER_INIT_LIMIT: 5
      ZOOKEEPER_SYNC_LIMIT: 2
      ZOOKEEPER_SERVERS: localhost:22888:23888;localhost:32888:33888;localhost:42888:43888
    network_mode: host
    extra_hosts:
      - "moby:127.0.0.1"

  kafka-1:
    image: confluentinc/cp-kafka:latest
    network_mode: host
    depends_on:
      - zookeeper-1
      - zookeeper-2
      - zookeeper-3
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_ZOOKEEPER_CONNECT: localhost:22181,localhost:32181,localhost:42181
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:19092
    extra_hosts:
      - "moby:127.0.0.1"

  kafka-2:
    image: confluentinc/cp-kafka:latest
    network_mode: host
"docker-compose.yml" 83L, 2321C

1 Ответ

1 голос
/ 06 января 2020

Если вы используете Kafka (и Zookeeper) на своем хосте, тогда нет, вам вообще не нужен Docker.

Не следует использовать localhost в любой строке подключения из контейнера, вместо этого используйте внешние имена служб контейнеров и удалите network_mode из конфигураций.

Примечание: несколько брокеров / зоопарков на одном компьютере ничего не помогают.

или данные поиска, хранящиеся в топи c

Вы не должны использовать zookeeper для этого

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...