带有 Kafka 的 Docker 集群无法与客户端容器建立连接
Posted
技术标签:
【中文标题】带有 Kafka 的 Docker 集群无法与客户端容器建立连接【英文标题】:Docker Cluster with Kafka can't establish a connection with a client container 【发布时间】:2022-01-11 06:54:43 【问题描述】:我从客户端应用程序收到以下错误消息:
无法建立与节点 1002 (/127.0.0.1:9092) 的连接。经纪人可能不可用。
节点 1002 是正确的代理 id,这意味着它能够找到它,但我不明白为什么当客户端应用程序不在容器上运行时,连接本身无法建立。
Docker 编写
version: '3'
services:
zookeeper:
image: wurstmeister/zookeeper
ports:
- "2181:2181"
kafka:
image: wurstmeister/kafka
ports:
- "9092:9092"
environment:
KAFKA_ADVERTISED_HOST_NAME: 127.0.0.1
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_AUTO_CREATE_TOPICS_ENABLE: 'false'
depends_on:
- zookeeper
app:
image: someuser/someimage
ports:
- "8080:8080"
environment:
KAFKA_CONNECTION: kafka:9092
depends_on:
- kafka
application.yml
spring:
kafka:
consumer:
group-id: tdp-loggers
auto-offset-reset: earliest
bootstrap-servers: $KAFKA_CONNECTION
tdp:
topic-name: advice-topic
messages-per-request: 10
Dockerfile
FROM openjdk:17
WORKDIR /app
EXPOSE 8080
COPY .mvn/ .mvn
COPY mvnw pom.xml ./
RUN ./mvnw dependency:go-offline
COPY src ./src
CMD ["./mvnw", "spring-boot:run"]
【问题讨论】:
尝试将KAFKA_ADVERTISED_HOST_NAME
设置为容器的名称 (kafka
)。
【参考方案1】:
@Turing85 发布了答案,我不得不更改
KAFKA_ADVERTISED_HOSTNAME
从静态 IP 地址 127.0.0.1 到 kafka 的变量。
【讨论】:
我没有发布答案,我请求您尝试一下,因为我不确定它是否能解决问题...以上是关于带有 Kafka 的 Docker 集群无法与客户端容器建立连接的主要内容,如果未能解决你的问题,请参考以下文章
使用 cp-kafka-connect-base 为 snowflake-kafka-connector 构建一个组合的 docker 映像,以部署在 kafka connect 集群上