在 Ubuntu 上连接 Kafka 客户端,一般分为 本地连接 和 远程连接 两种情况。下面我用最常见、最实用的方式一步一步说明(假设你已经安装并启动了 Kafka)。
cd ~/kafka
bin/zookeeper-server-start.sh config/zookeeper.properties
bin/kafka-server-start.sh config/server.properties
✅ 确认 Kafka 默认端口:
90922181bin/kafka-topics.sh \
--create \
--topic test-topic \
--bootstrap-server localhost:9092 \
--partitions 1 \
--replication-factor 1
bin/kafka-console-producer.sh \
--topic test-topic \
--bootstrap-server localhost:9092
输入消息后回车即可发送。
bin/kafka-console-consumer.sh \
--topic test-topic \
--from-beginning \
--bootstrap-server localhost:9092
✅ 到这里,本地客户端已经成功连接 Kafka
Kafka 默认只监听 localhost,远程客户端连不上。
编辑:
vim config/server.properties
修改或添加以下内容:
listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners=PLAINTEXT://<服务器公网或内网IP>:9092
例如:
listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners=PLAINTEXT://192.168.1.100:9092
⚠️ 注意:
advertised.listeners 是 客户端真正连接的地址localhost重启 Kafka:
bin/kafka-server-stop.sh
bin/kafka-server-start.sh config/server.properties
sudo ufw allow 9092
云服务器还要放行 安全组 9092 端口
Properties props = new Properties();
props.put("bootstrap.servers", "192.168.1.100:9092");
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
pip install kafka-python
from kafka import KafkaProducer
producer = KafkaProducer(
bootstrap_servers='192.168.1.100:9092'
)
producer.send('test-topic', b'hello kafka')
bin/kafka-console-producer.sh \
--topic test-topic \
--bootstrap-server 192.168.1.100:9092
advertised.listeners 配置错误bin/kafka-topics.sh --describe --topic test-topic --bootstrap-server localhost:9092
Ubuntu 上 Kafka 客户端连接 = 正确配置
advertised.listeners+ 开放端口 + 使用 IP 而非 localhost
如果你愿意,可以告诉我:
我可以给你 针对你环境的精确配置 ✅