我已经在数字海洋上设置了一个简单的水滴,并且正在运行一个kafka和zookeeper节点,它是使用docker compose文件启动的。
我遇到了一个问题,消费或生产Kafka经纪人以外的数字海洋滴。这就是我的 Docker 的样子,
version: '3.4'
services:
zookeeper:
image: confluentinc/cp-zookeeper:latest
environment:
ZOOKEEPER_CLIENT_PORT: 2181
ZOOKEEPER_TICK_TIME: 2000
volumes:
- /root/data/zookeeper/etc:/etc/zookeeper
- /root/data/zookeeper/data:/var/lib/zookeeper/data
container_name: "zookeeper"
network_mode: "host"
kafka:
image: confluentinc/cp-kafka:latest
depends_on:
- zookeeper
environment:
KAFKA_BROKER_ID: 1
KAFKA_ZOOKEEPER_CONNECT: PUBLIC_DIGITIAL_OCEAN_IP:2181
KAFKA_ADVERTISED_LISTENERS:PLAINTEXT://PUBLIC_DIGITIAL_OCEAN_IP:9093
KAFKA_LISTENER: PUBLIC_DIGITIAL_OCEAN_IP:9093
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_LOG4J_LOGGERS: "kafka.controller=WARN"
KAFKA_LOG4J_ROOT_LOGLEVEL: WARN
KAFKA_TOOLS_LOG4J_LOGLEVEL: ERROR
volumes:
- /root/data/kafka/etc:/etc/kafka
- /root/data/kafka/data:/var/lib/kafka/data
container_name: "kafka"
network_mode: "host"
我试过不同的组合 KAFKA_ADVERTISED_LISTENERS
使用localhost,0.0.0.0和我没有任何成功。
如果我进入kafka容器并使用cli,我就可以消费和生产。
据我所知,digital ocean没有任何防火墙规则,因此端口被暴露。
在droplet中运行netstat的片段
> netstat -tulpn | grep :2181
> tcp6 0 0 :::2181 :::* LISTEN 10522/java
> netstat -tulpn | grep :9093
> tcp6 0 0 :::9093 :::* LISTEN 13093/java
非常感谢您的帮助!
1条答案
按热度按时间uqxowvwt1#
问题是我对水滴的防火墙规则。运行命令;
sudo ufw allow 2181
&&sudo ufw allow 9092
解决了我的问题。