温馨提示×

Ubuntu Kafka如何连客户端

小樊
44
2026-07-07 12:41:16
栏目: 智能运维

在 Ubuntu 上连接 Kafka 客户端,一般分为 本地连接远程连接 两种情况。下面我用最常见、最实用的方式一步一步说明(假设你已经安装并启动了 Kafka)。


一、前提条件(确认 Kafka 已启动)

1️⃣ 启动 Zookeeper(如果用的是老版本 Kafka)

cd ~/kafka
bin/zookeeper-server-start.sh config/zookeeper.properties

2️⃣ 启动 Kafka

bin/kafka-server-start.sh config/server.properties

✅ 确认 Kafka 默认端口:

  • Kafka:9092
  • Zookeeper:2181

二、本地客户端连接(最简单)

1️⃣ 创建 Topic

bin/kafka-topics.sh \
--create \
--topic test-topic \
--bootstrap-server localhost:9092 \
--partitions 1 \
--replication-factor 1

2️⃣ 生产者(发送消息)

bin/kafka-console-producer.sh \
--topic test-topic \
--bootstrap-server localhost:9092

输入消息后回车即可发送。

3️⃣ 消费者(接收消息)

bin/kafka-console-consumer.sh \
--topic test-topic \
--from-beginning \
--bootstrap-server localhost:9092

✅ 到这里,本地客户端已经成功连接 Kafka


三、远程客户端连接(重点)

问题原因

Kafka 默认只监听 localhost,远程客户端连不上。


✅ 修改 Kafka 配置文件

编辑:

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 端口


四、使用客户端连接(示例)

1️⃣ Java 客户端

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");

2️⃣ Python 客户端(kafka-python)

pip install kafka-python
from kafka import KafkaProducer

producer = KafkaProducer(
    bootstrap_servers='192.168.1.100:9092'
)

producer.send('test-topic', b'hello kafka')

3️⃣ 命令行远程测试

bin/kafka-console-producer.sh \
--topic test-topic \
--bootstrap-server 192.168.1.100:9092

五、常见问题排查

❌ 连接超时

  • 防火墙没放行 9092
  • advertised.listeners 配置错误
  • 云服务器安全组未开放

❌ Leader not available

bin/kafka-topics.sh --describe --topic test-topic --bootstrap-server localhost:9092

六、总结一句话

Ubuntu 上 Kafka 客户端连接 = 正确配置 advertised.listeners + 开放端口 + 使用 IP 而非 localhost


如果你愿意,可以告诉我:

  • Kafka 版本
  • 本地还是远程
  • 用什么语言客户端(Java / Python / Go / Shell)

我可以给你 针对你环境的精确配置

0