集群参数配置
Broker 端参数
- log.dirs:指定了 Broker 需要使用的若干个文件目录路径。这个参数没有默认值,必须亲自指定。
- log.dir:注意这是 dir,结尾没有 s,说明它只能表示单个路径,它是补充上一个参数。
在线上生产环境中一定要为log.dirs配置多个路径,保证这些目录挂载到不同的物理磁盘上。这样做有两个好处:
- 提升读写性能:比起单块磁盘,多块物理磁盘同时读写数据有更高的吞吐量。
- 能够实现故障转移:即 Failover。
ZooKeeper 相关的设置
- zookeeper.connect
Broker 连接
- listeners:监听器,告诉外部连接者要通过什么协议访问指定主机名和端口开放的 Kafka 服务。
- advertised.listeners:这组监听器是 Broker 用于对外发布。
- listener.security.protocol.map:当自定义协议名称时,底层使用了哪种安全协议。
注意:主机名这个设置最好全部使用主机名,而非IP 地址,即 Broker 端和 Client 端应用配置中全部填写主机名。
Topic 管理
- auto.create.topics.enable:是否允许自动创建Topic。建议最好设置成 false,即不允许自动创建 Topic。每个部门被分配的 Topic 应该由运维严格把控,决不能允许自行创建任何 Topic。
- unclean.leader.election.enable:是否允许 Unclean Leader 选举。即副本是否都有资格竞争 Leader。把它设置成 false,避免落后进度太多的副本进行选举。
- auto.leader.rebalance.enable:是否允许定期进行 Leader 选举。换 Leader 本质上没有任何性能收益,设置成 false。
数据留存
-
log.retention.{hour minutes ms}:控制一条消息数据被保存多长时间。从优先级上来说 ms 设置最高、minutes 次之、hour 最低。 - log.retention.bytes:指定 Broker 为消息保存的总磁盘容量大小。
- message.max.bytes:控制 Broker 能够接收的最大消息大小。