[英]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 用户界面
kafdrop
和provectuslabs/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.