Debian Kafka集群搭建与管理指南
wget https://downloads.apache.org/zookeeper/stable/apache-zookeeper-3.7.0-bin.tar.gz
tar -xzf apache-zookeeper-3.7.0-bin.tar.gz
sudo mv apache-zookeeper-3.7.0 /opt/zookeeper
/opt/zookeeper/conf/zoo.cfg
,添加集群配置:tickTime=2000
initLimit=5
syncLimit=2
dataDir=/opt/zookeeper/data # 数据存储目录
clientPort=2181 # 客户端连接端口
server.1=zookeeper1:2888:3888 # 节点1(需替换为实际主机名)
server.2=zookeeper2:2888:3888 # 节点2
server.3=zookeeper3:2888:3888 # 节点3
在/opt/zookeeper/data
目录下创建myid
文件,内容为节点ID(如节点1的myid
内容为1
)。/opt/zookeeper/bin/zkServer.sh start
/opt/zookeeper/bin/zkServer.sh status # 检查节点状态(Leader/Follower)
wget https://downloads.apache.org/kafka/3.5.2/kafka_2.12-3.5.2.tgz
tar -xzf kafka_2.12-3.5.2.tgz
sudo mv kafka_2.12-3.5.2 /opt/kafka
/opt/kafka/config/server.properties
,关键配置如下(每台节点需唯一):broker.id=1 # 当前节点唯一ID(集群中不可重复)
listeners=PLAINTEXT://kafka1:9092 # 监听地址(替换为实际主机名或IP)
advertised.listeners=PLAINTEXT://kafka1:9092 # 客户端访问地址
zookeeper.connect=zookeeper1:2181,zookeeper2:2181,zookeeper3:2181 # ZooKeeper集群地址
log.dirs=/opt/kafka/logs # 日志存储目录
default.replication.factor=3 # 默认副本数(建议≥3,保证高可用)
min.insync.replicas=2 # 最小同步副本数(确保数据可靠性)
num.partitions=3 # 新主题默认分区数(根据消费者并行需求调整)
log.retention.hours=168 # 日志保留时间(7天,单位:小时)
/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties &
```(`&`表示后台运行)
/opt/kafka/bin/kafka-topics.sh --list --bootstrap-server kafka1:9092
/opt/kafka/bin/kafka-topics.sh --create --topic test-topic --bootstrap-server kafka1:9092 --replication-factor 3 --partitions 3
/opt/kafka/bin/kafka-console-producer.sh --topic test-topic --bootstrap-server kafka1:9092
/opt/kafka/bin/kafka-console-consumer.sh --topic test-topic --from-beginning --bootstrap-server kafka1:9092
/opt/kafka/bin/kafka-topics.sh --describe --bootstrap-server kafka1:9092 --topic test-topic
/opt/kafka/bin/kafka-topics.sh --alter --topic test-topic --bootstrap-server kafka1:9092 --partitions 6
delete.topic.enable=true
,默认开启):/opt/kafka/bin/kafka-topics.sh --delete --topic test-topic --bootstrap-server kafka1:9092
/opt/kafka/bin/kafka-consumer-groups.sh --describe --bootstrap-server kafka1:9092 --group my-group
num.network.threads
(网络线程数,默认3,可根据并发量增加)、num.io.threads
(IO线程数,默认8,建议设置为CPU核心数的2倍)、log.flush.interval.messages
(批量刷盘阈值,默认10000,增大可提高吞吐量但降低可靠性)。-Xmx
(最大堆内存)为物理内存的1/3~1/2(如8GB内存设置为4GB),选择G1垃圾回收器(-XX:+UseG1GC
)。server.properties
中的security.protocol=SSL
、ssl.keystore.location
等参数),确保数据传输安全。security.protocol=SASL_PLAINTEXT
、sasl.mechanism=PLAIN
),并通过ACL(访问控制列表)限制用户对Topic的访问权限(如kafka-acls.sh
命令)。ps -ef | grep kafka
),查看日志(/opt/kafka/logs/server.log
)中的错误信息(如磁盘空间不足、ZooKeeper连接失败),重启服务(systemctl restart kafka
)。zkServer.sh status
),查看ZooKeeper日志(/opt/zookeeper/logs/zookeeper.out
),修复网络分区或数据不一致问题。kafka-consumer-groups.sh
),确认消费者是否正常运行(如进程崩溃、消费逻辑阻塞),调整消费者线程数或分区数。