Kafka集群参数配置说明
- Broker 端参数
- Topic 级别参数
- JVM 参数
- 操作系统参数
Broker 端参数
# 指定了 Broker 需要使用的若干个文件目录路径。
# 在线上生产环境中一定要为log.dirs配置多个路径,最好目录挂在到不同的物理磁盘上。
# 1.可以提升读写性能,吞吐量更高。2.实现故障转移功能,将磁盘的数据转移到另一个上。
# 比如/home/kafka/data1,/home/kafka/data2,/home/kafka/data3
log.dirs:
# 单个路径,它是补充上一个参数用的。一般不配置
log.dir:
ZooKeeper 相关的设置
# 2181 是 ZooKeeper的默认端口
zookeeper.connect: zk1:2181,zk2:2181,zk3:2181
# 多个 Kafka 集群使用同一套ZooKeeper 集群,
zookeeper.connect: zk1:2181,zk2:2181,zk3:2181/kafka1
Broker 相关的设置
# 学名叫监听器,其实就是告诉外部连接者要通过什么协议访问指定主机名和端口开放的 Kafka 服务。
listeners:
#listeners 相比多了个advertised。Advertised 的含义表示宣称的、公布的,就是说这组监听器是 Broker 用于对外发布的。
advertised.listeners:
监听器相关的设置
# 它是若干个逗号分隔的三元组,每个三元组的格式为<协议名称,主机名,端口号>。这里的协议名称可能是标准的名字,
# 比如PLAINTEXT 表示明文传输、SSL 表示使用 SSL 或 TLS 加密传输等;也可能是你自己定义的协议名字
CONTROLLER: //localhost:9092。
# 一旦你自己定义了协议名称,你必须还要指定 listener.security.protocol.map参数告诉这个协议底层使用了哪种安全协议(表示CONTROLLER这个自定义协议底层使用明文不加密传输数据。)
listener.security.protocol.map=CONTROLLER:PLAINTEXT
# 最好全部使用主机名,即 Broker 端和 Client端应用配置中全部填写主机名。
Topic 管理配置
# 是否允许自动创建Topic。 参数我建议最好设置成false,即不允许自动创建 Topic。
auto.create.topics.enable:
# 是否允许Unclean Leader 选举。 false 默认是 false,防止数据量少的备份副本进行选举
unclean.leader.election.enable:
# 是否允许定期进行 Leader 选举。 建议设置 false,当一个leader用的好好的要定期强制切换leader也会有很大代价
auto.leader.rebalance.enable:
数据留存配置
# 控制一条消息数据被保存多长时间。从优先级上来说 ms 设置最高、minutes 次之、hour 最低。
# 默认保存 7 天
log.retention.{hour|minutes|ms}:
# 这是指定 Broker 为消息保存的总磁盘容量大小。
# 这个值默认是 -1 ,也就是说多少数据都可以。防止恶意传入数据,还是这只一下最大空间
log.retention.bytes:
# 控制 Broker 能够接收的最大消息大小。
# 默认的 1000012 太少不到1MB ,所以建议扩容
message.max.bytes:
Topic 级别参数
这里开始是在java.util.Properties类中配置
如果同时设置了 Topic 级别参数和全局 Broker 参数, Topic 级别参数会覆盖全局Broker 参数的值。
# 规定了该 Topic 消息被保存的时长。默认是 7 天,它会覆盖掉 Broker 端的全局参数值。
retention.ms
# 规定了要为该 Topic 预留多大的磁盘空间。 默认-1 不做限制
retention.bytes
创建 Topic 时进行设置
修改 Topic 时设置
可以设置他的具体配置
JVM 参数
这里在JVM启动参数中配置
kafka服务端代码是由Scala编写的,scala和java一样需要jvm虚拟机
# 指定堆大小。
KAFKA_HEAP_OPTS=--Xms6g --Xmx6g
# 指定 GC 参数。 XX:+UseParallelGC CPU资源不充裕时使用
KAFKA_JVM_PERFORMANCE_OPTS= -server XX:+UseCurrentMarkSweepGC
操作系统参数
文件描述符限制
文件系统类型
Swappiness
提交时间
ulimit -n
ulimit -n 1000000