如何将Strimzi Cruise Control默认主题副本因子修改为3?
解决Strimzi Cruise Control主题副本因子配置失效问题
原配置问题点
- 重复配置键:
cruise.control.modeltrainingsamples.topic被重复定义两次,第二次赋值直接覆盖了第一次,导致modeltrainingsamples主题的所有配置完全失效。 - 拼写错误:配置里的
modeltraingsamples少了字母i,正确名称应为modeltrainingsamples,这个错误会让Cruise Control无法识别对应主题的配置项。
正确配置方案
1. 更新Kafka CR配置(适用于未创建的主题)
修正拼写和重复键问题后的完整配置如下:
apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: name: my-cluster spec: kafka: version: 3.3.1 replicas: 3 listeners: - name: plain port: 9092 type: internal tls: false - name: tls port: 9093 type: internal tls: true config: offsets.topic.replication.factor: 3 transaction.state.log.replication.factor: 3 transaction.state.log.min.isr: 2 default.replication.factor: 3 min.insync.replicas: 2 inter.broker.protocol.version: "3.3" storage: type: ephemeral zookeeper: replicas: 3 storage: type: ephemeral entityOperator: topicOperator: {} userOperator: {} cruiseControl: config: # Model Training Samples 主题配置 cruise.control.modeltrainingsamples.topic: strimzi.cruisecontrol.modeltrainingsamples cruise.control.modeltrainingsamples.topic.replication.factor: 3 cruise.control.modeltrainingsamples.topic.min.insync.replicas: 2 # Partition Metric Samples 主题配置 cruise.control.partitionmetricsamples.topic: strimzi.cruisecontrol.partitionmetricsamples cruise.control.partitionmetricsamples.topic.replication.factor: 3 cruise.control.partitionmetricsamples.topic.min.insync.replicas: 2
2. 调整已存在主题的副本因子(如果主题已创建)
如果这两个主题已经存在于集群中,上述CR配置不会修改现有主题的副本因子,需要手动执行以下操作:
- 进入任意一个Kafka broker Pod:
kubectl exec -it my-cluster-kafka-0 -- /bin/bash - 使用Kafka命令行工具修改主题副本因子:
# 修改modeltrainingsamples主题 kafka-topics.sh --bootstrap-server localhost:9092 --alter --topic strimzi.cruisecontrol.modeltrainingsamples --replication-factor 3 # 修改partitionmetricsamples主题 kafka-topics.sh --bootstrap-server localhost:9092 --alter --topic strimzi.cruisecontrol.partitionmetricsamples --replication-factor 3 - 验证修改结果:
kafka-topics.sh --bootstrap-server localhost:9092 --describe --topic strimzi.cruisecontrol.modeltrainingsamples kafka-topics.sh --bootstrap-server localhost:9092 --describe --topic strimzi.cruisecontrol.partitionmetricsamples
关键注意事项
- 确保Kafka集群至少有3个broker副本(你的配置中已满足
replicas: 3),否则无法设置副本因子为3。 - 主题副本调整完成后,Cruise Control无需重启即可使用新配置,后续收集的数据会自动使用更新后的主题副本。
内容的提问来源于stack exchange,提问作者andy
相关产品推荐
相关产品推荐

