kafka于centos怎样精准配置
导读:一、基础环境准备 1. 安装Java环境 Kafka依赖Java运行环境,需安装JDK 1.8或更高版本。在CentOS上可通过以下命令安装OpenJDK 8: sudo yum install java-1.8.0-openjdk-dev...
一、基础环境准备
1. 安装Java环境
Kafka依赖Java运行环境,需安装JDK 1.8或更高版本。在CentOS上可通过以下命令安装OpenJDK 8:
sudo yum install java-1.8.0-openjdk-devel -y
# 验证安装
java -version
需确保java -version输出显示Java 1.8及以上版本。
2. 下载并解压Kafka
从Apache Kafka官网下载最新稳定版本(如3.5.2),解压至指定目录(如/opt/kafka):
wget https://downloads.apache.org/kafka/3.5.2/kafka_2.12-3.5.2.tgz
tar -zxvf kafka_2.12-3.5.2.tgz -C /opt/
mv /opt/kafka_2.12-3.5.2 /opt/kafka # 重命名便于管理
3. 配置Zookeeper
Kafka依赖Zookeeper进行集群管理(Kafka 2.8+可使用Kraft模式摆脱Zookeeper,但传统部署仍需配置)。编辑/opt/kafka/config/zookeeper.properties:
dataDir=/opt/kafka/zookeeper_data # 数据存储目录
clientPort=2181 # 客户端连接端口
maxClientCnxns=0 # 最大客户端连接数(0表示无限制)
启动Zookeeper:
nohup /opt/kafka/bin/zookeeper-server-start.sh /opt/kafka/config/zookeeper.properties >
/dev/null 2>
&
1 &
二、Kafka精准配置(server.properties)
Kafka的核心配置文件为/opt/kafka/config/server.properties,以下是关键参数详解及精准设置:
1. Broker唯一标识
broker.id=0 # 每个broker的唯一ID,集群中不可重复
2. 网络监听配置
listeners=PLAINTEXT://0.0.0.0:9092 # 监听所有网卡的9092端口(生产环境建议指定具体IP)
advertised.listeners=PLAINTEXT://your_server_ip:9092 # 向客户端暴露的地址(需替换为服务器公网/内网IP)
注:advertised.listeners需确保客户端能访问,若Kafka部署在NAT网络后,需填写公网IP或域名。
3. 日志存储路径
log.dirs=/opt/kafka/kafka_logs # 日志文件存储目录(建议使用独立磁盘分区,提升IO性能)
4. Zookeeper连接
zookeeper.connect=localhost:2181 # 单机Zookeeper;集群需填写多个节点,如:zk1:2181,zk2:2181,zk3:2181
5. Topic默认配置
num.partitions=8 # 默认分区数(根据业务吞吐量调整,如高并发场景可设为16或32)
default.replication.factor=3 # 默认副本因子(生产环境建议≥3,确保数据冗余)
min.insync.replicas=2 # 写操作需确认的最小副本数(需≤default.replication.factor,保证数据一致性)
6. 日志保留策略
log.retention.hours=168 # 日志保留时间(小时,默认7天,可根据业务需求调整为24小时或30天)
log.segment.bytes=1073741824 # 日志段大小(1GB,当日志达到该大小时滚动创建新段)
log.retention.check.interval.ms=300000 # 日志保留检查间隔(5分钟)
7. 性能调优参数
num.network.threads=3 # 网络请求处理线程数(根据CPU核心数调整,建议2~4)
num.io.threads=8 # 磁盘IO线程数(建议4~8,处理消息写入/读取)
socket.send.buffer.bytes=102400 # 发送缓冲区大小(100KB,默认即可)
socket.receive.buffer.bytes=102400 # 接收缓冲区大小(100KB,默认即可)
log.flush.interval.messages=10000 # 每10000条消息刷新到磁盘(平衡性能与数据安全性)
log.flush.interval.ms=1000 # 每1秒刷新到磁盘(避免频繁IO)
三、启动Kafka服务
1. 启动Kafka
nohup /opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties >
/dev/null 2>
&
1 &
2. 验证启动状态
ps -ef | grep kafka # 查看Kafka进程是否存在
四、验证Kafka功能
1. 创建测试Topic
/opt/kafka/bin/kafka-topics.sh --create --topic test_topic --bootstrap-server your_server_ip:9092 --partitions 8 --replication-factor 3
2. 发送测试消息
/opt/kafka/bin/kafka-console-producer.sh --topic test_topic --bootstrap-server your_server_ip:9092
在提示符下输入消息(如Hello Kafka)并按回车键发送。
3. 消费测试消息
/opt/kafka/bin/kafka-console-consumer.sh --topic test_topic --from-beginning --bootstrap-server your_server_ip:9092
应能看到发送的Hello Kafka消息。
五、安全配置(可选但推荐)
1. 启用SASL认证
编辑server.properties:
security.inter.broker.protocol=SASL_PLAINTEXT
sasl.enabled.mechanisms=PLAIN
sasl.mechanism.inter.broker.protocol=PLAIN
创建JAAS配置文件/opt/kafka/config/kafka_server_jaas.conf:
KafkaServer {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin-secret"
user_admin="admin-secret"
user_client="client-secret";
}
;
启动Kafka时指定JAAS文件:
export KAFKA_OPTS="-Djava.security.auth.login.config=/opt/kafka/config/kafka_server_jaas.conf"
/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties
2. 配置防火墙
开放Kafka端口(9092)和Zookeeper端口(2181):
sudo firewall-cmd --zone=public --add-port=9092/tcp --permanent
sudo firewall-cmd --zone=public --add-port=2181/tcp --permanent
sudo firewall-cmd --reload
六、生产环境注意事项
- 集群部署:至少部署3个Broker节点,修改每个节点的
broker.id(如0、1、2)和listeners(指向不同IP),并在zookeeper.connect中填写所有Zookeeper节点。 - 监控告警:使用Prometheus+Grafana监控Kafka集群的CPU、内存、磁盘IO、消息堆积等指标,设置告警阈值。
- 数据备份:定期备份
log.dirs中的数据,避免磁盘故障导致数据丢失。 - 日志清理:根据业务需求调整
log.retention.hours,避免日志占用过多磁盘空间。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: kafka于centos怎样精准配置
本文地址: https://pptw.com/jishu/744105.html
