第 3 章 技术预览
技术预览功能不被红帽产品服务级别协议(SLA)支持,且可能无法完成。因此,红帽不推荐在生产环境中实施任何技术预览功能。此技术预览功能为您提供对即将推出的产品创新的早期访问,允许您在开发过程中测试并提供反馈。如需有关支持范围的更多信息,请参阅 技术预览功能支持范围。
3.1. 使用 Cruise Control 进行集群重新平衡
在本版本中,True Control 仍处于技术预览阶段,但有一些新的 增强。
现在,您可以将 Cruise Control 部署到 AMQ Streams 集群,并使用 优化目标 (CPU、磁盘和网络负载的预定义限制)来重新平衡 Kafka 集群。在均衡 Kafka 集群中,工作负载更加均匀地分布在代理 pod 中。
作为 Kafka
资源的一部分,Tithise Control 被配置和部署。Cruise Control 的 YAML 配置文件示例在 example /cruise-control/ 中提供
。
部署 Cruise Control 后,您可以使用 KafkaRebalance
自定义资源:
- 从多个优化目标生成优化效果
- 基于优化建议重新平衡 Kafka 集群
目前不支持其他 Cruise 控制功能,包括异常检测、通知、写入目标以及更改主题复制因素。
请参阅 Cruise Control for cluster 重新平衡。
3.1.1. 技术预览的改进
在使用 Cruise Control 进行集群重新平衡的初始技术预览中添加了以下增强。
重新平衡性能调优
通过五个新的 性能调优选项,您可以控制集群重新平衡的方式,并降低其性能影响。
对于组成集群重新平衡的每个批处理 分区分配命令,您可以配置以下内容:
- 每个代理的最大并发分区移动数(默认值为 5)
- 最大并发分区移动数(默认为 2)
- 最大并发领导移动数(默认为 1000)
- 分配给分区分配的带宽(默认值不是限制)
-
副本移动策略(默认为
BaseReplicaMovementStrategy
)
在以前的版本中,AMQ Streams 从 Cruise Control 中继承这些选项,因此无法调整其默认值。
您可以为 Cruise Control 服务器和/或单独重新平衡设置性能调优选项。
-
对于 Cruise Control 服务器,在
spec.cruiseControl.config
下设置Kafka
自定义资源中的选项。 -
对于集群重新平衡,在
KafkaRebalance
自定义资源的spec
属性中设置选项。
请参阅 重新平衡性能调优概述。
从优化调整中排除主题
现在,您可以在优化建议中排除一个或多个主题。这些主题不包括在计算分区副本和分区领导移动中。
要排除主题,请在 spec.excludedTopics
自定义资源中主题名称匹配的正则表达式。
Regex 属性中指定与 KafkaRe
balance
查看生成的优化建议时,excludeTopics
属性会显示被排除的主题。
请参阅 重新平衡性能调优概述。
CPU 容量目标支持
现在,通过以下配置支持基于 CPU 容量重新平衡 Kafka 集群:
-
CpuCapacityGoal
优化目标 -
cpuUtilization
容量限制
CPU 容量目标可防止每个代理的 CPU 使用率超过最大百分比阈值。默认阈值设置为每个代理的 CPU 容量 100%。
要降低百分比阈值,请在 Kafka
自定义资源中配置 cpuUtilization
容量限制。容量限制适用于所有代理。
CPU 容量被预先设置为 Cruise Control 中的一项困难目标。因此,除非您覆盖 Kafka.spec.cruiseControl.config
中的 hard.goals
属性中预先设置的硬链接,否则它会继承自 Cruise Control。
KafkaRebalance
自定义资源中的 CPU 容量目标配置示例
apiVersion: kafka.strimzi.io/v1alpha1 kind: KafkaRebalance metadata: name: my-rebalance labels: strimzi.io/cluster: amq-streams-cluster spec: goals: - CpuCapacityGoal - DiskCapacityGoal #...
apiVersion: kafka.strimzi.io/v1alpha1
kind: KafkaRebalance
metadata:
name: my-rebalance
labels:
strimzi.io/cluster: amq-streams-cluster
spec:
goals:
- CpuCapacityGoal
- DiskCapacityGoal
#...
CPU 使用率限值配置示例
apiVersion: kafka.strimzi.io/v1beta1 kind: Kafka metadata: name: amq-streams-cluster spec: # ... cruiseControl: # ... brokerCapacity: cpuUtilization: 85 disk: 100Gi # ...
apiVersion: kafka.strimzi.io/v1beta1
kind: Kafka
metadata:
name: amq-streams-cluster
spec:
# ...
cruiseControl:
# ...
brokerCapacity:
cpuUtilization: 85
disk: 100Gi
# ...