温馨提示×

debian kafka连接怎么设

小樊
44
2026-09-09 21:28:05
栏目: 智能运维

在 Debian 上“连接 Kafka”通常分几种情况,下面按最常见场景给你说明,基本都适用(Debian 10/11/12 通用)。


一、Debian 上安装并本地连接 Kafka(最基础)

1. 安装 Java(Kafka 依赖)

sudo apt update
sudo apt install -y default-jdk
java -version

2. 下载并解压 Kafka

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

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

Kafka 3.x 推荐 KRaft(无 Zookeeper)

使用 KRaft 启动

# 生成集群ID
KAFKA_CLUSTER_ID=$(bin/kafka-storage.sh random-uuid)

# 格式化
bin/kafka-storage.sh format -t $KAFKA_CLUSTER_ID -c config/kraft/server.properties

# 启动
bin/kafka-server-start.sh config/kraft/server.properties

4. 本地连接测试

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

二、Debian 客户端连接远程 Kafka

1. 网络端口

确保能访问:

  • 9092(PLAINTEXT)
  • 9093(SSL / SASL)
telnet kafka-host 9092

2. 关键配置(非常容易踩坑)

Kafka 的 advertised.listeners 必须能被客户端解析

服务端 server.properties

listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners=PLAINTEXT://kafka-host:9092

客户端连接:

bin/kafka-console-consumer.sh \
  --topic test \
  --bootstrap-server kafka-host:9092

⚠️ 不能用 IP 连但 advertised 是 hostname,否则会连不上


三、Debian 上用 Python 连接 Kafka(常用)

pip install kafka-python
from kafka import KafkaProducer

producer = KafkaProducer(
    bootstrap_servers='kafka-host:9092'
)

producer.send('test', b'hello debian')
producer.flush()

四、Debian 上用 Java 连接 Kafka

pom.xml

<dependency>
  <groupId>org.apache.kafka</groupId>
  <artifactId>kafka-clients</artifactId>
  <version>3.7.0</version>
</dependency>
Properties props = new Properties();
props.put("bootstrap.servers", "kafka-host:9092");
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");

五、常见问题速查

问题 原因
Connection refused Kafka 没启动 / 端口错
Leader not available topic 没创建成功
能连但收不到消息 advertised.listeners 错
超时 防火墙 / 安全组

如果你能告诉我:

  • ✅ 是 本地还是远程
  • ✅ 用 命令行 / Python / Java
  • ✅ Kafka 版本

我可以直接给你一份可复制的配置

0