温馨提示×

debian下kafka如何连接

小樊
44
2026-08-31 23:12:05
栏目: 智能运维

在 Debian 下连接 Kafka,通常分为 Kafka 服务本身的配置客户端(生产者/消费者/程序)如何连接 两部分。下面按常见场景说明。


一、Debian 上 Kafka 服务准备

1. 安装 Kafka(简要)

sudo apt update
sudo apt install default-jdk -y

wget https://downloads.apache.org/kafka/3.7.0/kafka_2.13-3.7.0.tgz
tar -xzf kafka_2.13-3.7.0.tgz
cd kafka_2.13-3.7.0

2. 启动 Zookeeper(老版本)或 KRaft(新版本)

Zookeeper 模式:

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

KRaft 模式(推荐 3.x):

bin/kafka-storage.sh format -t <uuid> -c config/kraft/server.properties
bin/kafka-server-start.sh config/kraft/server.properties

二、Kafka 连接的核心配置(非常重要)

1. server.properties 关键项

listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners=PLAINTEXT://<服务器IP>:9092

⚠️ 常见坑
advertised.listeners 必须是 客户端能访问到的地址
如果是远程连接,不能写 localhost

2. 防火墙

sudo ufw allow 9092

三、Debian 本地命令行连接 Kafka

1. 创建 Topic

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

2. 生产者

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

3. 消费者

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

四、远程客户端连接 Kafka(Java / Python 等)

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

KafkaProducer<String, String> producer = new KafkaProducer<>(props);

2. Python(kafka-python)

from kafka import KafkaProducer

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

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

五、常见问题排查

1. 连接超时

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

2. Connection to node -1 was disconnected

  • bootstrap-server 地址不可达
  • Kafka 未正确监听外部 IP

3. 本机能连,远程不能连

✅ 90% 是 advertised.listeners 问题


六、最简可用配置示例(远程可用)

listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners=PLAINTEXT://10.0.0.5:9092

如果你能告诉我:

  • Kafka 版本
  • 是否云服务器
  • 是本地连还是远程连
  • 用哪种语言客户端

我可以给你 精确配置示例

0