在 Debian 下连接 Kafka,通常分为 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
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
server.properties 关键项listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners=PLAINTEXT://<服务器IP>:9092
⚠️ 常见坑:
advertised.listeners必须是 客户端能访问到的地址
如果是远程连接,不能写localhost
sudo ufw allow 9092
bin/kafka-topics.sh \
--create \
--topic test \
--bootstrap-server localhost:9092 \
--partitions 1 \
--replication-factor 1
bin/kafka-console-producer.sh \
--topic test \
--bootstrap-server localhost:9092
bin/kafka-console-consumer.sh \
--topic test \
--from-beginning \
--bootstrap-server localhost: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");
KafkaProducer<String, String> producer = new KafkaProducer<>(props);
from kafka import KafkaProducer
producer = KafkaProducer(
bootstrap_servers='192.168.1.100:9092'
)
producer.send('test', b'hello kafka')
advertised.listeners 配错Connection to node -1 was disconnectedbootstrap-server 地址不可达✅ 90% 是 advertised.listeners 问题
listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners=PLAINTEXT://10.0.0.5:9092
如果你能告诉我:
我可以给你 精确配置示例。