简体   繁体   English

连接到 ubuntu 上运行的 kafka 集群 20.04 在 Windows 主机上的 VirtualBox 中运行

[英]Connect to kafka cluster running on ubuntu 20.04 running in VirtualBox on Windows host

I start the Kafka cluster in docker containers on Ubuntu 20.04 guest running on Windows VirtualBox host.我在运行在 Windows VirtualBox 主机上的 Ubuntu 20.04 来宾上的 docker 容器中启动 Kafka 集群。

When it runs locally I can connect to kafka cluster with kcat using the following bootstrap.servers=localhost:29092,localhost:29093,localhost:29094当它在本地运行时,我可以使用以下bootstrap.servers=localhost:29092,localhost:29093,localhost:29094连接到带有kcat的 kafka 集群

The Web UIs kafdrop and provectuslabs/kafka-ui are also working fine from localhost. Web 用户界面kafdropprovectuslabs/kafka-ui在本地主机上也运行良好。

Windows machine connected to the modem via WiFi. Windows 机器通过 WiFi 连接到调制解调器。 On the modem side, I assigned the static address to Windows host 192.168.0.25 and created advertised listeners EXTERNAL_REMOTE_HOST://192.168.0.25:29082 (see my docker-compose below)在调制解调器端,我将 static 地址分配给 Windows 主机192.168.0.25并创建了广告侦听器 EXTERNAL_REMOTE_HOST://192.168.0.25:29082(参见下面我的 docker-compose)

I created inbound rules to pass Inte.net traffic on Windows host for ports 29082-29084 and forwarded this ports to Ubuntu 20.04 guest changing VirtualBox settings for Ubuntu guest virtual machine.我创建了入站规则以通过端口 29082-29084 的 Windows 主机上的 Inte.net 流量并将此端口转发到Ubuntu 20.04来宾更改 Ubuntu 来宾虚拟机的 VirtualBox 设置。

I have another computer, lets call it remote host, which I assigned the IP address 192.168.0.21 on the modem side.我有另一台计算机,我们称之为远程主机,我在调制解调器端分配了 IP 地址 192.168.0.21。 It is connected to the modem by cable and shares the same.network 192.168.0.* .它通过电缆连接到调制解调器并共享相同的网络192.168.0.*

The connection from remote host 192.168.0.21 to Ubuntu guest running on Windows VirtualBox is successful.从远程主机192.168.0.21到运行在 Windows VirtualBox 上的 Ubuntu guest 的连接是成功的。

# Ubuntu 20.04 on 192.168.0.21
ip a
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 52:54:00:94:62:db brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.21/24 brd 192.168.0.255 scope global noprefixroute enp1s0
       valid_lft forever preferred_lft forever
    inet6 fe80::bd3c:b937:87b8:8a05/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

# try to connect to Ubuntu guest on Windows VirtualBox
nc -zvw10 192.168.0.25 29082
Connection to 192.168.0.25 29082 port [tcp/*] succeeded!

But connection from remote host 192.168.0.21 to Kafka cluster fails但是从远程主机192.168.0.21到 Kafka 集群的连接失败

# Ubuntu 20.04 on 192.168.0.21
cat ~/.config/kcat.conf 
bootstrap.servers=192.168.0.25:29082,192.168.0.25:29083,192.168.0.25:29084
kcat -L
% ERROR: Failed to acquire metadata: Local: Broker transport failure (Are the brokers reachable? Also try increasing the metadata timeout with -m <timeout>?)

What is wrong with my Kafka brokers configuration?我的 Kafka 代理配置有什么问题?

My docker-compose is:我的 docker-compose 是:

version: '3.0'

services:
  zookeeper:
    image: myown/kafka:1.0
    hostname: zookeeper
    container_name: zookeeper
    networks: 
      - kafka
    links: 
     - "proxy"
    volumes:
      - /opt/kafka/zookeeper:/opt/kafka/zookeeper
    environment:
      ZOOKEEPER_ADDRESS: localhost
      ZOOKEEPER_PORT: 29090
      ZOOKEEPER_ID: 0
      ZOOKEEPER_CLIENT_PORT: 2181
      ZOOKEEPER_TICK_TIME: 2000

  kafka-broker-0:
    image: myown/kafka:1.0
    build: .
    hostname: kafka-broker-0
    container_name: kafka-broker-0
    depends_on:
      - zookeeper
    networks: 
      - kafka
    links:
      - "zookeeper"
    ports:
      - "29092:29092"
      - "29082:29082"
    volumes:
      - /opt/kafka/log:/opt/kafka/log
    environment:
      KAFKA_BROKER_ID: 0
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_LISTENERS: INTERNAL://kafka-broker-0:9082,INTERNAL_NETWORK://kafka-broker-0:9092,EXTERNAL_HOST://0.0.0.0:29092,EXTERNAL_REMOTE_HOST://0.0.0.0:29082
      KAFKA_ADVERTISED_LISTENERS: INTERNAL://kafka-broker-0:9082,INTERNAL_NETWORK://kafka-broker-0:9092,EXTERNAL_HOST://localhost:29092,EXTERNAL_REMOTE_HOST://192.168.0.25:29082
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT,INTERNAL_NETWORK:PLAINTEXT,EXTERNAL_HOST:PLAINTEXT,EXTERNAL_REMOTE_HOST:PLAINTEXT
      KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 3
      KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
      KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
      KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 3
      DELETE_TOPIC_ENABLE: "true"

  kafka-broker-1:
    image: myown/kafka:1.0
    hostname: kafka-broker-1
    container_name: kafka-broker-1
    depends_on:
      - zookeeper
    networks: 
      - kafka
    links:
      - "zookeeper"
    ports:
      - "29093:29093"
      - "29083:29083"
    volumes:
      - /opt/kafka/log:/opt/kafka/log
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_LISTENERS: INTERNAL://kafka-broker-1:9082,INTERNAL_NETWORK://kafka-broker-1:9092,EXTERNAL_HOST://0.0.0.0:29093,EXTERNAL_REMOTE_HOST://0.0.0.0:29083
      KAFKA_ADVERTISED_LISTENERS: INTERNAL://kafka-broker-1:9082,INTERNAL_NETWORK://kafka-broker-1:9092,EXTERNAL_HOST://localhost:29093,EXTERNAL_REMOTE_HOST://192.168.0.25:29083
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT,INTERNAL_NETWORK:PLAINTEXT,EXTERNAL_HOST:PLAINTEXT,EXTERNAL_REMOTE_HOST:PLAINTEXT
      KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 3
      KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
      KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
      KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 3
      DELETE_TOPIC_ENABLE: "true"
  kafka-broker-2:
    image: myown/kafka:1.0
    hostname: kafka-broker-2
    container_name: kafka-broker-2
    depends_on:
      - zookeeper
    networks: 
      - kafka
    links:
      - "zookeeper"
    ports:
      - "29094:29094"
      - "29084:29084"
    volumes:
      - /opt/kafka/log:/opt/kafka/log
    environment:
      KAFKA_BROKER_ID: 2
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_LISTENERS: INTERNAL://kafka-broker-2:9082,INTERNAL_NETWORK://kafka-broker-2:9092,EXTERNAL_HOST://0.0.0.0:29094,EXTERNAL_REMOTE_HOST://0.0.0.0:29084
      KAFKA_ADVERTISED_LISTENERS: INTERNAL://kafka-broker-2:9082,INTERNAL_NETWORK://kafka-broker-2:9092,EXTERNAL_HOST://localhost:29094,EXTERNAL_REMOTE_HOST://192.168.0.25:29084
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT,INTERNAL_NETWORK:PLAINTEXT,EXTERNAL_HOST:PLAINTEXT,EXTERNAL_REMOTE_HOST:PLAINTEXT
      KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 3
      KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
      KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
      KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 3
      DELETE_TOPIC_ENABLE: "true"
  kafdrop:
    image: obsidiandynamics/kafdrop:3.30.0
    hostname: kafdrop
    container_name: kafdrop
    restart: "no"
    networks: 
      - kafka
    ports:
      - 9000:9000
    environment:
      KAFKA_BROKERCONNECT: kafka-broker-0:9092,kafka-broker-1:9092,kafka-broker-2:9092
      JVM_OPTS: "-Xms16M -Xmx48M -Xss180K -XX:-TieredCompilation -XX:+UseStringDeduplication -noverify"
    depends_on:
      - kafka-broker-0
      - kafka-broker-1
      - kafka-broker-2
  kafka-ui:
    image: provectuslabs/kafka-ui:7837622d5eaacae9bade7342f14732967e1b48d0
    container_name: kafka-ui
    networks: 
      - kafka
    depends_on:
      - kafka-broker-0
      - kafka-broker-1
      - kafka-broker-2
    ports:
      - "8080:8080"
    restart: always
    environment:
      KAFKA_CLUSTERS_0_NAME: local
      KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka-broker-0:9092,kafka-broker-1:9092,kafka-broker-2:9092
networks:
  kafka:
    external: true

I think your kafka connect server don't know hosts of kafka brokers.我认为您的 kafka 连接服务器不知道 kafka 代理的主机。

You could add them by change /etc/hosts in your kafka connect server like below.您可以通过在您的 kafka 连接服务器中更改/etc/hosts来添加它们,如下所示。

<your_kafka_broker_ip> <your_kafka_broker_host>
192.168.0.25 kafka-broker-0
192.168.0.25 kafka-broker-1
192.168.0.25 kafka-broker-2

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Docker 在 VirtualBox 来宾操作系统(Ubuntu Server 20.04)中运行的 nodejs 服务器:通过主机(Win10)localhost 访问 - Docker nodejs server running in VirtualBox guest OS (Ubuntu Server 20.04): access via host (Win10) localhost 从运行virtualbox的外部主机连接docker - connect docker from outside host running virtualbox 在 AWS ECS 上运行分布式 kafka 连接集群 - Running a distributed kafka connect cluster on AWS ECS 如何连接到在 Ubuntu 主机上运行的远程 docker - How to connect to remote docker running on Ubuntu host 连接运行在同一主机上的 windows 和 linux 容器 - Connect windows and linux containers running on the same host 无法从Windows主机上运行的PGAdmin连接到Docker中运行的Postgres - Cannot connect to Postgres running in Docker from PGAdmin running on Windows Host 在Virtualbox VM上运行Docker For Windows - Running Docker For Windows on a Virtualbox VM 如何从运行在同一 Kube.netes 集群中的容器连接到 Docker,它在 Kube.netes 集群中的主机虚拟机上运行? - How do I connect to Docker, running on host VMs in a Kubernetes cluster from a container running in the same Kubernetes cluster? 将运行PHP的Docker容器连接到主机的(VirtualBox上的ubuntu)MSQL服务器 - Connecting a Docker container running PHP to the host's(ubuntu on VirtualBox) MSQL server 连接到运行在 Docker 的 Kafka - Connect to Kafka running in Docker
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM