在kafka中,如何将min.insync.replicas=1设置为\u consumer\u offset\u topics?

i34xakig  于 2021-06-04  发布在  Kafka
关注(0)|答案(1)|浏览(1074)

我有一个Kafka经纪人。
my server.properties如下:

offsets.topic.replication.factor=3
default.replication.factor=3
min.insync.replicas=3

我为测试创建了一个主题:

sh kafka-topics.sh --bootstrap-server localhost:9092 --topic test --create replication-factor 1 --config min.insync.replicas=1

主题创建得很好。其描述如下:

Topic: test PartitionCount: 8 ReplicationFactor: 1 Configs: min.insync.replicas=1, segment.bytes=10...
Topic: test Partition: 0 Leader: 1 Replicas: 1 Isr: 1
....

当我的控制台使用者开始工作时,会发生以下错误:

org.apache.kafka.common.errors.NotEnoughReplicasException: The size of the current ISR Set(1) is insufficient to satisfy the min.isr requirement of 3 for partition __ consumer_offsets-1

据我所知,我将min.insync.replicas设置为1,但它只影响数据主题,而不影响消费主题。因此,由于my server.properties具有min.insync.replicase=3设置,因此\u consumer\u offset仍然需要3个副本。
我的理解正确吗??如果是,是否有方法在命令行主题创建中设置\uu consumer\u offset topics的min.insync.replicas?

nlejzf6q

nlejzf6q1#

“我的理解正确吗??”
是的,你的理解是正确的。可以在创建主题时设置配置min.insync.replicas。如果不指定此配置,则将基于代理范围的配置进行设置 min.insync.replicasserver.properties .
如果是,是否有方法在命令行主题创建中设置\uu consumer\u offset topics的min.insync.replicas
作为主题 __consumer_offsets 是一个内部主题,它将自动创建,使用代理范围的默认值。在这种情况下,您需要更改server.properties文件中的配置:

min.insync.replicas=1

据我所知,集群中只有一个代理。所以有默认设置 3 对于配置 offsets.topic.replication.factor , default.replication.factor ,和 min.insync.replicas 将导致依赖于这些代理范围设置的主题出现问题(如您所见)。
请不要在不真正了解影响的情况下更改生产集群上的这些设置。这将对数据和用户组的持久性产生影响,因此将默认值设置为 3 .

相关问题