测试环境有一台后端服务器,为了方便移动开发,我在上面安装了ZeroTier Client
以便远程使用它上面的各种服务,比如mongodb
、ElasticSearch
、Redis
之类的。
但是上面的kafka
服务,在远程连接时出现了问题,经过排查,发现kafka的服务在通过ZeroTier
的IP地址访问时,需要创建额外的Listener
。
调整docker-compose.yml
配置如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| version: "3"
services:
zookeeper:
image: 'bitnami/zookeeper:latest'
ports:
- '2181:2181'
environment:
- ALLOW_ANONYMOUS_LOGIN=yes
kafka:
image: 'bitnami/kafka:1.1.1'
ports:
- '9092:9092'
- '9093:9093'
volumes:
- /datadisk/kafka:/bitnami/kafka
environment:
- KAFKA_BROKER_ID=1
- KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CLIENT:PLAINTEXT,EXTERNAL:PLAINTEXT
- KAFKA_CFG_LISTENERS=CLIENT://:9092,EXTERNAL://:9093
- KAFKA_CFG_ADVERTISED_LISTENERS=CLIENT://10.0.x.xx:9092,EXTERNAL://172.xx.xx.xxx:9093
- KAFKA_CFG_INTER_BROKER_LISTENER_NAME=CLIENT
- KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
- ALLOW_PLAINTEXT_LISTENER=yes
- KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=true
depends_on:
- zookeeper
|
打开了两个Listener
,一个CLIENT
,服务器内网使用;一个EXTERNAL
,供ZeroTier
网络使用;
再通过ADVERTISED_LISTENERS
通过ZooKeeper
进行宣告,让别的Broker
能发现并使用。