Я пытаюсь запустить докерскую кафку и масштабировать ее на моем локальном хосте.Вот мой первоначальный docker-compose.yml:
version: '2'
services:
zookeeper:
image: wurstmeister/zookeeper
ports:
- "2181:2181"
kafka:
image: wurstmeister/kafka
ports:
- "9092:9092"
environment:
KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://127.0.0.1:9092
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
Это прекрасно работает, когда я запрашиваю с BOOTSTRAP_SERVERS_CONFIG = "PLAINTEXT: //127.0.0.1: 9092".
Очевидно, если яиспользуйте docker-compose scale kafka = 3 Я получу ошибку, потому что порт 9092 на локальном хосте уже используется.
В соответствии с документом: https://github.com/wurstmeister/kafka-docker/wiki/Connectivity я пытался изменить порт следующим образом:
version: '2'
services:
zookeeper:
image: wurstmeister/zookeeper
ports:
- "2181:2181"
kafka:
image: wurstmeister/kafka
ports:
- "9092"
environment:
KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://127.0.0.1:9092
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
При этом, если я запрашиваю с BOOTSTRAP_SERVERS_CONFIG = "PLAINTEXT: //127.0.0.1:9092 "мой производитель не может отправить сообщение из-за тайм-аута.Это означает, что точка входа не KAFKA_LISTENERS или KAFKA_ADVERTISED_LISTENERS.
java.util.concurrent.ExecutionException: org.apache.kafka.common.errors.TimeoutException: Failed to update metadata after 60000 ms.
Если я использую порт, моя докер будет привязана (32001): BOOTSTRAP_SERVERS_CONFIG = "PLAINTEXT: //127.0.0.1: 32001": 32001другое сообщение об ошибке при попытке отправить сообщение:
java.util.concurrent.ExecutionException: org.apache.kafka.common.errors.TimeoutException: Expiring 1 record(s) for demo-0:120001 ms has passed since batch creation
Я предполагаю, что в KAFKA_LISTENERS и KAFKA_ADVERTISED_LISTENERS есть что-то странное, но я не могу найти способ заставить его работать.
В моей последней попытке я сделал:
version: '2'
services:
zookeeper:
image: wurstmeister/zookeeper
ports:
- "2181:2181"
kafka:
image: wurstmeister/kafka
ports:
- "9093:9092"
environment:
KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092 # or PLAINTEXT://0.0.0.0:9093
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://127.0.0.1:9092 # or PLAINTEXT://127.0.0.1:9093
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
Но это не помогло.Если у кого-то есть идея, дайте мне знать.