Chapter 3. Technology Previews Important Technology Preview features are not supported with Red Hat production service-level agreements (SLAs) and might not be functionally complete; therefore, Red Hat does not recommend implementing any Technology Preview features in production environments. This Technology Preview feature provides early access to upcoming product innovations, enabling you to test functionality and provide feedback during the development process. For more information about support scope, see Technology Preview Features Support Scope . 3.1. Cluster rebalancing with Cruise Control Cruise Control stays in Technology Preview in this release, with some new enhancements . You can now deploy Cruise Control to your AMQ Streams cluster and use it to rebalance the Kafka cluster using optimization goals - predefined constraints on CPU, disk, and network load. In a balanced Kafka cluster, the workload is more evenly distributed across the broker pods. Cruise Control is configured and deployed as part of a Kafka resource. Example YAML configuration files for Cruise Control are provided in examples/cruise-control/ . When Cruise Control is deployed, you can use KafkaRebalance custom resources to: Generate optimization proposals from multiple optimization goals Rebalance a Kafka cluster based on an optimization proposal Other Cruise Control features are not currently supported, including anomaly detection, notifications, write-your-own goals, and changing the topic replication factor. See Cruise Control for cluster rebalancing . 3.1.1. Enhancements to the Technology Preview The following enhancements have been added to the initial Technology Preview of cluster rebalancing with Cruise Control. Rebalance performance tuning Five new performance tuning options allow you to control how cluster rebalances are executed and reduce their performance impact. For each batch of partition reassignment commands that comprise a cluster rebalance, you can configure the following: Maximum concurrent partition movements per broker (the default is 5) Maximum concurrent intra-broker partition movements (the default is 2) Maximum concurrent leader movements (the default is 1000) Bandwidth in bytes-per-second to assign to partition reassignment (the default is no limit) Replica movement strategy (the default is BaseReplicaMovementStrategy ) Previously, AMQ Streams inherited these options from Cruise Control, so their default values could not be adjusted. You can set performance tuning options for the Cruise Control server, individual rebalances, or both. For the Cruise Control server, set options in the Kafka custom resource, under spec.cruiseControl.config . For a cluster rebalance, set options in the spec property of the KafkaRebalance custom resource. See Rebalance performance tuning overview . Exclude topics from optimization proposals You can now exclude one or more topics from an optimization proposal. Those topics are not included in the calculation of partition replica and partition leadership movements for the cluster rebalance. To exclude topics, specify a regular expression matching the topic names in the KafkaRebalance custom resource, in the spec.excludedTopicsRegex property. When viewing a generated optimization proposal, the excludedTopics property shows you the topics that were excluded. See Rebalance performance tuning overview . CPU capacity goal support Rebalancing a Kafka cluster based on CPU capacity is now supported through the following configurations: The CpuCapacityGoal optimization goal The cpuUtilization capacity limit The CPU capacity goal prevents the CPU utilization of each broker from exceeding a maximum percentage threshold. The default threshold is set as 100% of CPU capacity per broker. To reduce the percentage threshold, configure the cpuUtilization capacity limit in the Kafka custom resource. Capacity limits apply to all brokers. CPU capacity is preset as a hard goal in Cruise Control. Therefore, it is inherited from Cruise Control as a hard goal, unless you override the preset hard goals in the hard.goals property in Kafka.spec.cruiseControl.config . Example configuration for CPU capacity goal in a KafkaRebalance custom resource apiVersion: kafka.strimzi.io/v1alpha1 kind: KafkaRebalance metadata: name: my-rebalance labels: strimzi.io/cluster: amq-streams-cluster spec: goals: - CpuCapacityGoal - DiskCapacityGoal #... Example configuration for percentage CPU utilization capacity limit apiVersion: kafka.strimzi.io/v1beta1 kind: Kafka metadata: name: amq-streams-cluster spec: # ... cruiseControl: # ... brokerCapacity: cpuUtilization: 85 disk: 100Gi # ... See Optimization goals overview and Capacity configuration .

Commands:
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/v1beta1 kind: Kafka metadata: name: amq-streams-cluster spec: # cruiseControl: # brokerCapacity: cpuUtilization: 85 disk: 100Gi #