1. 环境准备:满足Kafka运行的基础条件
JAVA_HOME环境变量(如export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64),通过java -version验证安装。zoo.cfg文件设置dataDir(数据目录)、clientPort(2181)及集群节点信息(server.x=host:2888:3888)。2. 配置文件优化:调整关键参数确保稳定性
server.properties文件,重点配置以下参数:
broker.id:每个Broker的唯一标识(整数,集群内不可重复);listeners:Broker监听的地址和端口(如PLAINTEXT://0.0.0.0:9092,允许所有IP访问;生产环境建议限制为内网IP);advertised.listeners:对外公布的监听地址(如PLAINTEXT://your_domain:9092,客户端通过此地址连接Broker,需与listeners区分);log.dirs:消息日志存储目录(如/opt/kafka/data,建议使用独立磁盘分区,避免与系统文件竞争IO);zookeeper.connect:Zookeeper集群地址(如localhost:2181,集群模式下需列出所有节点,如node1:2181,node2:2181,node3:2181);num.partitions:Topic默认分区数(如3,根据消费者数量调整,建议≥消费者数量以保证并行处理能力);default.replication.factor:Topic默认副本数(如2,生产环境建议≥3,确保数据冗余)。3. 网络与防火墙:保障通信畅通
9092、Zookeeper的2181),以CentOS为例,执行以下命令:sudo firewall-cmd --add-port={9092,2181}/tcp --permanent
sudo firewall-cmd --reload
listeners配置的IP地址正确,且网络接口已启用(如ip a查看接口状态)。若需远程访问,需将advertised.listeners设置为公网IP或域名,并配置DNS解析。4. 权限与用户管理:避免安全风险
kafka),避免使用root运行:sudo useradd -r -s /sbin/nologin kafka
/opt/kafka)、日志目录(如/opt/kafka/data)的所有权赋予kafka用户:sudo chown -R kafka:kafka /opt/kafka
SCRAM-SHA-256)和SSL加密(如TLSv1.2),配置server.properties中的security.inter.broker.protocol、sasl.mechanism.inter.broker.protocol等参数,防止未授权访问。5. 性能优化:提升吞吐量与稳定性
-Xmx4G -Xms4G,避免频繁GC),选择合适的垃圾回收器(如G1GC,适合大内存场景),在kafka-server-start.sh中添加JVM参数:export KAFKA_HEAP_OPTS="-Xmx4G -Xms4G"
export KAFKA_JVM_PERFORMANCE_OPTS="-XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35"
ulimit -n 65536,避免大量连接导致资源耗尽),调整内核参数(如net.core.somaxconn=1024,增加TCP连接队列长度)。6. 高可用性与容灾:保障服务连续性
default.replication.factor≥2(生产环境≥3),确保Topic数据有多个副本分布在不同Broker上,避免单点故障。server.properties中配置broker.rack(如rack1),Kafka会将副本均匀分布在不同的机架上,提高容灾能力。7. 监控与维护:实时掌握集群状态
logrotate工具),设置日志保留时间(如log.retention.hours=168,保留7天),避免日志文件过大占用磁盘空间。kafka-log-dirs工具),备份Zookeeper数据(如/data/zookeeper/data),升级Kafka版本(注意兼容性)。