无法连接在docker中运行的Kafka
我在docker compose yml文件中为广告的侦听器configuration了下面的configuration
我的docker-compose.yml
version: '2' services: zookeeper: image: confluentinc/cp-zookeeper:latest network_mode: host environment: ZOOKEEPER_CLIENT_PORT: 32181 ZOOKEEPER_TICK_TIME: 2000 extra_hosts: - "moby:127.0.0.1" kafka: image: confluentinc/cp-kafka:latest network_mode: host depends_on: - zookeeper environment: KAFKA_BROKER_ID: 1 KAFKA_ZOOKEEPER_CONNECT: localhost:32181 KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://lnc52c9:29092 KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 extra_hosts: - "moby:127.0.0.1"
我使用下面的属性连接这个kafka
props.put("bootstrap.servers", "lnc52c9:29092");
当我尝试在该服务器中产生消息时,我收到下面的错误
警告o.apache.kafka.clients.NetworkClient – 使用关联ID 1获取元数据时出错:{foo = LEADER_NOT_AVAILABLE}
主机可以从我的机器ping通,因为它们都在同一个networking中,没有防火墙问题。 当我在docker容器中使用命令hostname
,我可以看到相同的主机名。 我错过了什么吗?
我认为你需要暴露容器中的卡夫卡港口 。 您可以在docker-compose文件中通过添加以下内容来完成此操作:
ports: "29092:29092"
这应该在kafka服务定义中。