簡體   English   中英

如何修復 Kafka Docker 容器拋出 0.0.0.0/0.0.0.0:2181:連接被拒絕?

[英]How to fix Kafka Docker container from throwing 0.0.0.0/0.0.0.0:2181: Connection refused?

我正在嘗試為 Kafka 更改數據捕獲設置 Docker 撰寫文件環境,但遇到此錯誤:

打開與服務器 0.0.0.0/0.0.0.0:2181 的套接字連接。 不會嘗試使用 SASL 進行身份驗證(未知錯誤)

發生套接字錯誤:0.0.0.0/0.0.0.0:2181:連接被拒絕

我一直在關注本教程https://hevodata.com/learn/kafka-cdc-postgres/ ,但它直接使用鏈接選項運行 docker 命令,而不是使用 ZBAEDB53E845AE71F13945AE90FCC0 文件。

我試圖轉換這些:

docker run -it --name kafka -p 9092:9092 --link zookeeper:zookeeper debezium/kafka

到下面的 docker-compose.yml 文件。 但是,它似乎完全忽略了 KAFKA_ZOOKEEPER_CONNECT 環境變量,因為這是我在日志中看到的:

使用 ZOOKEEPER_CONNECT=0.0.0.0:2181

盡管如此,文檔https://github.com/debezium/docker-images/tree/master/kafka/1.5表明它應該可以工作。

當我按照教程使用 docker 運行而不創建 docker-compose 文件時,它工作得很好。 它顯示了我本地計算機的 IP 地址,端口為 2181 而不是 0.0.0.0:2181。

docker-compose.yml:

version: "3.7"

services:
  postgres:
    image: debezium/postgres:10
    container_name: postgres
    ports:
      - "5000:5432"
    environment:
      POSTGRES_HOST_AUTH_METHOD: trust
      # POSTGRES_USER: db_user
      # POSTGRES_PASSWORD: db_password
  zookeeper:
    image: debezium/zookeeper:1.5
    container_name: zookeeper
    ports:
      - "2181:2181"
      - "2888:2888"
      - "3888:3888"
  kafka:
    image: debezium/kafka:1.5
    container_name: kafka
    ports:
      - "9092:9092"
    depends_on:
      - zookeeper
    environment:
      KAFKA_ADVERTISED_HOST_NAME: kafka
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
  connect:
    image: debezium/connect:1.5
    container_name: connect
    ports:
      - "8083:8083"
    environment:
      GROUP_ID: 1
      CONFIG_STORAGE_TOPIC: my-connect-configs
      OFFSET_STORAGE_TOPIC: my-connect-offsets
    depends_on: 
      - postgres
      - kafka
      - zookeeper

networks:
  default:
    name: kafkaCDC

Zookeeper 容器上的 zoo.cfg:

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/zookeeper/data
dataLogDir=/zookeeper/txns
clientPort=2181
autopurge.snapRetainCount=3
autopurge.purgeInterval=1

一直在看這個問題好幾個; 但是,我完全迷路了。 特別是,因為有很多例子都在使用鏈接。

這是讓我想到使用 KAFKA_ZOOKEEPER_CONNECT 的 GitHub 帖子。 https://github.com/wurstmeister/kafka-docker/issues/512#issuecomment-505905161

除了我覺得https://github.com/debezium/docker-images/blob/master/kafka/1.5/docker-entrypoint.sh忽略了環境變量有問題,但它可能只是我不理解某些東西並出現 conf 錯誤。

要使debezium/kafka:1.5圖像在 docker 組合中工作,您可以嘗試傳遞以下環境變量:

ZOOKEEPER_CONNECT: "zookeeper:2181"

它解決了我的問題,示例 docker 組成 yaml 如下:

version: "3.9"
services:
  zookeeper:
    image: debezium/zookeeper:1.5
    ports:
      - "2181:2181"
      - "2888:2888"
  kafka:
    image: debezium/kafka:1.5
    ports:
      - "9092:9092"
    environment:
      ZOOKEEPER_CONNECT: "zookeeper:2181"
    depends_on:
      - zookeeper

不要在您的ENVIRONMENT變量前加上 KAFKA_

這是我的工作集群:

version: '2'
services:
  postgres:
    image: debezium/postgres:13-alpine
    container_name: postgres
    hostname: postgres
    environment:
      POSTGRES_USER: nikamooz
      POSTGRES_PASSWORD: nikamooz
      
    ports:
      - 5432:5432
    
  zookeeper:
    image: debezium/zookeeper
    container_name: zookeeper
    hostname: zookeeper
    environment:
      ZOOKEEPER_SERVER_ID: 1
    ports:
      - 2182:2181
      - 2888:2888
      - 3888:3888
    volumes: 
      - ./data/zoo/data:/zookeeper/data
      - ./data/zoo/log:/zookeeper/txns

  kafka:
    image: debezium/kafka
    container_name: kafka
    hostname: kafka
    depends_on:
      - zookeeper
    ports:
      - 9092:9092
    environment:
      ZOOKEEPER_CONNECT: zookeeper:2181
      BOOTSTRAP_SERVERS: kafka:9092
    volumes: 
      - ./data/kafka/data:/kafka/data
      - ./data/kafka/logs:/kafka/logs


  connect:
    image: debezium/connect
    container_name: connect
    hostname: connect
    depends_on:
      - kafka
      - postgres
    ports:
      - 8083:8083
    environment:
      GROUP_ID: holding_group
      CONFIG_STORAGE_TOPIC: holding_storage_topic
      OFFSET_STORAGE_TOPIC: holding_offset_topic
      BOOTSTRAP_SERVERS: kafka:9092
     

我可以通過將 zookeeper 連接地址設置為 docker 容器 IP 地址來修復它

要獲取 IP 地址,請運行

docker inspect <container-name> --format='{{ .NetworkSettings.IPAddress }}'

並按如下方式啟動kafka

docker run --name some-kafka -p 9092:9092 -e KAFKA_ZOOKEEPER_CONNECT=<zookeeper-ip>:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://:9092 -e KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1 confluentinc/cp-kafka

這個github 評論幫助我找出了我所缺少的

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM