Linux上kafka部署和使用

文章目录

背景:测试超过kafka的设置的最大连接数后,是否会对之前的连接产生影响。

结论:查过最大连接数后,拒绝连接

复制代码
[root@pulsartest1 kafka_2.13-4.1.0]# bin/kafka-console-consumer.sh --bootstrap-server localhost:8092 --topic C --from-beginning
[2025-11-05 15:43:25,399] WARN [Consumer clientId=console-consumer, groupId=console-consumer-38745] Bootstrap broker localhost:8092 (id: -1 rack: null isFenced: false) disconnected (org.apache.kafka.clients.NetworkClient)

目的:记录kafka的部署和一些linux命令

低版本

kafka版本2.3.0

注意使用java8,java17可能会报dns解析错误。

问题参考:JDK导致ActiveMQ、Kafka连接zookeeper失败:Session 0x0 for server 10.1.21.244/:2181, unexpected error, closing socket connection and attempting reconnect - 没有星星的夏季 - 博客园

部署参考:https://baimoz.me/2679/

部署

bash 复制代码
#下载安装包
wget https://archive.apache.org/dist/kafka/2.3.0/kafka_2.12-2.3.0.tgz
#找一个目录,解压
tar -xvzf kafka_2.12-2.3.0.tgz

启动

强制使用java8启动,JAVA8_HOME是设置的Java8的环境变量

bash 复制代码
JAVA_HOME=$JAVA8_HOME bin/zookeeper-server-start.sh -daemon config/zookeeper.properties
JAVA_HOME=$JAVA8_HOME bin/kafka-server-start.sh config/server.properties

kafka命令

bash 复制代码
#创建topic
bin/kafka-topics.sh --bootstrap-server 127.0.0.1:9092 --create --topic A --partitions 1 --replication-factor 1
#查询topic
bin/kafka-topics.sh --bootstrap-server 127.0.0.1:9092 --list

#生产者(低版本broker-list,高版本bootstrap-server)"A"是topic名称
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic A
#消费者
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic A --from-beginning

配置

bash 复制代码
broker.id=0
listeners=PLAINTEXT://:9092
zookeeper.connect=127.0.0.1:2181
#最大连接数
max.connections=10
log.dirs=/tmp/kafka-logs
zookeeper.connection.timeout.ms=6000
#副本因子(默认是3,这里只启动了一个单节点)
offsets.topic.replication.factor=1                                 

高版本

kafka所有版本:https://archive.apache.org/dist/kafka/

Kafka 4.x 要求 Java 11+

部署

bash 复制代码
wget https://archive.apache.org/dist/kafka/4.1.0/kafka_2.13-4.1.0.tgz
解压...

配置

复制代码
# 创建 kraft 配置目录(若不存在)
mkdir -p config/kraft

cat > config/kraft/server.properties << EOF
# 核心角色配置(Kafka 4.x 必填)
process.roles=broker,controller
node.id=1
# 控制器集群配置:端口改为 8093(原 9093)
controller.quorum.voters=1@localhost:8093
# 监听地址:业务端口 8092(原 9092),控制器端口 8093(原 9093)
listeners=PLAINTEXT://:8092,CONTROLLER://:8093
inter.broker.listener.name=PLAINTEXT
controller.listener.names=CONTROLLER
log.dirs=/tmp/kafka-logs-8092
max.connections=10
# 关闭 SASL 认证(测试环境避坑)
sasl.enabled.mechanisms=PLAIN
security.protocol=PLAINTEXT
# 1. 设置消费者偏移量主题(__consumer_offsets)的默认副本因子为 1
offsets.topic.replication.factor=1

# 2. 设置所有系统主题(包括 __consumer_offsets、__transaction_state 等)的默认副本因子为 1
default.replication.factor=1

max.connections.per.ip=10
max.connections.per.listener=10
EOF
bash 复制代码
# 1. 生成集群 ID(复制输出的 UUID,如:abcdef12-3456-7890-abcd-ef1234567890)
bin/kafka-storage.sh random-uuid

# 2. 初始化数据目录(替换 <集群ID> 为上面生成的 UUID)
bin/kafka-storage.sh format -t <集群ID> -c config/kraft/server.properties
  • 成功提示:Formatting complete

启动 Kafka 4.x(KRaft 模式,无需 ZK)

复制代码
bin/kafka-server-start.sh config/kraft/server.properties

kafka命令

复制代码
#生产者命令有所不同
bin/kafka-console-producer.sh --bootstrap-server localhost:9092 --topic A

配置错误,更改配置重启后

bash 复制代码
bin/kafka-storage.sh format -t <集群ID> -c config/kraft/server.properties
# 删除之前可能残留的 9092/8092 数据目录
rm -rf /tmp/kafka-logs /tmp/kafka-logs-8092

Linux命令

监视连接数

bash 复制代码
#查pid
ps -ef | grep kafka.Kafka | grep -v grep | awk '{print $2}'
#查询连接数
netstat -anp | grep $3339446 | grep ESTABLISHED | grep ':8092' | wc -l
watch -n 1 "netstat -anp | grep 614052 | grep ESTABLISHED | wc -l"
相关推荐
pengyi8710151 分钟前
共享 IP 池多人使用 分层权限与配额管理方案
运维·服务器·网络
计算机安禾4 分钟前
【Linux从入门到精通】第33篇:数据库MySQL/MariaDB安装与基础调优
linux·数据库·mysql
搞科研的小刘选手20 分钟前
【高届数传感机电会议】第十二届传感器、机电一体化和自动化系统国际学术研讨会(ISSMAS 2026)
运维·人工智能·自动化·控制·传感器·传感·机电
楼兰公子37 分钟前
读取rpi摄像头
linux·服务器·算法
李景琰42 分钟前
Debian12安装配置Mqtt之EMQX
linux·运维·服务器
SimLine芯见42 分钟前
专为空管环境打造的KVM切换器,满足主备自动化高速无缝切换需求
运维·自动化
测试员周周44 分钟前
【AI测试系统】第1篇:LangGraph 实战:用 State Graph 搭建 AI测试流水线(4 步编排 + RAG 增强 + 完整代码)
linux·windows·python·功能测试·microsoft·单元测试·多轮对话
不做无法实现的梦~1 小时前
PX4 机载电脑 Linux 环境安装、串口、网络、ROS 完整配置
linux·运维·网络
嵌入式×边缘AI:打怪升级日志1 小时前
嵌入式Linux开发(了解交叉编译工具链的组成)
java·linux·运维
IT界的老黄牛1 小时前
停电后 Redis 集群两节点起不来:fix 完还报 Bad file format?多部分 AOF 修复的正确姿势
运维·redis·缓存