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"
相关推荐
HUT_Tyne2651 分钟前
Linux 快速入门
linux·运维·服务器
leoufung22 分钟前
逆波兰表达式 LeetCode 题解及相关思路笔记
linux·笔记·leetcode
鸠摩智首席音效师24 分钟前
如何在 Linux 中使用 dd 命令 ?
linux·运维·服务器
一夜空中最亮的星一1 小时前
【Linux】ubuntu24.04 安装docker
linux·docker·eureka
赖small强1 小时前
【Linux 网络基础】libwebsockets 技术文档
linux·网络·https·tls·lib·websockets
q***51891 小时前
ubuntu 安装 Redis
linux·redis·ubuntu
JuiceFS2 小时前
JuiceFS sync 原理解析与性能优化,企业级数据同步利器
运维·后端
yumgpkpm2 小时前
腾讯云TBDS与CDH迁移常见问题有哪些?建议由CDH迁移到CMP 7.13 平台(类Cloudera CDP,如华为鲲鹏 ARM 版)
hive·hadoop·zookeeper·flink·spark·kafka·hbase
q***47182 小时前
使用Canal将MySQL数据同步到ES(Linux)
linux·mysql·elasticsearch
Logan Lie3 小时前
Web服务监听地址的取舍:0.0.0.0 vs 127.0.0.1
运维·后端