kafka动态配置详解


kafka-configs.sh 是 Kafka 提供的一个命令行工具,用于管理 Kafka broker、主题 (topic)、消费者组 (consumer group) 等资源的配置。

Broker配置

Broker静态配置

通常情况下,我们会指定config路径下的server.properties 文件的来启动 Broker。
如果要设置 Broker 端的任何参数,我们必须在这个文件中显式地增加一行对应的配置,之后启动 Broker 进程,令参数生效。我们常见的做法是,一次性设置好所有参数之后,再启动 Broker。当后面需要变更任何参数时,我们必须重启 Broker。
在真正的生产环境中,随意重启Broker是不被允许的。所以需要有动态调整Broker参数的方法。

Broker动态配置

参考kafka配置说明,Dynamic Update Mode 列。该列有 3 类值,分别是 read-only、per-broker 和 cluster-wide。

  • read-only。被标记为 read-only 的参数和原来的参数行为一样,只有重启 Broker,才能令修改生效。
  • per-broker。被标记为 per-broker 的参数属于动态参数,修改它之后,只会在对应的 Broker 上生效。
  • cluster-wide。被标记为 cluster-wide 的参数也属于动态参数,修改它之后,会在整个集群范围内生效,也就是说,对所有 Broker 都生效。你也可以为具体的 Broker 修改 cluster-wide 参数。

原文地址

Broker动态配置列表

来自于./bin/kafka-configs.sh --help

                                      For entity-type 'brokers':             
                                       	advertised.listeners                  
                                       	background.threads                    
                                       	compression.type                      
                                       	follower.replication.throttled.rate   
                                       	leader.replication.throttled.rate     
                                       	listener.security.protocol.map        
                                       	listeners                             
                                       	log.cleaner.backoff.ms                
                                       	log.cleaner.dedupe.buffer.size        
                                       	log.cleaner.delete.retention.ms       
                                       	log.cleaner.io.buffer.load.factor     
                                       	log.cleaner.io.buffer.size            
                                       	log.cleaner.io.max.bytes.per.second   
                                       	log.cleaner.max.compaction.lag.ms     
                                       	log.cleaner.min.cleanable.ratio       
                                       	log.cleaner.min.compaction.lag.ms     
                                       	log.cleaner.threads                   
                                       	log.cleanup.policy                    
                                       	log.flush.interval.messages           
                                       	log.flush.interval.ms                 
                                       	log.index.interval.bytes              
                                       	log.index.size.max.bytes              
                                       	log.local.retention.bytes             
                                       	log.local.retention.ms                
                                       	log.message.downconversion.enable     
                                       	log.message.timestamp.after.max.ms    
                                       	log.message.timestamp.before.max.ms   
                                       	log.message.timestamp.difference.max.ms                                   
                                       	log.message.timestamp.type            
                                       	log.preallocate                       
                                       	log.retention.bytes                   
                                       	log.retention.ms                      
                                       	log.roll.jitter.ms                    
                                       	log.roll.ms                           
                                       	log.segment.bytes                     
                                       	log.segment.delete.delay.ms           
                                       	max.connection.creation.rate          
                                       	max.connections                       
                                       	max.connections.per.ip                
                                       	max.connections.per.ip.overrides      
                                       	message.max.bytes                     
                                       	metric.reporters                      
                                       	min.insync.replicas                   
                                       	num.io.threads                        
                                       	num.network.threads                   
                                       	num.recovery.threads.per.data.dir     
                                       	num.replica.fetchers                  
                                       	principal.builder.class               
                                       	producer.id.expiration.ms             
                                       	remote.log.index.file.cache.total.    
                                         size.bytes                           
                                       	replica.alter.log.dirs.io.max.bytes.  
                                         per.second                           
                                       	sasl.enabled.mechanisms               
                                       	sasl.jaas.config                      
                                       	sasl.kerberos.kinit.cmd               
                                       	sasl.kerberos.min.time.before.relogin 
                                       	sasl.kerberos.principal.to.local.rules
                                       	sasl.kerberos.service.name            
                                       	sasl.kerberos.ticket.renew.jitter     
                                       	sasl.kerberos.ticket.renew.window.    
                                         factor                               
                                       	sasl.login.refresh.buffer.seconds     
                                       	sasl.login.refresh.min.period.seconds 
                                       	sasl.login.refresh.window.factor      
                                       	sasl.login.refresh.window.jitter      
                                       	sasl.mechanism.inter.broker.protocol  
                                       	ssl.cipher.suites                     
                                       	ssl.client.auth                       
                                       	ssl.enabled.protocols                 
                                       	ssl.endpoint.identification.algorithm 
                                       	ssl.engine.factory.class              
                                       	ssl.key.password                      
                                       	ssl.keymanager.algorithm              
                                       	ssl.keystore.certificate.chain        
                                       	ssl.keystore.key                      
                                       	ssl.keystore.location                 
                                       	ssl.keystore.password                 
                                       	ssl.keystore.type                     
                                       	ssl.protocol                          
                                       	ssl.provider                          
                                       	ssl.secure.random.implementation      
                                       	ssl.trustmanager.algorithm            
                                       	ssl.truststore.certificates           
                                       	ssl.truststore.location               
                                       	ssl.truststore.password               
                                       	ssl.truststore.type                   
                                       	transaction.partition.verification.   
                                         enable                               
                                       	unclean.leader.election.enable        

Broker动态配置操作

如果要设置 cluster-wide 范围的动态参数,需要显式指定 entity-default

cluster-wide 范围值查看
./bin/kafka-configs.sh --bootstrap-server 192.168.37.10:9092  --entity-type brokers --entity-default   --describe
cluster-wide 范围值 修改
./bin/kafka-configs.sh --bootstrap-server 192.168.37.10:9092  --entity-type brokers --entity-default --alter --add-config unclean.leader.election.enable=true

在这里插入图片描述
从输出来看,我们成功地在全局层面上设置该参数值为 true。注意 sensitive=false 的字眼,它表明我们要调整的参数不是敏感数据。如果我们调整的是类似于密码这样的参数时,该字段就会为 true,表示这属于敏感数据。

per-broker 范围值 查看
./bin/kafka-configs.sh --bootstrap-server 192.168.37.10:9092  --entity-type brokers --entity-name 1 --describe

[root@test-10 kafka_2.13-3.7.0]# ./bin/kafka-configs.sh --bootstrap-server 192.168.37.10:9092 --entity-type brokers --entity-name 1 --describe
Dynamic configs for broker 1 are:

per-broker 范围值 修改
./bin/kafka-configs.sh --bootstrap-server 192.168.37.10:9092  --entity-type brokers --entity-name 1 --alter --add-config unclean.leader.election.enable=false

在这里插入图片描述
这条命令的输出信息很多。我们关注两点即可。

  • 在 Broker 1 层面上,该参数被设置成了 false,这表明命令运行成功了。
  • 从倒数第二行可以看出,在全局层面上,该参数值依然是 true。这表明,我们之前设置的 cluster-wide 范围参数值依然有效。
per-broker 范围值 删除
./bin/kafka-configs.sh --bootstrap-server 192.168.37.10:9092  --entity-type brokers  --entity-name 1  --alter --delete-config unclean.leader.election.enable

在这里插入图片描述

cluster-wide 范围值 删除
./bin/kafka-configs.sh --bootstrap-server 192.168.37.10:9092  --entity-type brokers --entity-default --alter --delete-config unclean.leader.election.enable

在这里插入图片描述

高概率调整配置

  1. log.retention.ms。

修改日志留存时间应该算是一个比较高频的操作,毕竟,我们不可能完美地预估所有业务的消息留存时长。虽然该参数有对应的主题级别参数可以设置,但拥有在全局层面上动态变更的能力,依然是一个很好的功能亮点。

  1. num.io.threads 和 num.network.threads。

这是我们在前面提到的两组线程池。就我个人而言,我觉得这是动态 Broker 参数最实用的场景了。毕竟,在实际生产环境中,Broker 端请求处理能力经常要按需扩容。如果没有动态 Broker 参数,我们是无法做到这一点的。

  1. 与 SSL 相关的参数。

主要是 4 个参数(ssl.keystore.type、ssl.keystore.location、ssl.keystore.password 和 ssl.key.password)。允许动态实时调整它们之后,我们就能创建那些过期时间很短的 SSL 证书。每当我们调整时,Kafka 底层会重新配置 Socket 连接通道并更新 Keystore。新的连接会使用新的 Keystore,阶段性地调整这组参数,有利于增加安全性。

  1. num.replica.fetchers。

这也是我认为的最实用的动态 Broker 参数之一。Follower 副本拉取速度慢,在线上 Kafka 环境中一直是一个老大难的问题。针对这个问题,常见的做法是增加该参数值,确保有充足的线程可以执行 Follower 副本向 Leader 副本的拉取。现在有了动态参数,你不需要再重启 Broker,就能立即在 Follower 端生效,因此我说这是很实用的应用场景。

主题Topic配置

主题Topic动态配置列表

                                         For entity-type 'topics':            
                                       	cleanup.policy                        
                                       	compression.type                      
                                       	delete.retention.ms                   
                                       	file.delete.delay.ms                  
                                       	flush.messages                        
                                       	flush.ms                              
                                       	follower.replication.throttled.       
                                         replicas                             
                                       	index.interval.bytes                  
                                       	leader.replication.throttled.replicas 
                                       	local.retention.bytes                 
                                       	local.retention.ms                    
                                       	max.compaction.lag.ms                 
                                       	max.message.bytes                     
                                       	message.downconversion.enable         
                                       	message.format.version                
                                       	message.timestamp.after.max.ms        
                                       	message.timestamp.before.max.ms       
                                       	message.timestamp.difference.max.ms   
                                       	message.timestamp.type                
                                       	min.cleanable.dirty.ratio             
                                       	min.compaction.lag.ms                 
                                       	min.insync.replicas                   
                                       	preallocate                           
                                       	remote.storage.enable                 
                                       	retention.bytes                       
                                       	retention.ms                          
                                       	segment.bytes                         
                                       	segment.index.bytes                   
                                       	segment.jitter.ms                     
                                       	segment.ms                            
                                       	unclean.leader.election.enable

查看

./bin/kafka-configs.sh --bootstrap-server 192.168.37.10:9092 --entity-type topics --entity-name test-topic --describe

配置

./bin/kafka-configs.sh --bootstrap-server 192.168.37.10:9092 --entity-type topics --entity-name test-topic --alter --add-config retention.ms=43200000

配置后查看效果:
在这里插入图片描述

动态配置存储

zookeeper模式

zookeeper模式的kafka,动态配置保存在zookeeper中。

kraft 模式

基于kraft模式 的kafka 动态配置在 主题 __cluster_metadata 中存储

可以通过 ./bin/kafka-metadata-shell.sh --snapshot data/__cluster_metadata-0/00000000000000000000.log 命令查看
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值