From abb425391304fc6ab89fdda04d91638f63c09508 Mon Sep 17 00:00:00 2001 From: ShubhamRwt Date: Mon, 14 Jul 2025 17:12:09 +0530 Subject: [PATCH 01/20] Added proposal for self-healing Signed-off-by: ShubhamRwt --- 106-self-healing-feature-in-operator.md | 295 ++++++++++++++++++++++++ images/105-self-healing-flow.png | Bin 0 -> 190795 bytes 2 files changed, 295 insertions(+) create mode 100644 106-self-healing-feature-in-operator.md create mode 100644 images/105-self-healing-flow.png diff --git a/106-self-healing-feature-in-operator.md b/106-self-healing-feature-in-operator.md new file mode 100644 index 00000000..e683f480 --- /dev/null +++ b/106-self-healing-feature-in-operator.md @@ -0,0 +1,295 @@ +# Self Healing using Cruise Control + +This proposal is about adding support for Cruise Control's self-healing capabilities in the Strimzi operator. +When enabled, the Strimzi operator should automatically resolve issues detected by the Anomaly Detector Manager without the need for manual intervention. +Anomalies are detected by Cruise Control using the anomaly detector manager. + +## Current situation + +Even under normal operation, it's common for Kafka clusters to encounter problems such as partition key skew leading to a uneven partition distribution, or hardware issues like as disk failures, which can degrade overall cluster health and performance. +Currently, if we encounter any such scenario we need to fix these issues manually i.e. if there is some goal violation and the cluster is imbalanced then we might instruct Cruise Control to move the partition replicas across the brokers in order to fix the violated goal by using the `KafkaRebalance` custom resource. + +Currently, users can enable anomaly detection and can also [set](https://strimzi.io/docs/operators/latest/full/deploying.html#setting_up_alerts_for_anomaly_detection) the notifier to one of those included with Cruise Control (SelfHealingNotifier, AlertaSelfHealingNotifier, SlackSelfHealingNotifier etc.). +However, self-healing is currently disabled and disallowed in Strimzi. +The `self-healing` properties were disabled since there was investigation missing around how self-healing would act if pods roll in middle of it/rebalance starts in or how the operator would know if self-healing is running or not. + +## Motivation + +Currently, any anomaly that the user is notified about would need to be fixed manually by using the `KafkaRebalance` custom resource. +With smaller clusters, it is feasible to fix things manually. However, for larger ones it can be very time-consuming, or just not feasible, to fix all the anomalies on your own. +It would be useful for users of Strimzi to be able to have these anomalies fixed automatically whenever they are detected. + +### Introduction to Self Healing + +![self-healing flow diagram](images/105-self-healing-flow.png) + +The above flow diagram depicts the self-healing process in Cruise Control. +The anomaly detector manager detects an anomaly (using the detector classes) and forwards it to the notifier. +The notifier classes like `SelfHealingNotifier`, `AlertaSelfHealingNotifier`, `SlackSelfHealingNotifier` etc. provides alerts to the users about the detected anomaly and also returns the action that needs to be taken on the anomaly i.e. whether to fix it, ignore it or delay it. + +#### Anomaly Detector Manager + +The anomaly detector manager helps in detecting the anomalies as well as handling them. +It acts as a coordinator between the detector classes and the classes which will handle resolving the anomalies. +Various detector classes like `GoalViolationDetector`, `DiskFailureDetector`, `KafkaBrokerFailureDetector` etc. are used for the anomaly detection, which runs periodically to check if the cluster has their corresponding anomalies or not. +The frequency of this check can be changed via the `anomaly.detection.interval.ms` configuration. +Detector classes have different mechanisms to detect their corresponding anomalies. +For example, `KafkaBrokerFailureDetector` utilises Kafka Metadata API whereas `DiskFailureDetector` and `TopicAnomalyDetector` utilises Kafka Admin API. +Furthermore, `MetricAnomalyDetector` and `GoalViolationDetector` use metrics to detect their anomalies. +The detected anomalies can be of various types: +* Goal Violation - This happens if certain optimization goals are violated (e.g. DiskUsageDistributionGoal etc.). These goals can be configured through the `self.healing.goals` configuration under the `spec.cruiseControl.config` section. These goals are independent of the manual rebalancing goals configured in the `KafkaRebalance` custom resource. +* Topic Anomaly - Where one or more topics in cluster violates user-defined properties (e.g. some partitions are too large in disk). +* Broker Failure - This happens when a non-empty broker crashes or leaves a cluster. +* Disk Failure - This failure happens if one of the non-empty disks fails (related to a Kafka Cluster with JBOD disks). +* Metric anomaly - This failure happens if metrics collected by Cruise Control have some anomaly in their value (e.g. a sudden rise in the log flush time metrics). + +The detected anomalies are inserted into a priority queue where comparator is based upon the priority value and the detection time. +The smaller the priority value and detected time is, the higher priority the anomaly type has. + +The anomaly detector manager calls the notifier to get an action regarding whether the anomaly should be fixed, delayed, or ignored. +If the action is `FIX`, then the anomaly detector manager calls the classes that are required to resolve the anomaly. + +Anomaly detection also has various [configurations](https://github.com/linkedin/cruise-control/wiki/Configurations#anomalydetector-configurations), such as the detection interval and the anomaly notifier class, which can affect the performance of the Cruise Control server and the latency of the anomaly detection. + +#### Notifiers in Cruise Control + +Whenever anomalies are detected, Cruise Control provides the ability to notify the user regarding the detected anomalies using optional notifier classes. +The notification sent by these classes increases the visibility of the operations that are taken by Cruise Control. +The notifier class used by Cruise Control is configurable and custom notifiers can be used by setting the `anomaly.notifier.class` property. +The notifier class returns the `action` that is going to be taken on the flagged anomaly. +These actions have three types: +* FIX - Start the anomaly fix +* CHECK - Delay the anomaly fix +* IGNORE - Ignore the anomaly fix + +The default `NoopNotifer` always sets the notifier action as `IGNORE`, which means that the detected anomaly will be silently ignored and no notification is sent to the user. + +Cruise Control also provides [custom notifiers](https://github.com/linkedin/cruise-control/wiki/Configure-notifications) like Slack Notifier, Alerta Notifier etc. for notifying users regarding the anomalies. There are multiple other [self-healing notifier](https://github.com/linkedin/cruise-control/wiki/Configurations#selfhealingnotifier-configurations) related configurations you can use to make notifiers more efficient as per the use case. + +#### Self Healing + +If self-healing is enabled, then an action is returned by the notifier to would decide whether the anomaly should be fixed or not. +If the notifier has returned `FIX` as the action then the classes which are responsible for resolving the anomaly would be called. +Each detectable anomaly is handled by a specific detector class which then uses another remediation class to run a fix. +For example, the `GoalViolations` class uses the `RebalanceRunnable` class, the `DiskFailure` class use the `RemoveDisksRunnable` class and so on. +An optimization proposal will then be generated by these `Runnable` classes and that proposal will be applied on the cluster to fix the anomaly. +In case the anomaly detected is unfixable for e.g. violated hard goals that cannot be fixed typically due to lack of physical hardware (insufficient number of racks to satisfy rack awareness, insufficient number of brokers to satisfy Replica Capacity Goal, or insufficient number of resources to satisfy resource capacity goals), the anomaly wouldn't be fixed and the Cruise Control logs will be updated with `self-healing is not possible due to unfixable goals` warning. + +### Proposal + +This proposal allows the users to have their cluster balanced automatically whenever an anomaly is detected by Cruise Control. +To ensure that the operator drives the rebalance we will be leveraging the Cruise Control self-healing mechanism but not completely. +When using self-healing in Cruise Control, the rebalance are triggered automatically in the cluster which means that the operator wouldn't have the information about when a rebalance is happening. +To resolve this issue, we will only make use of the ability of Cruise Control to detect the anomalies and based on the detection, we will then notify the operator to run the rebalance. +Doing this will provide us with following merits: +* ensure that the operator know what is going on in the cluster. +* better debugging. +* to drive the rebalances/fixes from the operator. + +#### `Full` mode in auto-rebalancing feature of Strimzi + +To leverage the above self-healing mechanism, we will be introducing a new mode to the `auto-rebalancing` feature. +The new mode will be called `FULL`, which means that an anomaly was detected and the rebalancing should be applied to the whole cluster +The mode is defined by setting the `spec.cruiseControl.autoRebalance.mode` field as `full` and the corresponding rebalancing configuration is defined as a reference to a "template" `KafkaRebalance` custom resource (read later for more details), by using the `spec.cruiseControl.autoRebalance.template` field as a [LocalObjectReference](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/local-object-reference/). +This field is optional and if not specified, the auto-rebalancing runs with the default Cruise Control configuration. +Once the auto-rebalance with `Full` mode is enabled, self-healing will be enabled and a notifier `AnomalyDetectorNotifier` will be set(default notifier). +This notifier's job will be to update the operator regarding the anomalies being detected so that the operator can trigger a rebalance. +The user can change the default notifier if they want by setting the `anomaly.notifier.class` to point towards their own custom notifier. +With this proposal, we are only going to support the goal-violation anomaly. We plan to implement the same for topic and metrics anomalies as well but for that we will need to understand more on how those anomalies are actually resolved internally in Cruise Control. + +Here is an example of what the configured `Kafka` custom resource could look: + +```yaml +apiVersion: kafka.strimzi.io/v1beta2 +kind: Kafka +metadata: + name: my-cluster +spec: + kafka: + # ... + cruiseControl: + # ... + autoRebalance: + # using the full rebalance mode + - mode: full + template: + name: my-full-rebalance-template +``` + +It is also possible to use the default Cruise Control rebalancing configuration by omitting the `template` field. + +```yaml +apiVersion: kafka.strimzi.io/v1beta2 +kind: Kafka +metadata: + name: my-cluster +spec: + kafka: + # ... + cruiseControl: + # ... + autoRebalance: + # using the default Cruise Control rebalancing configuration + - mode: full +``` + +The auto-rebalance configuration for the `spec.cruiseControl.autoRebalance.template` property in the `Kafka` custom resource is provided through a `KafkaRebalance` custom resource defined as a "template". +That is a `KafkaRebalance` custom resource with the `strimzi.io/rebalance-template: true` annotation set. +When it is created, the `KafkaRebalanceAssemblyOperator` doesn't run any rebalancing. +This is because it doesn't represent an "actual" rebalance request to get an optimization proposal, but it's just the place where configuration related to auto-rebalancing is defined. +The user can specify rebalancing goals and other configuration for rebalancing, within the resource. + +Here is an example template: +```yaml +apiVersion: kafka.strimzi.io/v1beta2 +kind: KafkaRebalance +metadata: + name: my-full-rebalance-template + annotations: + strimzi.io/rebalance-template: "true" # specifies that this KafkaRebalance is a rebalance configuration template +spec: + goals: + - CpuCapacityGoal + - NetworkInboundCapacityGoal + - DiskCapacityGoal + - RackAwareGoal + - MinTopicLeadersPerBrokerGoal + - NetworkOutboundCapacityGoal + - ReplicaCapacityGoal + skipHardGoalCheck: true + # ... other rebalancing related configuration +``` +When the "template" is set the operator automatically creates (or updates) a corresponding "actual" `KafkaRebalance` custom resource based on the "template" when an anomaly is detected and notified by the `AnomalyDetectorNotifier` +The operator copies over goals and rebalancing options from the referenced "template" resource to the "actual" rebalancing one and also adds the `spec.mode` to it. +The "actual" `KafkaRebalance` custom resource will be named as `-auto-rebalancing-full` where the `` part comes from the `metadata.name` in the `Kafka` custom resource, and `full` refers to applying rebalance on all the brokers. + +#### AnomalyDetectorNotifier + +Cruise Control provides the `AnomalyNotifier` interface, which has multiple abstract methods on what to do if certain anomalies are detected. +`SelfHealingNotifier` is the base class that contains the logic of self-healing and override the methods in by implementing the `AnomalyNotifier` interface. +Some of those methods are:`onGoalViolation()`, `onBrokerFailure()`, `onDiskFailure`, `alert()` etc. +The `AnomalyDetectorNotifier` will be based of the `SelfHealingNotifier` class. +The anomalies with smaller priority value and detected time will be considered priority and resolved first. +In case the anomaly is unfixable then they will be ignored. +The `AnomalyDetectorNotifier` will override the `alert()` method and other detector methods of the `SelfHealingNotifier` to ensure that it is able to alert the operator whenever an anomaly is detected. +Upon detection of an anomaly, the notifier would apply `strimzi.io/anomaly-detected: ` annotation on the `Kafka` CR. +Based on the annotation applied from this notifier, the operator will the run the rebalance on the brokers. + +The annotated Kafka resource would look like this: + +```yaml +- apiVersion: kafka.strimzi.io/v1beta2 + kind: Kafka + metadata: + annotations: + strimzi.io/anomaly-detected: "GOAL_VIOLATION" +# ... +``` + +#### Using other notifiers when using `Full` mode + +Users can choose what type of notifier they want Cruise Control to use. +They can use the notifier provided by Cruise Control, such as the `SelfHealingNotifier`, `SlackSelfHealingNotifier`, `AlertaSelfHealingNotifier` and `MSTeamsSelfHealingNotifier` but then the operator wouldn't be handling the rebalance and Cruise Control will be handling the healing instead, since there is no way for the operator to know whether the anomaly was detected and a rebalance is required. + +The users can also implement their own notifiers, but need to make sure that they have some way to let the operator know that an anomaly was detected and rebalance is required(like we do with default `AnomalyDetectorNotifier`), otherwise again the auto-rebalancing would be a no-op since no mode will be set. + +### Auto-rebalancing execution for `Full` mode + +### Auto-rebalancing Finite State Machine (FSM) for `Full` mode + +The auto-rebalancing mechanism runs through a Finite State Machine (FSM) made by the following states: + +* **Idle**: Initial state with a new auto-rebalancing initiated when self-healing was requested. This is also the ending state after an auto-rebalancing completed successfully or failed. +* **RebalanceOnAnomalyDetection**: a rebalancing related to a self-healing of cluster. + +The FSM states' transitions are the following: + +* from **Idle** to: + * **RebalanceOnAnomalyDetection**: if the `strimzi.io/anomaly-detected: ` annotation is applied on the Kafka CR. +* from **RebalanceOnAnomalyDetection**: + * **RebalanceOnScaleUp**: if a rebalancing on scale up is queued and will run if there is no other rebalancing scale down in queue. If a rebalancing scale down is in queue then it will be executed first. + * **RebalanceOnScaleDown**: if a scale down operation was requested, it will run once the full rebalance is completed + * **Idle**: if full rebalance was requested, it was executed and completed successfully or failed. + +On each reconciliation, the logic will be like this: + +1. The `KafkaClusterCreator` creates the `KafkaCluster` instance. +2. The `KafkaAutoRebalancingReconciler.reconcile()` will then check if the annotation `strimzi.io/anomaly-detected: ` is applied on the Kafka CR, if applied then the `Full` rebalance would be performed. + What happens for each reconciliation depends on the auto-rebalancing FSM as well as the "actual" `KafkaRebalance` custom resource status. + +The `KafkaAutoRebalancingReconciler.reconcile()` loads the `Kafka.status.autoRebalance` content: + +* `state`: is the FSM state. +* `lastTransitionTime`: when the transition to that state happened. +* `modes`: sets the mode as `Full` + +Let's see what happens during the auto-rebalancing process when the FSM starts from the **Idle** state and tranistions to **RebalanceOnAnomalyDetection** + +#### Idle + +This state is set since the beginning when a `Kafka` custom resource is created with the `spec.cruiseControl.autoRebalance` field. +It is also the end state of a previous successfully completed or failed auto-rebalancing. +In this state, the operator removes the finalizer and deletes the corresponding "actual" `KafkaRebalance` custom resource. + +#### RebalanceOnAnomalyDetection + +In this state, an anomaly is detected and the annotation `strimzi.io/anomaly-detected: ` is applied on `Kafka` CR + +Check the current `KafkaRebalance` status: + +* if `Ready`, the rebalance was successful. + * if there is a queued rebalancing scale down (`Kafka.status.autoRebalance.modes[remove-brokers]` exists), start the rebalancing scale down and transition to **RebalanceOnScaleDown**. + * if there is a queued rebalancing scale up (`Kafka.status.autoRebalance.modes[add-brokers]` exists), start the rebalancing scale up and transition to **RebalanceOnScaleUp**. + * If no queued rebalancing scale down or scale up, just transition to **Idle**, clean `Kafka.status.autoRebalance.modes`, delete the "actual" `KafkaRebalance` custom resource and remove the annotation . +* if `PendingProposal`, `ProposalReady` or `Rebalancing`, the rebalancing scale up is still running. + * No further actions required. +* if `NotReady` + * the rebalancing failed, transition to **Idle** and also removing the corresponding mode from the status. The operator also deletes the "actual" `KafkaRebalance` custom resource. + +If, during an ongoing auto-rebalancing, the `KafkaRebalance` custom resource is not there anymore on the next reconciliation, it could mean the user deleted it while the operator was stopped/crashed/not running. +In this case, the FSM will assume it as `NotReady` so falling in the last case above. + +## Affected/not affected projects + +This change will affect the Strimzi cluster operator and a new repository named `anomaly-detector-notifier` will be added under the Strimzi organisation. + +## Rejected Alternatives + +### Alternative 1 + +This alternative is about using a Kubernetes custom resource to create a two-way interaction between the operator and Cruise Control. +The idea was to create a Kubernetes custom resource named `KafkaAnomaly` everytime an anomaly was detected. +The user will get updates regarding the anomaly fix through the generated `KafkaAnomaly` resource which would be updated by the operator by requesting the `state` endpoint with `anomaly_detector` and `executor` substates. + +Pros: +* More hold on the self-healing process since everything is driven using the Kafka custom resource. + +Cons: +* Very tight coupling with the operator. +* Would be hard to manage multiple `KafkaAnomaly` custom resources (For example, deletion when anomaly is fixed etc.) + +### Alternative 2 + +This alternative is similar to alternative 1 where we will use a Kubernetes custom resource to create a two-way interaction between the operator and Cruise Control. +The idea was to create a Kubernetes custom resource named `KafkaAnomaly` everytime an anomaly was detected and both the operator and the Notifier would watch the resource for updates. +But with this approach the operator will be responsible to make decision regarding the anomaly should be fixed or not + +Pros: +* Allows the operator to ignore the anomalies is some task is already running in the cluster like rolling, rebalance etc. + +Cons: +* Very tight coupling with the operator. +* Delaying the anomaly detector progress. +* +### Alternative 3 + +This alternative is to let Cruise Control handle the self-healing. +Whenever an anomaly is detected by Cruise Control, our notifier will generate an event to alert the operator that an anomaly was detected in the cluster +But the fix would be run by Cruise Control itself and not the operator + +Pros: +* Loose coupling with the operator +* Faster decison making as Cruise Control runs the fix + +Cons: +* Operator wouldn't play any role in the process diff --git a/images/105-self-healing-flow.png b/images/105-self-healing-flow.png new file mode 100644 index 0000000000000000000000000000000000000000..52845fb09158ef31a5c5200eb94a88937a81a6a5 GIT binary patch literal 190795 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 b?jL60-Z|^w@c8rz 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 z Date: Wed, 23 Jul 2025 13:55:40 +0530 Subject: [PATCH 02/20] Added suggestions by Jakub, Tom and Paolo Signed-off-by: ShubhamRwt --- 106-self-healing-feature-in-operator.md | 336 ++++++++++++++++++------ 1 file changed, 254 insertions(+), 82 deletions(-) diff --git a/106-self-healing-feature-in-operator.md b/106-self-healing-feature-in-operator.md index e683f480..72961593 100644 --- a/106-self-healing-feature-in-operator.md +++ b/106-self-healing-feature-in-operator.md @@ -1,17 +1,8 @@ -# Self Healing using Cruise Control +# Auto-rebalancing on imbalanced cluster -This proposal is about adding support for Cruise Control's self-healing capabilities in the Strimzi operator. -When enabled, the Strimzi operator should automatically resolve issues detected by the Anomaly Detector Manager without the need for manual intervention. -Anomalies are detected by Cruise Control using the anomaly detector manager. - -## Current situation - -Even under normal operation, it's common for Kafka clusters to encounter problems such as partition key skew leading to a uneven partition distribution, or hardware issues like as disk failures, which can degrade overall cluster health and performance. -Currently, if we encounter any such scenario we need to fix these issues manually i.e. if there is some goal violation and the cluster is imbalanced then we might instruct Cruise Control to move the partition replicas across the brokers in order to fix the violated goal by using the `KafkaRebalance` custom resource. - -Currently, users can enable anomaly detection and can also [set](https://strimzi.io/docs/operators/latest/full/deploying.html#setting_up_alerts_for_anomaly_detection) the notifier to one of those included with Cruise Control (SelfHealingNotifier, AlertaSelfHealingNotifier, SlackSelfHealingNotifier etc.). -However, self-healing is currently disabled and disallowed in Strimzi. -The `self-healing` properties were disabled since there was investigation missing around how self-healing would act if pods roll in middle of it/rebalance starts in or how the operator would know if self-healing is running or not. +This proposal is about adding support for auto-rebalancing the Kafka cluster in case it gets imbalanced due to some issues like unevenly distributed replicas or overloaded brokers e.t.c. +When enabled, the Strimzi operator should automatically resolve these issues detected by the Anomaly Detector Manager by running KafkaRebalance via Cruise Control using the KafkaRebalance resource. +Anomalies are detected by Cruise Control using the anomaly detector manager (see section [ Anomaly Detector Manager](./106-self-healing-feature-in-operator.md#anomaly-detector-manager) below for a detailed description). ## Motivation @@ -25,7 +16,7 @@ It would be useful for users of Strimzi to be able to have these anomalies fixed The above flow diagram depicts the self-healing process in Cruise Control. The anomaly detector manager detects an anomaly (using the detector classes) and forwards it to the notifier. -The notifier classes like `SelfHealingNotifier`, `AlertaSelfHealingNotifier`, `SlackSelfHealingNotifier` etc. provides alerts to the users about the detected anomaly and also returns the action that needs to be taken on the anomaly i.e. whether to fix it, ignore it or delay it. +The configured notifiers provides alerts to the users about the detected anomaly and also returns the action that needs to be taken on the anomaly i.e. whether to fix it, ignore it or delay it. #### Anomaly Detector Manager @@ -35,11 +26,11 @@ Various detector classes like `GoalViolationDetector`, `DiskFailureDetector`, `K The frequency of this check can be changed via the `anomaly.detection.interval.ms` configuration. Detector classes have different mechanisms to detect their corresponding anomalies. For example, `KafkaBrokerFailureDetector` utilises Kafka Metadata API whereas `DiskFailureDetector` and `TopicAnomalyDetector` utilises Kafka Admin API. -Furthermore, `MetricAnomalyDetector` and `GoalViolationDetector` use metrics to detect their anomalies. +Furthermore, `MetricAnomalyDetector` use metrics and `GoalViolationDetector` uses the load distribution to detect their anomalies. The detected anomalies can be of various types: -* Goal Violation - This happens if certain optimization goals are violated (e.g. DiskUsageDistributionGoal etc.). These goals can be configured through the `self.healing.goals` configuration under the `spec.cruiseControl.config` section. These goals are independent of the manual rebalancing goals configured in the `KafkaRebalance` custom resource. +* Goal Violation - This happens if certain [optimization goals](https://strimzi.io/docs/operators/in-development/deploying#optimization_goals) are violated (e.g. DiskUsageDistributionGoal etc.). These goals can be configured through the `self.healing.goals` option in Cruise Control configuration. However, this option is forbidden in the `spec.cruiseControl.config` section of the `Kafka` CR. * Topic Anomaly - Where one or more topics in cluster violates user-defined properties (e.g. some partitions are too large in disk). -* Broker Failure - This happens when a non-empty broker crashes or leaves a cluster. +* Broker Failure - This happens when a non-empty broker crashes or leaves a cluster for time for a long time. * Disk Failure - This failure happens if one of the non-empty disks fails (related to a Kafka Cluster with JBOD disks). * Metric anomaly - This failure happens if metrics collected by Cruise Control have some anomaly in their value (e.g. a sudden rise in the log flush time metrics). @@ -72,32 +63,52 @@ If self-healing is enabled, then an action is returned by the notifier to would If the notifier has returned `FIX` as the action then the classes which are responsible for resolving the anomaly would be called. Each detectable anomaly is handled by a specific detector class which then uses another remediation class to run a fix. For example, the `GoalViolations` class uses the `RebalanceRunnable` class, the `DiskFailure` class use the `RemoveDisksRunnable` class and so on. -An optimization proposal will then be generated by these `Runnable` classes and that proposal will be applied on the cluster to fix the anomaly. +An optimization proposal (a collection of replica reassignments and partition leadership changes) will then be generated by these `Runnable` classes and that proposal will be applied on the cluster to fix the anomaly. In case the anomaly detected is unfixable for e.g. violated hard goals that cannot be fixed typically due to lack of physical hardware (insufficient number of racks to satisfy rack awareness, insufficient number of brokers to satisfy Replica Capacity Goal, or insufficient number of resources to satisfy resource capacity goals), the anomaly wouldn't be fixed and the Cruise Control logs will be updated with `self-healing is not possible due to unfixable goals` warning. +## Current situation + +Even under normal operation, it's common for Kafka clusters to encounter problems such as partition key skew leading to an uneven partition distribution, or hardware issues like as disk failures, which can degrade overall cluster health and performance. +Currently, if we encounter any such scenario we need to fix these issues manually i.e. if the cluster is imbalanced then we might instruct Cruise Control to move the partition replicas across the brokers in order to fix the imbalance using the `KafkaRebalance` custom resource. + +Users can currently enable anomaly detection and can also [set](https://strimzi.io/docs/operators/latest/full/deploying.html#setting_up_alerts_for_anomaly_detection) the notifier to one of those included with Cruise Control (SelfHealingNotifier, AlertaSelfHealingNotifier, SlackSelfHealingNotifier etc.). +However, self-healing is disabled and disallowed in Strimzi. +The `self-healing` properties were disabled in Strimzi's Cruise Control integration because, initially, it was not clear how self-healing would act if pods were rolled in middle of rebalances or how Strimzi triggered manual rebalances should interact with Cruise Control triggered self-healing ones. + ### Proposal -This proposal allows the users to have their cluster balanced automatically whenever an anomaly is detected by Cruise Control. -To ensure that the operator drives the rebalance we will be leveraging the Cruise Control self-healing mechanism but not completely. -When using self-healing in Cruise Control, the rebalance are triggered automatically in the cluster which means that the operator wouldn't have the information about when a rebalance is happening. -To resolve this issue, we will only make use of the ability of Cruise Control to detect the anomalies and based on the detection, we will then notify the operator to run the rebalance. +This proposal allows the users to have their cluster balanced automatically whenever the cluster gets imbalanced due to overloaded broker, CPU usage e.t.c. +With self-healing ability of Cruise Control, the rebalances are triggered automatically in the cluster which means that the operator wouldn't have the information about when a rebalance is happening. +To resolve this issue, we will only make use of the ability of Cruise Control to detect the anomalies and based on the detection, we will then notify the operator to run the rebalance using an approach based on the existing auto-rebalance for scaling feature. +We will be using the goal violation anomaly detection related classes in Cruise Control to detect imbalanced cluster. Doing this will provide us with following merits: -* ensure that the operator know what is going on in the cluster. -* better debugging. -* to drive the rebalances/fixes from the operator. +* we will ensure that the operator knows what is going on in the Kafka cluster. +* using the existing `KafkaRebalance` CR system make it easier for users to see what is happening and when, which aids in debugging. +* ensures the operators is in charge of rebalances. -#### `Full` mode in auto-rebalancing feature of Strimzi +### `skew` mode in Strimzi's auto-rebalancing feature -To leverage the above self-healing mechanism, we will be introducing a new mode to the `auto-rebalancing` feature. -The new mode will be called `FULL`, which means that an anomaly was detected and the rebalancing should be applied to the whole cluster -The mode is defined by setting the `spec.cruiseControl.autoRebalance.mode` field as `full` and the corresponding rebalancing configuration is defined as a reference to a "template" `KafkaRebalance` custom resource (read later for more details), by using the `spec.cruiseControl.autoRebalance.template` field as a [LocalObjectReference](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/local-object-reference/). -This field is optional and if not specified, the auto-rebalancing runs with the default Cruise Control configuration. -Once the auto-rebalance with `Full` mode is enabled, self-healing will be enabled and a notifier `AnomalyDetectorNotifier` will be set(default notifier). -This notifier's job will be to update the operator regarding the anomalies being detected so that the operator can trigger a rebalance. -The user can change the default notifier if they want by setting the `anomaly.notifier.class` to point towards their own custom notifier. -With this proposal, we are only going to support the goal-violation anomaly. We plan to implement the same for topic and metrics anomalies as well but for that we will need to understand more on how those anomalies are actually resolved internally in Cruise Control. +The [`auto-rebalancing`](https://strimzi.io/docs/operators/latest/deploying#proc-automating-rebalances-str) feature in Strimzi allows the operator to run a rebalance automatically when a Kafka cluster is scaled up (by adding brokers) or scaled down (by removing brokers). -Here is an example of what the configured `Kafka` custom resource could look: +Auto-rebalancing in Strimzi currently supports two modes: +* add-brokers - auto-rebalancing on scale up +* remove-brokers - auto-rebalancing on scale down + +To leverage the automated rebalance on imbalanced cluster, we will be introducing a new mode to the auto-rebalancing feature. +The new mode will be called `skew`, which means that cluster imbalance was detected and rebalancing should be applied to the all the brokers. +The mode is defined by setting the `spec.cruiseControl.autoRebalance.mode` field as `skew` and the corresponding rebalancing configuration is defined as a reference to a "template" `KafkaRebalance` custom resource, by using the `spec.cruiseControl.autoRebalance.template` field as a [LocalObjectReference](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/local-object-reference/). +This field is optional and if not specified, the auto-rebalancing runs with the default Cruise Control configuration. +To provide user more flexibility, they don't have to configure all the modes for auto-rebalancing. +They can configure auto-rebalance to enable only for their specific case i.e. setting only `skew` mode or other scaling related modes. +Once the auto-rebalance with `skew` mode is enabled, the operator will be ready to trigger auto-rebalance whenever the cluster becomes imbalanced. +To trigger the auto-rebalance, the operator must know that the cluster is imbalanced due to some goal violation anomaly. +We will create our own custom notifier named `AnomalyDetectorNotifier` to do the same. +This notifier's job will be to update the operator regarding the goal violations so that the operator can trigger a rebalance(see section [AnomalyDetectorNotifier](./106-self-healing-feature-in-operator.md#anomalydetectornotifier)) +With this proposal, we are only going to support auto-rebalance on imbalanced cluster. +We also plan to implement the same for topic and metrics related issues, but it will be part of future work since their implementation require different approach. +For example, when dealing with topic related issues, it will require a coordination with topic operator and metrics issues will require coordination with the Kafka apis. + +Here is an example of what the configured `Kafka` custom resource could look like: ```yaml apiVersion: kafka.strimzi.io/v1beta2 @@ -110,10 +121,10 @@ spec: cruiseControl: # ... autoRebalance: - # using the full rebalance mode - - mode: full + # using the skew rebalance mode + - mode: skew template: - name: my-full-rebalance-template + name: my-skew-rebalance-template ``` It is also possible to use the default Cruise Control rebalancing configuration by omitting the `template` field. @@ -130,7 +141,7 @@ spec: # ... autoRebalance: # using the default Cruise Control rebalancing configuration - - mode: full + - mode: skew ``` The auto-rebalance configuration for the `spec.cruiseControl.autoRebalance.template` property in the `Kafka` custom resource is provided through a `KafkaRebalance` custom resource defined as a "template". @@ -144,7 +155,7 @@ Here is an example template: apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaRebalance metadata: - name: my-full-rebalance-template + name: my-skew-rebalance-template annotations: strimzi.io/rebalance-template: "true" # specifies that this KafkaRebalance is a rebalance configuration template spec: @@ -161,90 +172,251 @@ spec: ``` When the "template" is set the operator automatically creates (or updates) a corresponding "actual" `KafkaRebalance` custom resource based on the "template" when an anomaly is detected and notified by the `AnomalyDetectorNotifier` The operator copies over goals and rebalancing options from the referenced "template" resource to the "actual" rebalancing one and also adds the `spec.mode` to it. -The "actual" `KafkaRebalance` custom resource will be named as `-auto-rebalancing-full` where the `` part comes from the `metadata.name` in the `Kafka` custom resource, and `full` refers to applying rebalance on all the brokers. +The generated `KafkaRebalance` custom resource will be called `-auto-rebalancing-skew-anomalyId`, where the `` part comes from the `metadata.name` in the `Kafka` custom resource, and `skew` refers to applying the rebalance to all the brokers and the anomalyId would be retrieved from the notifier. + +```yaml +apiVersion: kafka.strimzi.io/v1beta2 +kind: KafkaRebalance +metadata: + name: my-cluster-auto-rebalancing-add-brokers + finalizers: + - strimzi.io/auto-rebalancing +spec: + mode: skew + goals: + - CpuCapacityGoal + - NetworkInboundCapacityGoal + - DiskCapacityGoal + - RackAwareGoal + - MinTopicLeadersPerBrokerGoal + - NetworkOutboundCapacityGoal + - ReplicaCapacityGoal + skipHardGoalCheck: true + # ... other rebalancing related configuration +``` + +The operator also sets a finalizer, named `strimzi.io/auto-rebalancing`, on the "actual" `KafkaRebalance` custom resource. +This is needed to avoid the user, or any other tooling, to delete the resource while the auto-rebalancing is still running. +The finalizer is removed at the end of the auto-rebalancing process, with or without errors, allowing the "actual" `KafkaRebalance` custom resource deletion by the operator itself. #### AnomalyDetectorNotifier Cruise Control provides the `AnomalyNotifier` interface, which has multiple abstract methods on what to do if certain anomalies are detected. -`SelfHealingNotifier` is the base class that contains the logic of self-healing and override the methods in by implementing the `AnomalyNotifier` interface. Some of those methods are:`onGoalViolation()`, `onBrokerFailure()`, `onDiskFailure`, `alert()` etc. -The `AnomalyDetectorNotifier` will be based of the `SelfHealingNotifier` class. +The `AnomalyDetectorNotifier` will be based of the `AnomalyNotifier` class. The anomalies with smaller priority value and detected time will be considered priority and resolved first. -In case the anomaly is unfixable then they will be ignored. -The `AnomalyDetectorNotifier` will override the `alert()` method and other detector methods of the `SelfHealingNotifier` to ensure that it is able to alert the operator whenever an anomaly is detected. -Upon detection of an anomaly, the notifier would apply `strimzi.io/anomaly-detected: ` annotation on the `Kafka` CR. -Based on the annotation applied from this notifier, the operator will the run the rebalance on the brokers. +In case the anomaly is unfixable due to issues like lack of physical hardware (e.g. insufficient number of racks to satisfy rack awareness, insufficient number of brokers to satisfy ReplicaCapacityGoal, or insufficient number of resources to satisfy resource capacity goals), then they will be ignored. +The `AnomalyDetectorNotifier` will override all the abstract methods provided by the `AnomalyNotifier` interface. +We will add an `alert` method which will alert the operator whenever an anomaly is detected by the operator. +Upon detection of an anomaly, the notifier would create a configmap with name set as `goal-violation` followed by `anomalyId`. -The annotated Kafka resource would look like this: +The ConfigMap would look like this: ```yaml -- apiVersion: kafka.strimzi.io/v1beta2 - kind: Kafka - metadata: - annotations: - strimzi.io/anomaly-detected: "GOAL_VIOLATION" +kind: ConfigMap +apiVersion: v1 +metadata: + name: goal-violation- +data: + anomalyType: GOAL_VIOLATION + anomalyId: "" + detectionTime: "" # ... ``` -#### Using other notifiers when using `Full` mode +The operator will then check if any configmap with prefix `goal-violation` is created or not, if it finds one created then operator will trigger the rebalance. +Separate configmaps would be created for every goal violation such that on completion of the rebalance we can remove the particular configmap. +The merits of using a separate configmap are: +1. Every anomaly would have a separate place to put their data in. +2. Better readability. +3. Improves scope for future improvement when dealing with different violation, for example topic or metrics related violations. + +#### Using other notifiers when using `skew` mode + +Users cannot configure the notifier if they are utilising the auto-rebalance on imbalanced cluster. +This is because the operator is using our custom notifier for getting alerts about goal violations. +If the users try to override the notifier while the `skew` mode is enabled, the auto-rebalance `skew` configuration then the operator would throw errors in the auto-rebalance status field + +If the users really want to have their own way of dealing with the imbalanced clusters then they can just disable auto-rebalance in `skew` mode and use their own notifier. + +#### What happens if some unfixable goal violation happens +In case, there is an unfixable goal violation then the notifier would simply ignore that anomaly and prompt the user about the unfixable violation in the auto-rebalancing status section. -Users can choose what type of notifier they want Cruise Control to use. -They can use the notifier provided by Cruise Control, such as the `SelfHealingNotifier`, `SlackSelfHealingNotifier`, `AlertaSelfHealingNotifier` and `MSTeamsSelfHealingNotifier` but then the operator wouldn't be handling the rebalance and Cruise Control will be handling the healing instead, since there is no way for the operator to know whether the anomaly was detected and a rebalance is required. +#### What happens if same anomaly is detected again while the auto-rebalance is happening +Since the cluster operator has the knowledge regarding the detected violation, we will ignore the anomalies while the rebalancing is happening. In case the anomaly still exists after the rebalance, Cruise Control will detect it again and a new rebalance would be triggered -The users can also implement their own notifiers, but need to make sure that they have some way to let the operator know that an anomaly was detected and rebalance is required(like we do with default `AnomalyDetectorNotifier`), otherwise again the auto-rebalancing would be a no-op since no mode will be set. +### Auto-rebalancing execution for `skew` mode -### Auto-rebalancing execution for `Full` mode +### Auto-rebalancing Finite State Machine (FSM) for `skew` mode -### Auto-rebalancing Finite State Machine (FSM) for `Full` mode +Currently, the auto-rebalancing mechanism runs through a Finite State Machine (FSM) made by the following states: -The auto-rebalancing mechanism runs through a Finite State Machine (FSM) made by the following states: +* **Idle**: Initial state with a new auto-rebalancing initiated when scaling down/up operations were requested. This is also the ending state after an auto-rebalancing completed successfully or failed. +* **RebalanceOnScaleDown**: a rebalancing related to a scale down operation is running. +* **RebalanceOnScaleUp**: a rebalancing related to a scale up operation is running. -* **Idle**: Initial state with a new auto-rebalancing initiated when self-healing was requested. This is also the ending state after an auto-rebalancing completed successfully or failed. -* **RebalanceOnAnomalyDetection**: a rebalancing related to a self-healing of cluster. +With the new `skew` mode, we will be introducing a new state to the FSM called `RebalanceOnAnomalyDetection`. +This state will be related to rebalances related to imbalanced cluster. -The FSM states' transitions are the following: +With the new `skew` mode, the FSM state transitions would look something like this: +```mermaid +flowchart TB + A[Idle] --scaleDown requested--> B[RebalanceOnScaleDown] + A[Idle] --scaleUp requested --> C[RebalanceOnScaleUp] + A[Idle] --imbalanced cluster detected --> D[RebalanceOnAnomalyDetection] +``` * from **Idle** to: - * **RebalanceOnAnomalyDetection**: if the `strimzi.io/anomaly-detected: ` annotation is applied on the Kafka CR. + * **RebalanceOnScaleDown**: if a scale down operation was requested. This transition happens even if a scale up was requested at the same time but the rebalancing on scaling down has the precedence. The rebalancing on scale up is queued. They will run sequentially. + * **RebalanceOnScaleUp**: if only a scale up operation was requested. There was no scale down operation requested. + * **RebalanceOnAnomalyDetection**: if a configmap related to goal violation was detected and a complete rebalance was requested. + +```mermaid +sequenceDiagram + autonumber + RebalanceOnScaleDown->>RebalanceOnScaleDown: queued scale down + RebalanceOnScaleDown->>RebalanceOnScaleUp: queued scale up + RebalanceOnScaleDown->>RebalanceOnAnomalyDetection: queued skew rebalance + critical queued scale down and skew rebalance + RebalanceOnScaleDown->>RebalanceOnScaleDown: execute scale down + RebalanceOnScaleDown-->>RebalanceOnAnomalyDetection: then skew rebalance + end + critical queued scale up and scale down + RebalanceOnScaleDown->>RebalanceOnScaleDown: execute scale down + RebalanceOnScaleDown-->>RebalanceOnScaleUp: then scale up + end + critical queued scale down and scale up and skew rebalance + RebalanceOnScaleDown->>RebalanceOnScaleDown: execute scale down + RebalanceOnScaleDown-->>RebalanceOnScaleUp: then scale up + RebalanceOnScaleUp-->>RebalanceOnAnomalyDetection: then skew rebalance + end + RebalanceOnScaleDown->>Idle: scale down complete with no queued items +``` + +* from **RebalanceOnScaleDown** to: + * **RebalanceOnScaleDown**: if a rebalancing on scale down is still running or another one was requested while the first one ended. + * **RebalanceOnScaleUp**: if a scale down operation was requested together with a scale up and, because they run sequentially, the rebalance on scale down had the precedence, was executed first and completed successfully. We can now move on with rebalancing for the scale up. + * **RebalanceOnAnomalyDetection**: if a configmap related to goal violation was detected. It will run once the queued scale down and scale up is completed + * **Idle**: if only a scale down operation was requested, it was executed and completed successfully or failed. + +```mermaid +sequenceDiagram + autonumber + RebalanceOnScaleUp->>RebalanceOnScaleDown: queued scale down + RebalanceOnScaleUp->>RebalanceOnScaleUp: queued scale up + RebalanceOnScaleUp->>RebalanceOnAnomalyDetection: queued skew rebalance + critical queued scale up and skew rebalance + RebalanceOnScaleUp->>RebalanceOnScaleUp: execute scale down + RebalanceOnScaleUp-->>RebalanceOnAnomalyDetection: then skew rebalance + end + critical queued scale up and scale down + RebalanceOnScaleUp->>RebalanceOnScaleDown: execute scale down + RebalanceOnScaleUp-->>RebalanceOnScaleUp: then scale up + end + critical queued scale down and scale up and skew rebalance + RebalanceOnScaleUp->>RebalanceOnScaleDown: execute scale down + RebalanceOnScaleDown-->>RebalanceOnScaleUp: then scale up + RebalanceOnScaleUp-->>RebalanceOnAnomalyDetection: then skew rebalance + end + RebalanceOnScaleUp->>Idle: scale up complete with no queued items +``` + +* from **RebalanceOnScaleUp**: + * **RebalanceOnScaleUp**: if a rebalancing on scale up is still running or another one was requested while the first one ended. + * **RebalanceOnScaleDown**: if a scale down operation was requested, so the current rebalancing scale up is stopped (and queued) and a new rebalancing scale down is started. The rebalancing scale up will be postponed. + * **RebalanceOnAnomalyDetection**: if a configmap related to goal violation was detected. It will run once the queued scale down and scale up is completed. + * **Idle**: if a scale up operation was requested, it was executed and completed successfully or failed. + +```mermaid +sequenceDiagram + autonumber + RebalanceOnAnomalyDetection->>RebalanceOnScaleDown: queued scale down + RebalanceOnAnomalyDetection->>RebalanceOnScaleUp: queued scale up + RebalanceOnAnomalyDetection->>RebalanceOnAnomalyDetection: queued skew rebalance + critical queued scale up and skew rebalance + RebalanceOnAnomalyDetection->>RebalanceOnScaleUp: execute scale up + RebalanceOnScaleUp-->>RebalanceOnAnomalyDetection: then skew rebalance + end + critical queued scale down and skew rebalance + RebalanceOnAnomalyDetection->>RebalanceOnScaleDown: execute scale down + RebalanceOnScaleDown-->>RebalanceOnAnomalyDetection: then skew rebalance + end + critical queued scale down and scale up and skew rebalance + RebalanceOnAnomalyDetection->>RebalanceOnScaleDown: execute scale down + RebalanceOnScaleDown-->>RebalanceOnScaleUp: then scale up + RebalanceOnScaleUp-->>RebalanceOnAnomalyDetection: then skew rebalance + end + RebalanceOnAnomalyDetection->>Idle: scale up complete with no queued items +``` * from **RebalanceOnAnomalyDetection**: + * **RebalanceOnAnomalyDetection**: if another goal violation was detected while the first one ended. If a scale down and scale up is also queued up then they will execute first. * **RebalanceOnScaleUp**: if a rebalancing on scale up is queued and will run if there is no other rebalancing scale down in queue. If a rebalancing scale down is in queue then it will be executed first. - * **RebalanceOnScaleDown**: if a scale down operation was requested, it will run once the full rebalance is completed - * **Idle**: if full rebalance was requested, it was executed and completed successfully or failed. - -On each reconciliation, the logic will be like this: + * **RebalanceOnScaleDown**: if a scale down operation was requested, it will run once the skew rebalance is completed + * **Idle**: if skew rebalance was requested, it was executed and completed successfully or failed. + +On each reconciliation, the following process will be used: + +```mermaid +flowchart TB + A[KafkaClusterCreator] --creates--> B[KafkaCluster] + B -- calls --> D[KafkaAutoRebalancingReconciler.reconcile] + D -- check for configmap with goal-violation prefix --> E{if config map present?} + D -- if rebalance in progress --> F[ignore new configmaps and delete them] + E -- yes --> G[Trigger auto-rebalance] + E -- no --> H[No operation] +``` 1. The `KafkaClusterCreator` creates the `KafkaCluster` instance. -2. The `KafkaAutoRebalancingReconciler.reconcile()` will then check if the annotation `strimzi.io/anomaly-detected: ` is applied on the Kafka CR, if applied then the `Full` rebalance would be performed. - What happens for each reconciliation depends on the auto-rebalancing FSM as well as the "actual" `KafkaRebalance` custom resource status. +2. The `KafkaAutoRebalancingReconciler.reconcile()` will then check if there was any configmap created with `goal-violation` as prefix, if created, then the `skew` rebalance would be performed. +3. In case, a rebalance is already ongoing and another configmap related to goal violation is detected, then the operator will just ignore the configmap and delete it. The `KafkaAutoRebalancingReconciler.reconcile()` loads the `Kafka.status.autoRebalance` content: * `state`: is the FSM state. * `lastTransitionTime`: when the transition to that state happened. -* `modes`: sets the mode as `Full` +* `modes`: sets the mode as `skew` + +The FSM is initialized based on the `state` field. -Let's see what happens during the auto-rebalancing process when the FSM starts from the **Idle** state and tranistions to **RebalanceOnAnomalyDetection** +Let's see what happens during the auto-rebalancing process when the FSM starts from the **Idle** state and transitions to **RebalanceOnAnomalyDetection** #### Idle This state is set since the beginning when a `Kafka` custom resource is created with the `spec.cruiseControl.autoRebalance` field. It is also the end state of a previous successfully completed or failed auto-rebalancing. +In case of successful completion, once the rebalance moves to `Ready` state, we will delete the KafkaRebalance and the configmap associated with the rebalance by matching the `anomalyId` suffix in their names and then update the `auto-rebalance` state to `Idle`. +In case of failed auto-rebalancing, once the rebalance moves to `NotReady` state, we will foloow the same procedure we used in successful completion. In this state, the operator removes the finalizer and deletes the corresponding "actual" `KafkaRebalance` custom resource. #### RebalanceOnAnomalyDetection -In this state, an anomaly is detected and the annotation `strimzi.io/anomaly-detected: ` is applied on `Kafka` CR +In this state, an anomaly was detected and a corresponding configmap was generated by the notifier. + + A KafkaRebalance resource will now be applied to the cluster to fix the imbalanced cluster. This kafka rebalance will be based on the template provided by the user, if no template is provided then the kafkaRebalance will be created with default configurations. + +```mermaid +flowchart TB + A[KafkaRebalanceState] --> B{if state} + B --> C[Ready] + C -- queued scale Down --> D[RebalanceOnScaleDown] + C -- queued scale up --> E[RebalanceOnScaleUp] + C -- queued rebalance --> F[RebalanceOnAnomalyDetection] + B --> G[`PendingProposal`, `ProposalReady` or `Rebalancing`] + G --> H{{rebalancing is running}} + B --> I[NotReady] + I --> J{{Transition to Idle state and delete rebalance resource and configmap}} +``` -Check the current `KafkaRebalance` status: +Checking the current `KafkaRebalance` status: * if `Ready`, the rebalance was successful. * if there is a queued rebalancing scale down (`Kafka.status.autoRebalance.modes[remove-brokers]` exists), start the rebalancing scale down and transition to **RebalanceOnScaleDown**. * if there is a queued rebalancing scale up (`Kafka.status.autoRebalance.modes[add-brokers]` exists), start the rebalancing scale up and transition to **RebalanceOnScaleUp**. - * If no queued rebalancing scale down or scale up, just transition to **Idle**, clean `Kafka.status.autoRebalance.modes`, delete the "actual" `KafkaRebalance` custom resource and remove the annotation . -* if `PendingProposal`, `ProposalReady` or `Rebalancing`, the rebalancing scale up is still running. + * If no queued rebalancing scale down or scale up, just transition to **Idle**, clean `Kafka.status.autoRebalance.modes`, delete the "actual" `KafkaRebalance` custom resource and also the configmap that triggered the rebalance by matching the `anomalyId` suffix in their names. +* if `PendingProposal`, `ProposalReady` or `Rebalancing`, the rebalancing is still running. * No further actions required. * if `NotReady` - * the rebalancing failed, transition to **Idle** and also removing the corresponding mode from the status. The operator also deletes the "actual" `KafkaRebalance` custom resource. + * the rebalancing failed, transition to **Idle** and also removing the corresponding mode from the status. The operator also deletes the "actual" `KafkaRebalance` custom resource and the configmap associated with it. If, during an ongoing auto-rebalancing, the `KafkaRebalance` custom resource is not there anymore on the next reconciliation, it could mean the user deleted it while the operator was stopped/crashed/not running. In this case, the FSM will assume it as `NotReady` so falling in the last case above. @@ -255,7 +427,7 @@ This change will affect the Strimzi cluster operator and a new repository named ## Rejected Alternatives -### Alternative 1 +### Using custom resource for interaction between Operator and Cruise Control I This alternative is about using a Kubernetes custom resource to create a two-way interaction between the operator and Cruise Control. The idea was to create a Kubernetes custom resource named `KafkaAnomaly` everytime an anomaly was detected. @@ -268,7 +440,7 @@ Cons: * Very tight coupling with the operator. * Would be hard to manage multiple `KafkaAnomaly` custom resources (For example, deletion when anomaly is fixed etc.) -### Alternative 2 +### Using custom resource for interaction between Operator and Cruise Control II This alternative is similar to alternative 1 where we will use a Kubernetes custom resource to create a two-way interaction between the operator and Cruise Control. The idea was to create a Kubernetes custom resource named `KafkaAnomaly` everytime an anomaly was detected and both the operator and the Notifier would watch the resource for updates. @@ -280,8 +452,8 @@ Pros: Cons: * Very tight coupling with the operator. * Delaying the anomaly detector progress. -* -### Alternative 3 + +### Using Kubernetes Events but Cruise Control controls auto-rebalance This alternative is to let Cruise Control handle the self-healing. Whenever an anomaly is detected by Cruise Control, our notifier will generate an event to alert the operator that an anomaly was detected in the cluster @@ -292,4 +464,4 @@ Pros: * Faster decison making as Cruise Control runs the fix Cons: -* Operator wouldn't play any role in the process +* Operator wouldn't play any role in the process \ No newline at end of file From bf1e9520943dde712f865b061c0285d89a989abc Mon Sep 17 00:00:00 2001 From: ShubhamRwt Date: Wed, 23 Jul 2025 14:16:38 +0530 Subject: [PATCH 03/20] Updated the heading Signed-off-by: ShubhamRwt --- ... => 106-auto-rebalance-on-imbalanced-clusters.md | 12 ++++++------ ...f-healing-flow.png => 106-self-healing-flow.png} | Bin 2 files changed, 6 insertions(+), 6 deletions(-) rename 106-self-healing-feature-in-operator.md => 106-auto-rebalance-on-imbalanced-clusters.md (98%) rename images/{105-self-healing-flow.png => 106-self-healing-flow.png} (100%) diff --git a/106-self-healing-feature-in-operator.md b/106-auto-rebalance-on-imbalanced-clusters.md similarity index 98% rename from 106-self-healing-feature-in-operator.md rename to 106-auto-rebalance-on-imbalanced-clusters.md index 72961593..a3a5d775 100644 --- a/106-self-healing-feature-in-operator.md +++ b/106-auto-rebalance-on-imbalanced-clusters.md @@ -1,8 +1,8 @@ -# Auto-rebalancing on imbalanced cluster +# Auto-rebalance on imbalanced clusters This proposal is about adding support for auto-rebalancing the Kafka cluster in case it gets imbalanced due to some issues like unevenly distributed replicas or overloaded brokers e.t.c. When enabled, the Strimzi operator should automatically resolve these issues detected by the Anomaly Detector Manager by running KafkaRebalance via Cruise Control using the KafkaRebalance resource. -Anomalies are detected by Cruise Control using the anomaly detector manager (see section [ Anomaly Detector Manager](./106-self-healing-feature-in-operator.md#anomaly-detector-manager) below for a detailed description). +Anomalies are detected by Cruise Control using the anomaly detector manager (see section [ Anomaly Detector Manager](./106-auto-rebalance-on-imbalanced-clusters.md#anomaly-detector-manager) below for a detailed description). ## Motivation @@ -12,7 +12,7 @@ It would be useful for users of Strimzi to be able to have these anomalies fixed ### Introduction to Self Healing -![self-healing flow diagram](images/105-self-healing-flow.png) +![self-healing flow diagram](images/106-self-healing-flow.png) The above flow diagram depicts the self-healing process in Cruise Control. The anomaly detector manager detects an anomaly (using the detector classes) and forwards it to the notifier. @@ -81,7 +81,7 @@ This proposal allows the users to have their cluster balanced automatically when With self-healing ability of Cruise Control, the rebalances are triggered automatically in the cluster which means that the operator wouldn't have the information about when a rebalance is happening. To resolve this issue, we will only make use of the ability of Cruise Control to detect the anomalies and based on the detection, we will then notify the operator to run the rebalance using an approach based on the existing auto-rebalance for scaling feature. We will be using the goal violation anomaly detection related classes in Cruise Control to detect imbalanced cluster. -Doing this will provide us with following merits: +Doing this will provide us with the following advantages: * we will ensure that the operator knows what is going on in the Kafka cluster. * using the existing `KafkaRebalance` CR system make it easier for users to see what is happening and when, which aids in debugging. * ensures the operators is in charge of rebalances. @@ -103,7 +103,7 @@ They can configure auto-rebalance to enable only for their specific case i.e. se Once the auto-rebalance with `skew` mode is enabled, the operator will be ready to trigger auto-rebalance whenever the cluster becomes imbalanced. To trigger the auto-rebalance, the operator must know that the cluster is imbalanced due to some goal violation anomaly. We will create our own custom notifier named `AnomalyDetectorNotifier` to do the same. -This notifier's job will be to update the operator regarding the goal violations so that the operator can trigger a rebalance(see section [AnomalyDetectorNotifier](./106-self-healing-feature-in-operator.md#anomalydetectornotifier)) +This notifier's job will be to update the operator regarding the goal violations so that the operator can trigger a rebalance(see section [AnomalyDetectorNotifier](./106-auto-rebalance-on-imbalanced-clusters.md#anomalydetectornotifier)) With this proposal, we are only going to support auto-rebalance on imbalanced cluster. We also plan to implement the same for topic and metrics related issues, but it will be part of future work since their implementation require different approach. For example, when dealing with topic related issues, it will require a coordination with topic operator and metrics issues will require coordination with the Kafka apis. @@ -226,7 +226,7 @@ data: The operator will then check if any configmap with prefix `goal-violation` is created or not, if it finds one created then operator will trigger the rebalance. Separate configmaps would be created for every goal violation such that on completion of the rebalance we can remove the particular configmap. -The merits of using a separate configmap are: +The advantages of using a separate configmap for every anomaly are: 1. Every anomaly would have a separate place to put their data in. 2. Better readability. 3. Improves scope for future improvement when dealing with different violation, for example topic or metrics related violations. diff --git a/images/105-self-healing-flow.png b/images/106-self-healing-flow.png similarity index 100% rename from images/105-self-healing-flow.png rename to images/106-self-healing-flow.png From a8ce3656804c072d07305311b72f41baf03d2478 Mon Sep 17 00:00:00 2001 From: ShubhamRwt Date: Thu, 24 Jul 2025 13:00:39 +0530 Subject: [PATCH 04/20] Added future scope section Signed-off-by: ShubhamRwt --- 106-auto-rebalance-on-imbalanced-clusters.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/106-auto-rebalance-on-imbalanced-clusters.md b/106-auto-rebalance-on-imbalanced-clusters.md index a3a5d775..a0079b05 100644 --- a/106-auto-rebalance-on-imbalanced-clusters.md +++ b/106-auto-rebalance-on-imbalanced-clusters.md @@ -401,7 +401,7 @@ flowchart TB C -- queued scale Down --> D[RebalanceOnScaleDown] C -- queued scale up --> E[RebalanceOnScaleUp] C -- queued rebalance --> F[RebalanceOnAnomalyDetection] - B --> G[`PendingProposal`, `ProposalReady` or `Rebalancing`] + B --> G[PendingProposal, ProposalReady or Rebalancing] G --> H{{rebalancing is running}} B --> I[NotReady] I --> J{{Transition to Idle state and delete rebalance resource and configmap}} @@ -464,4 +464,8 @@ Pros: * Faster decison making as Cruise Control runs the fix Cons: -* Operator wouldn't play any role in the process \ No newline at end of file +* Operator wouldn't play any role in the process + +## Future Scope +In the future, we plan to introduce auto-rebalance for topic and metrics related imbalances. +AS this feature evolves we can even think of having ways to fix issue like disk failure and broker failures automatically since the fix would be driven by the operator. \ No newline at end of file From cc481175359df73504bfa4639057b153a922c1ec Mon Sep 17 00:00:00 2001 From: ShubhamRwt Date: Tue, 16 Sep 2025 16:08:54 +0530 Subject: [PATCH 05/20] Added suggestions made on the proposal Signed-off-by: ShubhamRwt --- 106-auto-rebalance-on-imbalanced-clusters.md | 247 ++++++++++--------- 1 file changed, 132 insertions(+), 115 deletions(-) diff --git a/106-auto-rebalance-on-imbalanced-clusters.md b/106-auto-rebalance-on-imbalanced-clusters.md index a0079b05..ec04b69f 100644 --- a/106-auto-rebalance-on-imbalanced-clusters.md +++ b/106-auto-rebalance-on-imbalanced-clusters.md @@ -1,22 +1,23 @@ # Auto-rebalance on imbalanced clusters -This proposal is about adding support for auto-rebalancing the Kafka cluster in case it gets imbalanced due to some issues like unevenly distributed replicas or overloaded brokers e.t.c. -When enabled, the Strimzi operator should automatically resolve these issues detected by the Anomaly Detector Manager by running KafkaRebalance via Cruise Control using the KafkaRebalance resource. -Anomalies are detected by Cruise Control using the anomaly detector manager (see section [ Anomaly Detector Manager](./106-auto-rebalance-on-imbalanced-clusters.md#anomaly-detector-manager) below for a detailed description). +This proposal is for adding a support for auto-rebalancing a Kafka cluster when it gets imbalanced due to unevenly distributed replicas or overloaded brokers etc. +When enabled, the Strimzi operator should automatically resolve these issues detected by the Anomaly Detector Manager within Cruise Control by using a corresponding KafkaRebalance custom resource (see section [ Anomaly Detector Manager](./106-auto-rebalance-on-imbalanced-clusters.md#anomaly-detector-manager) below for a detailed description). ## Motivation -Currently, any anomaly that the user is notified about would need to be fixed manually by using the `KafkaRebalance` custom resource. -With smaller clusters, it is feasible to fix things manually. However, for larger ones it can be very time-consuming, or just not feasible, to fix all the anomalies on your own. -It would be useful for users of Strimzi to be able to have these anomalies fixed automatically whenever they are detected. +Currently, if the cluster is imbalanced, the user would need to manually rebalance the cluster by using the `KafkaRebalance` custom resource. +With smaller clusters, it is feasible to fix things manually. However, for larger ones it can be very time-consuming, or just not feasible, to fix all the imbalances on your own. +It would be useful for users of Strimzi to be able to have these imbalanced cluster balanced automatically. -### Introduction to Self Healing +### Introduction to Self Healing in Cruise Control + +In order to understand how we plan to automatically fix unbalanced Kafka clusters, the sections below will go over how Cruise Control's anomaly detection and self-healing features work to detect the anomalies in the cluster and fix them. ![self-healing flow diagram](images/106-self-healing-flow.png) The above flow diagram depicts the self-healing process in Cruise Control. The anomaly detector manager detects an anomaly (using the detector classes) and forwards it to the notifier. -The configured notifiers provides alerts to the users about the detected anomaly and also returns the action that needs to be taken on the anomaly i.e. whether to fix it, ignore it or delay it. +The notifier then decides what action to take on the anomaly whether to fix it, ignore it or delay. Cruise Control provides various notifiers to alert the users about the detected anomaly in several ways like Slack, Alerta, MS Teams etc. #### Anomaly Detector Manager @@ -30,12 +31,12 @@ Furthermore, `MetricAnomalyDetector` use metrics and `GoalViolationDetector` use The detected anomalies can be of various types: * Goal Violation - This happens if certain [optimization goals](https://strimzi.io/docs/operators/in-development/deploying#optimization_goals) are violated (e.g. DiskUsageDistributionGoal etc.). These goals can be configured through the `self.healing.goals` option in Cruise Control configuration. However, this option is forbidden in the `spec.cruiseControl.config` section of the `Kafka` CR. * Topic Anomaly - Where one or more topics in cluster violates user-defined properties (e.g. some partitions are too large in disk). -* Broker Failure - This happens when a non-empty broker crashes or leaves a cluster for time for a long time. +* Broker Failure - This happens when a non-empty broker crashes or leaves a cluster for a long time. * Disk Failure - This failure happens if one of the non-empty disks fails (related to a Kafka Cluster with JBOD disks). * Metric anomaly - This failure happens if metrics collected by Cruise Control have some anomaly in their value (e.g. a sudden rise in the log flush time metrics). -The detected anomalies are inserted into a priority queue where comparator is based upon the priority value and the detection time. -The smaller the priority value and detected time is, the higher priority the anomaly type has. +The detected anomalies are inserted into a priority queue where comparator is based upon the priority value. +The smaller the priority value is, the higher priority the anomaly type has. The anomaly detector manager calls the notifier to get an action regarding whether the anomaly should be fixed, delayed, or ignored. If the action is `FIX`, then the anomaly detector manager calls the classes that are required to resolve the anomaly. @@ -49,9 +50,9 @@ The notification sent by these classes increases the visibility of the operation The notifier class used by Cruise Control is configurable and custom notifiers can be used by setting the `anomaly.notifier.class` property. The notifier class returns the `action` that is going to be taken on the flagged anomaly. These actions have three types: -* FIX - Start the anomaly fix -* CHECK - Delay the anomaly fix -* IGNORE - Ignore the anomaly fix +* `FIX` - Start the anomaly fix +* `CHECK` - Delay the anomaly fix +* `IGNORE` - Ignore the anomaly fix The default `NoopNotifer` always sets the notifier action as `IGNORE`, which means that the detected anomaly will be silently ignored and no notification is sent to the user. @@ -59,34 +60,35 @@ Cruise Control also provides [custom notifiers](https://github.com/linkedin/crui #### Self Healing -If self-healing is enabled, then an action is returned by the notifier to would decide whether the anomaly should be fixed or not. +If self-healing is enabled, then an action is returned by the notifier to make a decision whether the anomaly should be fixed or not. If the notifier has returned `FIX` as the action then the classes which are responsible for resolving the anomaly would be called. Each detectable anomaly is handled by a specific detector class which then uses another remediation class to run a fix. For example, the `GoalViolations` class uses the `RebalanceRunnable` class, the `DiskFailure` class use the `RemoveDisksRunnable` class and so on. An optimization proposal (a collection of replica reassignments and partition leadership changes) will then be generated by these `Runnable` classes and that proposal will be applied on the cluster to fix the anomaly. -In case the anomaly detected is unfixable for e.g. violated hard goals that cannot be fixed typically due to lack of physical hardware (insufficient number of racks to satisfy rack awareness, insufficient number of brokers to satisfy Replica Capacity Goal, or insufficient number of resources to satisfy resource capacity goals), the anomaly wouldn't be fixed and the Cruise Control logs will be updated with `self-healing is not possible due to unfixable goals` warning. +In case the anomaly detected is unfixable for e.g. violated hard goals that cannot be fixed typically due to lack of physical hardware (insufficient number of racks to satisfy rack awareness, insufficient number of brokers to satisfy Replica Capacity Goal, or insufficient number of resources to satisfy resource capacity goals), the anomaly wouldn't be fixed and the Cruise Control will log a warning with the `self-healing is not possible due to unfixable goals` message. ## Current situation -Even under normal operation, it's common for Kafka clusters to encounter problems such as partition key skew leading to an uneven partition distribution, or hardware issues like as disk failures, which can degrade overall cluster health and performance. -Currently, if we encounter any such scenario we need to fix these issues manually i.e. if the cluster is imbalanced then we might instruct Cruise Control to move the partition replicas across the brokers in order to fix the imbalance using the `KafkaRebalance` custom resource. +Even under normal operation, it's common for Kafka clusters to encounter problems such as partition key skew leading to an uneven partition distribution, or hardware issues like disk failures, which can degrade overall cluster's health and performance. +Currently, in any such scenario these issues need to be fixed manually i.e. if the cluster is imbalanced then a user might instruct Cruise Control to move the partition replicas across the brokers in order to fix the imbalance using the `KafkaRebalance` custom resource. -Users can currently enable anomaly detection and can also [set](https://strimzi.io/docs/operators/latest/full/deploying.html#setting_up_alerts_for_anomaly_detection) the notifier to one of those included with Cruise Control (SelfHealingNotifier, AlertaSelfHealingNotifier, SlackSelfHealingNotifier etc.). -However, self-healing is disabled and disallowed in Strimzi. -The `self-healing` properties were disabled in Strimzi's Cruise Control integration because, initially, it was not clear how self-healing would act if pods were rolled in middle of rebalances or how Strimzi triggered manual rebalances should interact with Cruise Control triggered self-healing ones. +Users can currently enable anomaly detection and can also [set](https://strimzi.io/docs/operators/latest/full/deploying.html#setting_up_alerts_for_anomaly_detection) the notifier to one of those included with Cruise Control (`SelfHealingNotifier`, `AlertaSelfHealingNotifier`, `SlackSelfHealingNotifier` etc.). +All the `self.healing` prefixed properties were disabled in Strimzi's Cruise Control integration because, initially, it was not clear how self-healing would act if pods were rolled in middle of rebalances or how Strimzi triggered manual rebalances should interact with Cruise Control triggered self-healing ones. ### Proposal -This proposal allows the users to have their cluster balanced automatically whenever the cluster gets imbalanced due to overloaded broker, CPU usage e.t.c. -With self-healing ability of Cruise Control, the rebalances are triggered automatically in the cluster which means that the operator wouldn't have the information about when a rebalance is happening. -To resolve this issue, we will only make use of the ability of Cruise Control to detect the anomalies and based on the detection, we will then notify the operator to run the rebalance using an approach based on the existing auto-rebalance for scaling feature. -We will be using the goal violation anomaly detection related classes in Cruise Control to detect imbalanced cluster. +This proposal allows the users to have their cluster balanced automatically whenever the cluster gets imbalanced due to overloaded broker, CPU usage etc. +If we were to enable the self-healing ability of Cruise Control then, in response to detected anomalies, Cruise Control would issue partition reassignments without involving the Strimzi Cluster Operator. +This could cause potential conflicts with other administration operations and is the primary reason self-healing has been disabled until now. +To resolve this issue, we will only make use of Cruise Control's anomaly detection ability, the triggering of the partition reassignments (rebalance) will the responsibility of the Strimzi Cluster Operator. +To enable this, we will use approach based on the existing auto-rebalance for scaling feature (see the [documentation](https://strimzi.io/docs/operators/latest/deploying#proc-automating-rebalances-str) for more details). +We will be using the goal violation anomaly detection related classes in Cruise Control to detect imbalanced cluster and not other detection related class like Disk failures or broker failure. +THe reason behind it is that disk failures and broker failures can be fixed in a much better way than rebalancing the cluster. It is much easier to spin up a new disk in case of disk failures and in the same way it is better to fix the issue with the broker directly instead just moving the partitions replicas away from it. Doing this will provide us with the following advantages: -* we will ensure that the operator knows what is going on in the Kafka cluster. -* using the existing `KafkaRebalance` CR system make it easier for users to see what is happening and when, which aids in debugging. -* ensures the operators is in charge of rebalances. +* we will ensure that the operator is in control of when rebalances will be triggered. +* using the existing `KafkaRebalance` CR system make it easier for users to see what is happening and when, which (as we don't support the Cruise Control UI) enhances observability and will also aids in debugging. -### `skew` mode in Strimzi's auto-rebalancing feature +### `imbalance` mode in Strimzi's auto-rebalancing feature The [`auto-rebalancing`](https://strimzi.io/docs/operators/latest/deploying#proc-automating-rebalances-str) feature in Strimzi allows the operator to run a rebalance automatically when a Kafka cluster is scaled up (by adding brokers) or scaled down (by removing brokers). @@ -94,19 +96,20 @@ Auto-rebalancing in Strimzi currently supports two modes: * add-brokers - auto-rebalancing on scale up * remove-brokers - auto-rebalancing on scale down -To leverage the automated rebalance on imbalanced cluster, we will be introducing a new mode to the auto-rebalancing feature. -The new mode will be called `skew`, which means that cluster imbalance was detected and rebalancing should be applied to the all the brokers. -The mode is defined by setting the `spec.cruiseControl.autoRebalance.mode` field as `skew` and the corresponding rebalancing configuration is defined as a reference to a "template" `KafkaRebalance` custom resource, by using the `spec.cruiseControl.autoRebalance.template` field as a [LocalObjectReference](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/local-object-reference/). -This field is optional and if not specified, the auto-rebalancing runs with the default Cruise Control configuration. -To provide user more flexibility, they don't have to configure all the modes for auto-rebalancing. -They can configure auto-rebalance to enable only for their specific case i.e. setting only `skew` mode or other scaling related modes. -Once the auto-rebalance with `skew` mode is enabled, the operator will be ready to trigger auto-rebalance whenever the cluster becomes imbalanced. +To leverage the automated rebalance on imbalanced cluster (those with detected Goal violations), we will be introducing a new mode to the auto-rebalancing feature. +The new mode will be called `imbalance`, which means that cluster imbalance was detected and rebalancing should be applied to the all the brokers. +The mode is defined by setting the `spec.cruiseControl.autoRebalance.mode` field as `imbalance` and the corresponding rebalancing configuration is defined as a reference to a "template" `KafkaRebalance` custom resource, by using the `spec.cruiseControl.autoRebalance.template` field as a [LocalObjectReference](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/local-object-reference/). +This field is optional and if not specified, the auto-rebalancing runs with the default Cruise Control configuration (i.e. the same used for unmodified manual `KafkaRebalance` invocations). +To provide users more flexibility, they only have to configure the auto-rebalance modes they wish to customise. +They don't require to set up all the modes and can enable the modes they require. +They can configure auto-rebalance to enable only for their specific case i.e. setting only `imbalance` mode or other scaling related modes. +Once the auto-rebalance with `imbalance` mode is enabled, the operator will be ready to trigger auto-rebalance whenever the cluster becomes imbalanced. To trigger the auto-rebalance, the operator must know that the cluster is imbalanced due to some goal violation anomaly. -We will create our own custom notifier named `AnomalyDetectorNotifier` to do the same. -This notifier's job will be to update the operator regarding the goal violations so that the operator can trigger a rebalance(see section [AnomalyDetectorNotifier](./106-auto-rebalance-on-imbalanced-clusters.md#anomalydetectornotifier)) +We will create our own custom notifier named `StrimziCruiseControlNotifier` to do the same. +This notifier's job will be to update the operator regarding the goal violations so that the operator can trigger a rebalance (see section [AnomalyDetectorNotifier](./106-auto-rebalance-on-imbalanced-clusters.md#anomalydetectornotifier)). With this proposal, we are only going to support auto-rebalance on imbalanced cluster. We also plan to implement the same for topic and metrics related issues, but it will be part of future work since their implementation require different approach. -For example, when dealing with topic related issues, it will require a coordination with topic operator and metrics issues will require coordination with the Kafka apis. +For example, when dealing with topic related issues, it will require a coordination with topic operator and metrics issues will require coordination with the Kafka API. Here is an example of what the configured `Kafka` custom resource could look like: @@ -121,10 +124,10 @@ spec: cruiseControl: # ... autoRebalance: - # using the skew rebalance mode - - mode: skew + # using the imbalance rebalance mode + - mode: imbalance template: - name: my-skew-rebalance-template + name: my-imbalance-rebalance-template ``` It is also possible to use the default Cruise Control rebalancing configuration by omitting the `template` field. @@ -141,21 +144,22 @@ spec: # ... autoRebalance: # using the default Cruise Control rebalancing configuration - - mode: skew + - mode: imbalance ``` The auto-rebalance configuration for the `spec.cruiseControl.autoRebalance.template` property in the `Kafka` custom resource is provided through a `KafkaRebalance` custom resource defined as a "template". That is a `KafkaRebalance` custom resource with the `strimzi.io/rebalance-template: true` annotation set. When it is created, the `KafkaRebalanceAssemblyOperator` doesn't run any rebalancing. -This is because it doesn't represent an "actual" rebalance request to get an optimization proposal, but it's just the place where configuration related to auto-rebalancing is defined. -The user can specify rebalancing goals and other configuration for rebalancing, within the resource. +This is not an actual rebalance request to get an optimization proposal; it is simply where the configuration for auto-rebalancing is defined. +The user can specify rebalancing goals and configuration in the resource. Here is an example template: + ```yaml apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaRebalance metadata: - name: my-skew-rebalance-template + name: my-imbalance-rebalance-template annotations: strimzi.io/rebalance-template: "true" # specifies that this KafkaRebalance is a rebalance configuration template spec: @@ -170,9 +174,11 @@ spec: skipHardGoalCheck: true # ... other rebalancing related configuration ``` -When the "template" is set the operator automatically creates (or updates) a corresponding "actual" `KafkaRebalance` custom resource based on the "template" when an anomaly is detected and notified by the `AnomalyDetectorNotifier` -The operator copies over goals and rebalancing options from the referenced "template" resource to the "actual" rebalancing one and also adds the `spec.mode` to it. -The generated `KafkaRebalance` custom resource will be called `-auto-rebalancing-skew-anomalyId`, where the `` part comes from the `metadata.name` in the `Kafka` custom resource, and `skew` refers to applying the rebalance to all the brokers and the anomalyId would be retrieved from the notifier. +When the "template" is set the operator automatically creates (or updates) a corresponding "actual" `KafkaRebalance` custom resource based on the "template" when an anomaly is detected and notified by the `StrimziCruiseControlNotifier` +The operator copies over goals and rebalancing options from the referenced "template" resource to the "actual" rebalancing one. +The "imbalance" mode will be mapped to the "full" mode in the actual KafkaRebalance resource which means that actual `KafkaRebalance` custom will have the mode set as `full` which within the Strimzi rebalancing operator means calling the Cruise Control API to run a rebalancing taking all brokers into account. + +The generated `KafkaRebalance` custom resource will be called `-auto-rebalancing-imbalance-`, where the `` part comes from the `metadata.name` in the `Kafka` custom resource, and `imbalance` refers to applying the rebalance to all the brokers and the `` would be retrieved from the notifier. ```yaml apiVersion: kafka.strimzi.io/v1beta2 @@ -182,7 +188,7 @@ metadata: finalizers: - strimzi.io/auto-rebalancing spec: - mode: skew + mode: full goals: - CpuCapacityGoal - NetworkInboundCapacityGoal @@ -197,57 +203,66 @@ spec: The operator also sets a finalizer, named `strimzi.io/auto-rebalancing`, on the "actual" `KafkaRebalance` custom resource. This is needed to avoid the user, or any other tooling, to delete the resource while the auto-rebalancing is still running. -The finalizer is removed at the end of the auto-rebalancing process, with or without errors, allowing the "actual" `KafkaRebalance` custom resource deletion by the operator itself. +The finalizer is removed when Cruise Control indicates that the partition reassignment (rebalance) process has finished, with or without errors, allowing the "actual" `KafkaRebalance` custom resource deletion by the operator itself. -#### AnomalyDetectorNotifier +#### StrimziCruiseControlNotifier Cruise Control provides the `AnomalyNotifier` interface, which has multiple abstract methods on what to do if certain anomalies are detected. -Some of those methods are:`onGoalViolation()`, `onBrokerFailure()`, `onDiskFailure`, `alert()` etc. -The `AnomalyDetectorNotifier` will be based of the `AnomalyNotifier` class. -The anomalies with smaller priority value and detected time will be considered priority and resolved first. -In case the anomaly is unfixable due to issues like lack of physical hardware (e.g. insufficient number of racks to satisfy rack awareness, insufficient number of brokers to satisfy ReplicaCapacityGoal, or insufficient number of resources to satisfy resource capacity goals), then they will be ignored. -The `AnomalyDetectorNotifier` will override all the abstract methods provided by the `AnomalyNotifier` interface. -We will add an `alert` method which will alert the operator whenever an anomaly is detected by the operator. -Upon detection of an anomaly, the notifier would create a configmap with name set as `goal-violation` followed by `anomalyId`. +Some of those methods are:`onGoalViolation()`, `onBrokerFailure()`, `onDiskFailure`, `alert()`. +The `AnomalyDetectorNotifier` will implement the `AnomalyNotifier` interface. +Every detected anomaly is placed in a priority queue and each of the anomalies have a priority value assigned to them. +Since we are working with only goal related violation every anomaly would have same priority, and they will be fixed on the basis of first come, first served mechanism. +In case the anomaly is unfixable due to issues like a lack of physical hardware (e.g. insufficient number of racks to satisfy rack awareness, insufficient number of brokers to satisfy `ReplicaCapacityGoal`, or insufficient number of resources to satisfy resource capacity goals), then they will be ignored. +The `AnomalyDetectorNotifier` will override all the methods declared by the `AnomalyNotifier` interface. +We will provide a concrete implementations of the `AnomalyNotifier.alert` method which will alert the operator whenever an anomaly is detected by the operator. +Upon detection of an anomaly, the notifier would create a configmap with name set as `goal-violation-map` -The ConfigMap would look like this: +The ConfigMap will look like this: ```yaml kind: ConfigMap apiVersion: v1 metadata: - name: goal-violation- + name: goal-violation-map data: - anomalyType: GOAL_VIOLATION - anomalyId: "" - detectionTime: "" + anomaly-not-fixed: | + - + - + - + anomaly-fixed: | + - + - + - # ... ``` -The operator will then check if any configmap with prefix `goal-violation` is created or not, if it finds one created then operator will trigger the rebalance. -Separate configmaps would be created for every goal violation such that on completion of the rebalance we can remove the particular configmap. -The advantages of using a separate configmap for every anomaly are: -1. Every anomaly would have a separate place to put their data in. -2. Better readability. -3. Improves scope for future improvement when dealing with different violation, for example topic or metrics related violations. +This generated config map will contain the list of goal violation anomalies divided into two section: `anomaly-not-fixed` and `anomaly-fixed`. +The operator will then check if the `anomaly-not-fixed` list is empty or not. If it is not empty then a rebalance would be triggered by the operator and all the anomalies in the `anomaly-not-fixed` list will be moved to `anomaly-fixed` list. -#### Using other notifiers when using `skew` mode +The advantages of using a single configmap for every anomaly are: +1. Single place to put in all the anomalies +2. Even when dealing multiple Kafka clusters, the ConfigMap created will be equal to number of clusters deployed + +#### Using other notifiers when using `imbalance` mode Users cannot configure the notifier if they are utilising the auto-rebalance on imbalanced cluster. This is because the operator is using our custom notifier for getting alerts about goal violations. -If the users try to override the notifier while the `skew` mode is enabled, the auto-rebalance `skew` configuration then the operator would throw errors in the auto-rebalance status field +If the users try to override the notifier while the `imbalance` mode is enabled, the auto-rebalance `imbalance` configuration then the operator would throw errors in the auto-rebalance status field of the Kafka CR. + +If the users really want to have their own way of dealing with the imbalanced clusters then they can disable auto-rebalance in `imbalance` mode and use their own notifier. +Another way for users to use their own notifier can be to extend our notifier and use our alert method i.e `super.alert()` first in their `alert()` method implementation. + +#### What happens if an unfixable goal violation happens -If the users really want to have their own way of dealing with the imbalanced clusters then they can just disable auto-rebalance in `skew` mode and use their own notifier. +In case, there is an unfixable goal violation then the notifier would simply ignore that anomaly and prompt the user about the unfixable violation in the auto-rebalancing status section of the Kafka CR. -#### What happens if some unfixable goal violation happens -In case, there is an unfixable goal violation then the notifier would simply ignore that anomaly and prompt the user about the unfixable violation in the auto-rebalancing status section. +#### What happens if same anomaly is detected while the auto-rebalance is happening -#### What happens if same anomaly is detected again while the auto-rebalance is happening -Since the cluster operator has the knowledge regarding the detected violation, we will ignore the anomalies while the rebalancing is happening. In case the anomaly still exists after the rebalance, Cruise Control will detect it again and a new rebalance would be triggered +Since the cluster operator has the knowledge regarding the detected violation, we will ignore the anomalies while the rebalancing is happening and empty the `anomaly-not-fixed` list assuming that all the anomalies will be fixed by the rebalance. In case the anomaly still exists after the rebalance, Cruise Control will detect it again and a new rebalance would be triggered -### Auto-rebalancing execution for `skew` mode +### Auto-rebalancing execution for `imbalance` mode -### Auto-rebalancing Finite State Machine (FSM) for `skew` mode +### Auto-rebalancing Finite State Machine (FSM) for `imbalance` mode Currently, the auto-rebalancing mechanism runs through a Finite State Machine (FSM) made by the following states: @@ -255,10 +270,10 @@ Currently, the auto-rebalancing mechanism runs through a Finite State Machine (F * **RebalanceOnScaleDown**: a rebalancing related to a scale down operation is running. * **RebalanceOnScaleUp**: a rebalancing related to a scale up operation is running. -With the new `skew` mode, we will be introducing a new state to the FSM called `RebalanceOnAnomalyDetection`. -This state will be related to rebalances related to imbalanced cluster. +With the new `imbalance` mode, we will be introducing a new state to the FSM called `RebalanceOnAnomalyDetection`. +This state will be associated with rebalances triggered by imbalanced cluster. -With the new `skew` mode, the FSM state transitions would look something like this: +With the new `imbalance` mode, the FSM state transitions would look something like this: ```mermaid flowchart TB @@ -269,26 +284,26 @@ flowchart TB * from **Idle** to: * **RebalanceOnScaleDown**: if a scale down operation was requested. This transition happens even if a scale up was requested at the same time but the rebalancing on scaling down has the precedence. The rebalancing on scale up is queued. They will run sequentially. * **RebalanceOnScaleUp**: if only a scale up operation was requested. There was no scale down operation requested. - * **RebalanceOnAnomalyDetection**: if a configmap related to goal violation was detected and a complete rebalance was requested. + * **RebalanceOnAnomalyDetection**: if a configmap related to goal violation was detected, and the `anomaly-not-fixed` list is not empty ```mermaid sequenceDiagram autonumber - RebalanceOnScaleDown->>RebalanceOnScaleDown: queued scale down - RebalanceOnScaleDown->>RebalanceOnScaleUp: queued scale up - RebalanceOnScaleDown->>RebalanceOnAnomalyDetection: queued skew rebalance - critical queued scale down and skew rebalance + RebalanceOnScaleDown->>RebalanceOnScaleDown: requested scale down + RebalanceOnScaleDown->>RebalanceOnScaleUp: requested scale up + RebalanceOnScaleDown->>Idle: full rebalance requested but ignored + critical queued scale down and full rebalance RebalanceOnScaleDown->>RebalanceOnScaleDown: execute scale down - RebalanceOnScaleDown-->>RebalanceOnAnomalyDetection: then skew rebalance + RebalanceOnScaleDown-->>Idle: full rebalance requested but ignored end critical queued scale up and scale down RebalanceOnScaleDown->>RebalanceOnScaleDown: execute scale down RebalanceOnScaleDown-->>RebalanceOnScaleUp: then scale up end - critical queued scale down and scale up and skew rebalance + critical queued scale down and scale up and full rebalance RebalanceOnScaleDown->>RebalanceOnScaleDown: execute scale down RebalanceOnScaleDown-->>RebalanceOnScaleUp: then scale up - RebalanceOnScaleUp-->>RebalanceOnAnomalyDetection: then skew rebalance + RebalanceOnScaleUp-->>RebalanceOnAnomalyDetection: then full rebalance end RebalanceOnScaleDown->>Idle: scale down complete with no queued items ``` @@ -296,27 +311,26 @@ sequenceDiagram * from **RebalanceOnScaleDown** to: * **RebalanceOnScaleDown**: if a rebalancing on scale down is still running or another one was requested while the first one ended. * **RebalanceOnScaleUp**: if a scale down operation was requested together with a scale up and, because they run sequentially, the rebalance on scale down had the precedence, was executed first and completed successfully. We can now move on with rebalancing for the scale up. - * **RebalanceOnAnomalyDetection**: if a configmap related to goal violation was detected. It will run once the queued scale down and scale up is completed - * **Idle**: if only a scale down operation was requested, it was executed and completed successfully or failed. + * **Idle**: if a scale down operation was requested, it was executed and completed successfully/failed or a full rebalance was asked due to an anomaly but since the scale-down rebalance is done, we can ignre the anomalies assuming they are fixed by the rebalance. In case, they are not fixed, Cruise Control will detect them again and a new rebalance would be requested. ```mermaid sequenceDiagram autonumber - RebalanceOnScaleUp->>RebalanceOnScaleDown: queued scale down - RebalanceOnScaleUp->>RebalanceOnScaleUp: queued scale up - RebalanceOnScaleUp->>RebalanceOnAnomalyDetection: queued skew rebalance - critical queued scale up and skew rebalance + RebalanceOnScaleUp->>RebalanceOnScaleDown: requested scale down + RebalanceOnScaleUp->>RebalanceOnScaleUp: requested scale up + RebalanceOnScaleUp->>Idle: full rebalance requested but ignored + critical queued scale up and full rebalance RebalanceOnScaleUp->>RebalanceOnScaleUp: execute scale down - RebalanceOnScaleUp-->>RebalanceOnAnomalyDetection: then skew rebalance + RebalanceOnScaleUp-->>Idle: ignore full rebalance end critical queued scale up and scale down RebalanceOnScaleUp->>RebalanceOnScaleDown: execute scale down RebalanceOnScaleUp-->>RebalanceOnScaleUp: then scale up end - critical queued scale down and scale up and skew rebalance + critical queued scale down and scale up and full rebalance RebalanceOnScaleUp->>RebalanceOnScaleDown: execute scale down RebalanceOnScaleDown-->>RebalanceOnScaleUp: then scale up - RebalanceOnScaleUp-->>RebalanceOnAnomalyDetection: then skew rebalance + RebalanceOnScaleUp-->>RebalanceOnAnomalyDetection: then full rebalance end RebalanceOnScaleUp->>Idle: scale up complete with no queued items ``` @@ -325,34 +339,34 @@ sequenceDiagram * **RebalanceOnScaleUp**: if a rebalancing on scale up is still running or another one was requested while the first one ended. * **RebalanceOnScaleDown**: if a scale down operation was requested, so the current rebalancing scale up is stopped (and queued) and a new rebalancing scale down is started. The rebalancing scale up will be postponed. * **RebalanceOnAnomalyDetection**: if a configmap related to goal violation was detected. It will run once the queued scale down and scale up is completed. - * **Idle**: if a scale up operation was requested, it was executed and completed successfully or failed. + * **Idle**: if a scale up operation was requested, it was executed and completed successfully/failed or a full rebalance was asked due to an anomaly but since the scale-down rebalance is done, we can ignre the anomalies assuming they are fixed by the rebalance. In case, they are not fixed, Cruise Control will detect them again and a new rebalance would be requested. ```mermaid sequenceDiagram autonumber - RebalanceOnAnomalyDetection->>RebalanceOnScaleDown: queued scale down - RebalanceOnAnomalyDetection->>RebalanceOnScaleUp: queued scale up - RebalanceOnAnomalyDetection->>RebalanceOnAnomalyDetection: queued skew rebalance + RebalanceOnAnomalyDetection->>RebalanceOnScaleDown: requested scale down + RebalanceOnAnomalyDetection->>RebalanceOnScaleUp: requested scale up + RebalanceOnAnomalyDetection->>RebalanceOnAnomalyDetection: new full rebalance requested critical queued scale up and skew rebalance RebalanceOnAnomalyDetection->>RebalanceOnScaleUp: execute scale up - RebalanceOnScaleUp-->>RebalanceOnAnomalyDetection: then skew rebalance + RebalanceOnScaleUp-->>RebalanceOnAnomalyDetection: then full rebalance end critical queued scale down and skew rebalance RebalanceOnAnomalyDetection->>RebalanceOnScaleDown: execute scale down - RebalanceOnScaleDown-->>RebalanceOnAnomalyDetection: then skew rebalance + RebalanceOnScaleDown-->>RebalanceOnAnomalyDetection: then full rebalance end critical queued scale down and scale up and skew rebalance RebalanceOnAnomalyDetection->>RebalanceOnScaleDown: execute scale down RebalanceOnScaleDown-->>RebalanceOnScaleUp: then scale up - RebalanceOnScaleUp-->>RebalanceOnAnomalyDetection: then skew rebalance + RebalanceOnScaleUp-->>RebalanceOnAnomalyDetection: then full rebalance end RebalanceOnAnomalyDetection->>Idle: scale up complete with no queued items ``` * from **RebalanceOnAnomalyDetection**: * **RebalanceOnAnomalyDetection**: if another goal violation was detected while the first one ended. If a scale down and scale up is also queued up then they will execute first. * **RebalanceOnScaleUp**: if a rebalancing on scale up is queued and will run if there is no other rebalancing scale down in queue. If a rebalancing scale down is in queue then it will be executed first. - * **RebalanceOnScaleDown**: if a scale down operation was requested, it will run once the skew rebalance is completed - * **Idle**: if skew rebalance was requested, it was executed and completed successfully or failed. + * **RebalanceOnScaleDown**: if a scale down operation was requested, it will run once the full rebalance is completed + * **Idle**: if full rebalance was requested, it was executed and completed successfully or failed. On each reconciliation, the following process will be used: @@ -361,20 +375,21 @@ flowchart TB A[KafkaClusterCreator] --creates--> B[KafkaCluster] B -- calls --> D[KafkaAutoRebalancingReconciler.reconcile] D -- check for configmap with goal-violation prefix --> E{if config map present?} - D -- if rebalance in progress --> F[ignore new configmaps and delete them] + D -- if rebalance in progress --> F[moves a;; unfixed anomalies in list to fixed anomalies list] E -- yes --> G[Trigger auto-rebalance] E -- no --> H[No operation] ``` 1. The `KafkaClusterCreator` creates the `KafkaCluster` instance. -2. The `KafkaAutoRebalancingReconciler.reconcile()` will then check if there was any configmap created with `goal-violation` as prefix, if created, then the `skew` rebalance would be performed. -3. In case, a rebalance is already ongoing and another configmap related to goal violation is detected, then the operator will just ignore the configmap and delete it. +2. The `KafkaAutoRebalancingReconciler.reconcile()` will then check if there was any ConfigMap created with name `goal-violation-map` and whether the `anomaly-not-fixed` list is empty or not, then the `full` rebalance(imbalance mode) would be performed. +If the list is not empty, then we trigger the `imbalance` mode. +3. In case, a rebalance is already ongoing and more anomalies are detected, then the operator will just ignore the new anomalies and move all the existing anomalies to `anomaly-fixed` section in ConfigMap. The `KafkaAutoRebalancingReconciler.reconcile()` loads the `Kafka.status.autoRebalance` content: * `state`: is the FSM state. * `lastTransitionTime`: when the transition to that state happened. -* `modes`: sets the mode as `skew` +* `modes`: sets the mode as `imbalance` The FSM is initialized based on the `state` field. @@ -384,8 +399,8 @@ Let's see what happens during the auto-rebalancing process when the FSM starts f This state is set since the beginning when a `Kafka` custom resource is created with the `spec.cruiseControl.autoRebalance` field. It is also the end state of a previous successfully completed or failed auto-rebalancing. -In case of successful completion, once the rebalance moves to `Ready` state, we will delete the KafkaRebalance and the configmap associated with the rebalance by matching the `anomalyId` suffix in their names and then update the `auto-rebalance` state to `Idle`. -In case of failed auto-rebalancing, once the rebalance moves to `NotReady` state, we will foloow the same procedure we used in successful completion. +In case of successful completion, once the rebalance moves to `Ready` state, we will delete the KafkaRebalance and move the anomalies in the `anomaly-not-fixed` list to `anomaly-fixed` list in the configmap and then update the `auto-rebalance` state to `Idle`. +In case of failed auto-rebalancing, once the rebalance moves to `NotReady` state, we will follow the same procedure we used in successful completion. In this state, the operator removes the finalizer and deletes the corresponding "actual" `KafkaRebalance` custom resource. #### RebalanceOnAnomalyDetection @@ -421,6 +436,8 @@ Checking the current `KafkaRebalance` status: If, during an ongoing auto-rebalancing, the `KafkaRebalance` custom resource is not there anymore on the next reconciliation, it could mean the user deleted it while the operator was stopped/crashed/not running. In this case, the FSM will assume it as `NotReady` so falling in the last case above. +#### Metrics for tracking the rebalance requests + ## Affected/not affected projects This change will affect the Strimzi cluster operator and a new repository named `anomaly-detector-notifier` will be added under the Strimzi organisation. @@ -468,4 +485,4 @@ Cons: ## Future Scope In the future, we plan to introduce auto-rebalance for topic and metrics related imbalances. -AS this feature evolves we can even think of having ways to fix issue like disk failure and broker failures automatically since the fix would be driven by the operator. \ No newline at end of file +As this feature evolves we can even think of having ways to fix issues like disk failure and broker failures automatically since the fix would be driven by the operator. \ No newline at end of file From 66cb053bc6dff28de242c520ab4fd27f56a7a175 Mon Sep 17 00:00:00 2001 From: ShubhamRwt Date: Mon, 22 Sep 2025 15:50:14 +0530 Subject: [PATCH 06/20] Refine the proposal Signed-off-by: ShubhamRwt --- 106-auto-rebalance-on-imbalanced-clusters.md | 90 +++++++++++--------- 1 file changed, 48 insertions(+), 42 deletions(-) diff --git a/106-auto-rebalance-on-imbalanced-clusters.md b/106-auto-rebalance-on-imbalanced-clusters.md index ec04b69f..a579c78c 100644 --- a/106-auto-rebalance-on-imbalanced-clusters.md +++ b/106-auto-rebalance-on-imbalanced-clusters.md @@ -82,11 +82,13 @@ If we were to enable the self-healing ability of Cruise Control then, in respons This could cause potential conflicts with other administration operations and is the primary reason self-healing has been disabled until now. To resolve this issue, we will only make use of Cruise Control's anomaly detection ability, the triggering of the partition reassignments (rebalance) will the responsibility of the Strimzi Cluster Operator. To enable this, we will use approach based on the existing auto-rebalance for scaling feature (see the [documentation](https://strimzi.io/docs/operators/latest/deploying#proc-automating-rebalances-str) for more details). -We will be using the goal violation anomaly detection related classes in Cruise Control to detect imbalanced cluster and not other detection related class like Disk failures or broker failure. -THe reason behind it is that disk failures and broker failures can be fixed in a much better way than rebalancing the cluster. It is much easier to spin up a new disk in case of disk failures and in the same way it is better to fix the issue with the broker directly instead just moving the partitions replicas away from it. -Doing this will provide us with the following advantages: -* we will ensure that the operator is in control of when rebalances will be triggered. -* using the existing `KafkaRebalance` CR system make it easier for users to see what is happening and when, which (as we don't support the Cruise Control UI) enhances observability and will also aids in debugging. +We will be using the anomaly detection classes related to goal violations that can be addressed by a partition rebalances but not other anomaly detection classes related to goal violations that would require manual intervention like disk or broker failures. +TThe reason behind thus is that disk failures and broker failures can cannot be fixed by rebalancing alone, they require manual intervention. +It would much easier to spin up a new disk in case of disk failures and in the same way it is better to fix the issue with the broker directly instead of just moving the partitions replicas away from it through rebalancing. +Therefore, it would be non-trivial for the Strimzi Operator to fix these failures, hence we narrow down the scope to goal violations that the Operator can fix with a rebalance. +Following the above approach will provide us with the following advantages: +* we ensure that the operator controls all rebalance and cluster remediation operations. +* using the existing `KafkaRebalance` CR system gives more visibility into what is happening and when, which (as we don't support the Cruise Control UI) enhances observability and will also aid in debugging. ### `imbalance` mode in Strimzi's auto-rebalancing feature @@ -100,10 +102,8 @@ To leverage the automated rebalance on imbalanced cluster (those with detected G The new mode will be called `imbalance`, which means that cluster imbalance was detected and rebalancing should be applied to the all the brokers. The mode is defined by setting the `spec.cruiseControl.autoRebalance.mode` field as `imbalance` and the corresponding rebalancing configuration is defined as a reference to a "template" `KafkaRebalance` custom resource, by using the `spec.cruiseControl.autoRebalance.template` field as a [LocalObjectReference](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/local-object-reference/). This field is optional and if not specified, the auto-rebalancing runs with the default Cruise Control configuration (i.e. the same used for unmodified manual `KafkaRebalance` invocations). -To provide users more flexibility, they only have to configure the auto-rebalance modes they wish to customise. -They don't require to set up all the modes and can enable the modes they require. -They can configure auto-rebalance to enable only for their specific case i.e. setting only `imbalance` mode or other scaling related modes. -Once the auto-rebalance with `imbalance` mode is enabled, the operator will be ready to trigger auto-rebalance whenever the cluster becomes imbalanced. +To provide users more flexibility, they only have to configure the auto-rebalance modes they wish to use whether it be `add-brokers`, `remove-brokers`, or `imbalance`.. +When the auto-rebalance configuration is set with `imbalance` mode enabled, the operator will trigger a partition rebalance whenever a goal violation is detected by the anomaly detector. To trigger the auto-rebalance, the operator must know that the cluster is imbalanced due to some goal violation anomaly. We will create our own custom notifier named `StrimziCruiseControlNotifier` to do the same. This notifier's job will be to update the operator regarding the goal violations so that the operator can trigger a rebalance (see section [AnomalyDetectorNotifier](./106-auto-rebalance-on-imbalanced-clusters.md#anomalydetectornotifier)). @@ -215,7 +215,7 @@ Since we are working with only goal related violation every anomaly would have s In case the anomaly is unfixable due to issues like a lack of physical hardware (e.g. insufficient number of racks to satisfy rack awareness, insufficient number of brokers to satisfy `ReplicaCapacityGoal`, or insufficient number of resources to satisfy resource capacity goals), then they will be ignored. The `AnomalyDetectorNotifier` will override all the methods declared by the `AnomalyNotifier` interface. We will provide a concrete implementations of the `AnomalyNotifier.alert` method which will alert the operator whenever an anomaly is detected by the operator. -Upon detection of an anomaly, the notifier would create a configmap with name set as `goal-violation-map` +Upon detection of an anomaly, the notifier would create a configmap with name set as `goal-violation-map`. The ConfigMap will look like this: @@ -225,24 +225,32 @@ apiVersion: v1 metadata: name: goal-violation-map data: - anomaly-not-fixed: | - - - - - - - anomaly-fixed: | + last_anomaly_detection_timestamp: + rebalance_finished_timestamp: + anomaly_list: | - - - # ... ``` -This generated config map will contain the list of goal violation anomalies divided into two section: `anomaly-not-fixed` and `anomaly-fixed`. -The operator will then check if the `anomaly-not-fixed` list is empty or not. If it is not empty then a rebalance would be triggered by the operator and all the anomalies in the `anomaly-not-fixed` list will be moved to `anomaly-fixed` list. - The advantages of using a single configmap for every anomaly are: 1. Single place to put in all the anomalies 2. Even when dealing multiple Kafka clusters, the ConfigMap created will be equal to number of clusters deployed +This generated config map will contain the list of goal violation anomalies in the section named `anomaly_list`. The ConfigMap will also store the timestamps for when the last anomaly detection was run and when the rebalance is finished. + +The `last_anomaly_detection_timestamp` corresponds to when the last anomaly detection was run and will be updated everytime a new anomaly detection is run and the `rebalance_finished_timestamp` refers to the time when the running rebalance is finished and will be updated everytime when the running rebalance is finished + +The created ConfigMap will persist when self-healing is enabled and will be deleted if the user decides to disable self-healing. This is because the ConfigMap is going to help us track the timestamps during the complete process. + +#### What happens if same anomaly is detected while the auto-rebalance is happening + +The `last_anomaly_detection_timestamp` was before `rebalance_finished_timestamp` timestamps will allow us to tackle cases where the rebalance was happening but anomaly detection also took place in that time period and detects the same anomaly which is being fixed by the rebalance. +Once the rebalance in finished, we can compare the `last_anomaly_detection_timestamp` and `rebalance_finished_timestamp` to compare whether the detection took place before `rebalance_finished_timestamp` or not. +If the `last_anomaly_detection_timestamp` was before `rebalance_finished_timestamp`, we can then ignore all the anomalies. +We don't have to worry about the loss of any other new anomalies which was detected since Cruise Control will detect them again if they persist. + #### Using other notifiers when using `imbalance` mode Users cannot configure the notifier if they are utilising the auto-rebalance on imbalanced cluster. @@ -254,11 +262,11 @@ Another way for users to use their own notifier can be to extend our notifier an #### What happens if an unfixable goal violation happens -In case, there is an unfixable goal violation then the notifier would simply ignore that anomaly and prompt the user about the unfixable violation in the auto-rebalancing status section of the Kafka CR. +In case, there is an unfixable goal violation like `DiskDistributionUsage` goal is violated but even after rebalance we cannot fix it since the all the disks are already completely populated, in that case the notifier would simply ignore that anomaly. This is because Cruise Control provides a check to first see if the violated goal can be fixed or not by trying a dry run internally. If the violated goal is unfixable then that goal is ignored and will not be added to the ConfigMap but the user will be prompted about the unfixable violation in the auto-rebalancing status section of the Kafka CR. -#### What happens if same anomaly is detected while the auto-rebalance is happening +#### Metrics for tracking the rebalance requests -Since the cluster operator has the knowledge regarding the detected violation, we will ignore the anomalies while the rebalancing is happening and empty the `anomaly-not-fixed` list assuming that all the anomalies will be fixed by the rebalance. In case the anomaly still exists after the rebalance, Cruise Control will detect it again and a new rebalance would be triggered +If the users want to track when the auto-rebalance happened or not, they can access the Strimzi [metrics](https://github.com/strimzi/strimzi-kafka-operator/blob/main/examples/metrics/grafana-dashboards/strimzi-operators.json#L712) about when the KafkaRebalance custom resources were visible/created. These metrics also cover the KafkaRebalances which were created automatically so the users can utilize them to understand when an auto-rebalance wa triggered in their cluster ### Auto-rebalancing execution for `imbalance` mode @@ -284,7 +292,7 @@ flowchart TB * from **Idle** to: * **RebalanceOnScaleDown**: if a scale down operation was requested. This transition happens even if a scale up was requested at the same time but the rebalancing on scaling down has the precedence. The rebalancing on scale up is queued. They will run sequentially. * **RebalanceOnScaleUp**: if only a scale up operation was requested. There was no scale down operation requested. - * **RebalanceOnAnomalyDetection**: if a configmap related to goal violation was detected, and the `anomaly-not-fixed` list is not empty + * **RebalanceOnAnomalyDetection**: if a ConfigMap related to goal violation was detected, and the `anomaly_list` is not empty ```mermaid sequenceDiagram @@ -292,7 +300,7 @@ sequenceDiagram RebalanceOnScaleDown->>RebalanceOnScaleDown: requested scale down RebalanceOnScaleDown->>RebalanceOnScaleUp: requested scale up RebalanceOnScaleDown->>Idle: full rebalance requested but ignored - critical queued scale down and full rebalance + critical queued scale down and full rebalance(imbalance mode) RebalanceOnScaleDown->>RebalanceOnScaleDown: execute scale down RebalanceOnScaleDown-->>Idle: full rebalance requested but ignored end @@ -300,7 +308,7 @@ sequenceDiagram RebalanceOnScaleDown->>RebalanceOnScaleDown: execute scale down RebalanceOnScaleDown-->>RebalanceOnScaleUp: then scale up end - critical queued scale down and scale up and full rebalance + critical queued scale down and scale up and full rebalance(imbalance mode) RebalanceOnScaleDown->>RebalanceOnScaleDown: execute scale down RebalanceOnScaleDown-->>RebalanceOnScaleUp: then scale up RebalanceOnScaleUp-->>RebalanceOnAnomalyDetection: then full rebalance @@ -311,7 +319,7 @@ sequenceDiagram * from **RebalanceOnScaleDown** to: * **RebalanceOnScaleDown**: if a rebalancing on scale down is still running or another one was requested while the first one ended. * **RebalanceOnScaleUp**: if a scale down operation was requested together with a scale up and, because they run sequentially, the rebalance on scale down had the precedence, was executed first and completed successfully. We can now move on with rebalancing for the scale up. - * **Idle**: if a scale down operation was requested, it was executed and completed successfully/failed or a full rebalance was asked due to an anomaly but since the scale-down rebalance is done, we can ignre the anomalies assuming they are fixed by the rebalance. In case, they are not fixed, Cruise Control will detect them again and a new rebalance would be requested. + * **Idle**: if a scale down operation was requested, it was executed and completed successfully/failed or a full rebalance was asked due to an anomaly but since the scale-down rebalance is done, we can ignore the anomalies assuming they are fixed by the rebalance. In case, they are not fixed, Cruise Control will detect them again and a new rebalance would be requested. ```mermaid sequenceDiagram @@ -319,9 +327,9 @@ sequenceDiagram RebalanceOnScaleUp->>RebalanceOnScaleDown: requested scale down RebalanceOnScaleUp->>RebalanceOnScaleUp: requested scale up RebalanceOnScaleUp->>Idle: full rebalance requested but ignored - critical queued scale up and full rebalance + critical queued scale up and full rebalance(imbalance mode) RebalanceOnScaleUp->>RebalanceOnScaleUp: execute scale down - RebalanceOnScaleUp-->>Idle: ignore full rebalance + RebalanceOnScaleUp-->>Idle: ignore full rebalance(imbalance mode) end critical queued scale up and scale down RebalanceOnScaleUp->>RebalanceOnScaleDown: execute scale down @@ -330,7 +338,7 @@ sequenceDiagram critical queued scale down and scale up and full rebalance RebalanceOnScaleUp->>RebalanceOnScaleDown: execute scale down RebalanceOnScaleDown-->>RebalanceOnScaleUp: then scale up - RebalanceOnScaleUp-->>RebalanceOnAnomalyDetection: then full rebalance + RebalanceOnScaleUp-->>RebalanceOnAnomalyDetection: then full rebalance(imbalance mode) end RebalanceOnScaleUp->>Idle: scale up complete with no queued items ``` @@ -338,8 +346,8 @@ sequenceDiagram * from **RebalanceOnScaleUp**: * **RebalanceOnScaleUp**: if a rebalancing on scale up is still running or another one was requested while the first one ended. * **RebalanceOnScaleDown**: if a scale down operation was requested, so the current rebalancing scale up is stopped (and queued) and a new rebalancing scale down is started. The rebalancing scale up will be postponed. - * **RebalanceOnAnomalyDetection**: if a configmap related to goal violation was detected. It will run once the queued scale down and scale up is completed. - * **Idle**: if a scale up operation was requested, it was executed and completed successfully/failed or a full rebalance was asked due to an anomaly but since the scale-down rebalance is done, we can ignre the anomalies assuming they are fixed by the rebalance. In case, they are not fixed, Cruise Control will detect them again and a new rebalance would be requested. + * **RebalanceOnAnomalyDetection**: if a ConfigMap related to goal violation was detected. It will run once the queued scale down and scale up is completed. + * **Idle**: if a scale up operation was requested, it was executed and completed successfully/failed or a full rebalance was asked due to an anomaly but since the scale-down rebalance is done, we can ignore the anomalies assuming they are fixed by the rebalance. In case, they are not fixed, Cruise Control will detect them again and a new rebalance would be requested. ```mermaid sequenceDiagram @@ -374,16 +382,16 @@ On each reconciliation, the following process will be used: flowchart TB A[KafkaClusterCreator] --creates--> B[KafkaCluster] B -- calls --> D[KafkaAutoRebalancingReconciler.reconcile] - D -- check for configmap with goal-violation prefix --> E{if config map present?} + D -- check for ConfigMap with goal-violation prefix --> E{if config map present?} D -- if rebalance in progress --> F[moves a;; unfixed anomalies in list to fixed anomalies list] E -- yes --> G[Trigger auto-rebalance] E -- no --> H[No operation] ``` 1. The `KafkaClusterCreator` creates the `KafkaCluster` instance. -2. The `KafkaAutoRebalancingReconciler.reconcile()` will then check if there was any ConfigMap created with name `goal-violation-map` and whether the `anomaly-not-fixed` list is empty or not, then the `full` rebalance(imbalance mode) would be performed. -If the list is not empty, then we trigger the `imbalance` mode. -3. In case, a rebalance is already ongoing and more anomalies are detected, then the operator will just ignore the new anomalies and move all the existing anomalies to `anomaly-fixed` section in ConfigMap. +2. The `KafkaAutoRebalancingReconciler.reconcile()` will then check if there was any ConfigMap created with name `goal-violation-map` and whether the `anomaly_list` list is empty or not, then the `full` rebalance(imbalance mode) would be performed if the list is not empty. +If the list is not empty, then we trigger the `imbalance` mode (full rebalance). +3. In case, a rebalance is already ongoing and more anomalies are detected, then the operator will just ignore the new anomalies and delete all the anomalies from the `anomaly_list` in the ConfigMap. The `KafkaAutoRebalancingReconciler.reconcile()` loads the `Kafka.status.autoRebalance` content: @@ -399,13 +407,13 @@ Let's see what happens during the auto-rebalancing process when the FSM starts f This state is set since the beginning when a `Kafka` custom resource is created with the `spec.cruiseControl.autoRebalance` field. It is also the end state of a previous successfully completed or failed auto-rebalancing. -In case of successful completion, once the rebalance moves to `Ready` state, we will delete the KafkaRebalance and move the anomalies in the `anomaly-not-fixed` list to `anomaly-fixed` list in the configmap and then update the `auto-rebalance` state to `Idle`. +In case of successful completion, once the rebalance moves to `Ready` state, we will delete the KafkaRebalance and move the empty the `anomaly_list` then update the `auto-rebalance` state to `Idle`. In case of failed auto-rebalancing, once the rebalance moves to `NotReady` state, we will follow the same procedure we used in successful completion. In this state, the operator removes the finalizer and deletes the corresponding "actual" `KafkaRebalance` custom resource. #### RebalanceOnAnomalyDetection -In this state, an anomaly was detected and a corresponding configmap was generated by the notifier. +In this state, an anomaly was detected and a corresponding ConfigMap was generated by the notifier. A KafkaRebalance resource will now be applied to the cluster to fix the imbalanced cluster. This kafka rebalance will be based on the template provided by the user, if no template is provided then the kafkaRebalance will be created with default configurations. @@ -419,7 +427,7 @@ flowchart TB B --> G[PendingProposal, ProposalReady or Rebalancing] G --> H{{rebalancing is running}} B --> I[NotReady] - I --> J{{Transition to Idle state and delete rebalance resource and configmap}} + I --> J{{Transition to Idle state and delete rebalance resource and empty the `anomaly_list`}} ``` Checking the current `KafkaRebalance` status: @@ -427,20 +435,18 @@ Checking the current `KafkaRebalance` status: * if `Ready`, the rebalance was successful. * if there is a queued rebalancing scale down (`Kafka.status.autoRebalance.modes[remove-brokers]` exists), start the rebalancing scale down and transition to **RebalanceOnScaleDown**. * if there is a queued rebalancing scale up (`Kafka.status.autoRebalance.modes[add-brokers]` exists), start the rebalancing scale up and transition to **RebalanceOnScaleUp**. - * If no queued rebalancing scale down or scale up, just transition to **Idle**, clean `Kafka.status.autoRebalance.modes`, delete the "actual" `KafkaRebalance` custom resource and also the configmap that triggered the rebalance by matching the `anomalyId` suffix in their names. + * If no queued rebalancing scale down or scale up, just transition to **Idle**, clean `Kafka.status.autoRebalance.modes`, delete the "actual" `KafkaRebalance` custom resource. * if `PendingProposal`, `ProposalReady` or `Rebalancing`, the rebalancing is still running. * No further actions required. * if `NotReady` - * the rebalancing failed, transition to **Idle** and also removing the corresponding mode from the status. The operator also deletes the "actual" `KafkaRebalance` custom resource and the configmap associated with it. + * the rebalancing failed, transition to **Idle** and also removing the corresponding mode from the status. The operator also deletes the "actual" `KafkaRebalance` custom resource and empties the ConfigMap. If, during an ongoing auto-rebalancing, the `KafkaRebalance` custom resource is not there anymore on the next reconciliation, it could mean the user deleted it while the operator was stopped/crashed/not running. In this case, the FSM will assume it as `NotReady` so falling in the last case above. -#### Metrics for tracking the rebalance requests - ## Affected/not affected projects -This change will affect the Strimzi cluster operator and a new repository named `anomaly-detector-notifier` will be added under the Strimzi organisation. +This change will affect the Strimzi cluster operator and a new repository named `strimzi-notifier` will be added under the Strimzi organisation. ## Rejected Alternatives From f6c95c041e0edf91bafb96e89cd361a65effb021 Mon Sep 17 00:00:00 2001 From: ShubhamRwt Date: Mon, 22 Sep 2025 16:48:12 +0530 Subject: [PATCH 07/20] Pushed example yamls Signed-off-by: ShubhamRwt --- 106-auto-rebalance-on-imbalanced-clusters.md | 34 ++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/106-auto-rebalance-on-imbalanced-clusters.md b/106-auto-rebalance-on-imbalanced-clusters.md index a579c78c..3e9b8750 100644 --- a/106-auto-rebalance-on-imbalanced-clusters.md +++ b/106-auto-rebalance-on-imbalanced-clusters.md @@ -255,14 +255,44 @@ We don't have to worry about the loss of any other new anomalies which was detec Users cannot configure the notifier if they are utilising the auto-rebalance on imbalanced cluster. This is because the operator is using our custom notifier for getting alerts about goal violations. -If the users try to override the notifier while the `imbalance` mode is enabled, the auto-rebalance `imbalance` configuration then the operator would throw errors in the auto-rebalance status field of the Kafka CR. +If the users try to override the notifier while the `imbalance` mode is enabled, then the operator would throw warnings in the status field of the Kafka CR and ignore the changes made by the user + +```yaml +status: + autoRebalance: + state: Idle + lastTransitionTime: "2025-09-22T16:04:00Z" + modes: + - mode: imbalance + conditions: + - type: Error + status: "True" + reason: UnsupportedOperationException + message: | + Notifier cannot be overridden since `imbalance` mode is enabled in the `auto-rebalance` configuration +``` If the users really want to have their own way of dealing with the imbalanced clusters then they can disable auto-rebalance in `imbalance` mode and use their own notifier. Another way for users to use their own notifier can be to extend our notifier and use our alert method i.e `super.alert()` first in their `alert()` method implementation. #### What happens if an unfixable goal violation happens -In case, there is an unfixable goal violation like `DiskDistributionUsage` goal is violated but even after rebalance we cannot fix it since the all the disks are already completely populated, in that case the notifier would simply ignore that anomaly. This is because Cruise Control provides a check to first see if the violated goal can be fixed or not by trying a dry run internally. If the violated goal is unfixable then that goal is ignored and will not be added to the ConfigMap but the user will be prompted about the unfixable violation in the auto-rebalancing status section of the Kafka CR. +In case, there is an unfixable goal violation like `DiskDistributionUsage` goal is violated but even after rebalance we cannot fix it since the all the disks are already completely populated, in that case the notifier would simply ignore that anomaly. This is because Cruise Control provides a check to first see if the violated goal can be fixed or not by trying a dry run internally. If the violated goal is unfixable then that goal is ignored and will not be added to the ConfigMap but the user will be prompted about the unfixable violation in the status section of the Kafka CR. + +```yaml +status: + autoRebalance: + state: Idle + lastTransitionTime: "2025-09-22T16:04:00Z" + modes: + - mode: imbalance + conditions: + - type: Warning + status: "True" + reason: UnfixableViolatedGoal + message: | + The detected `DiskDistributionGoal` cannot be fixed. +``` #### Metrics for tracking the rebalance requests From 39da9e10b4657b80d50b37b0948a192116dddcfb Mon Sep 17 00:00:00 2001 From: ShubhamRwt Date: Mon, 22 Sep 2025 16:53:32 +0530 Subject: [PATCH 08/20] Minor Edits Signed-off-by: ShubhamRwt --- 106-auto-rebalance-on-imbalanced-clusters.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/106-auto-rebalance-on-imbalanced-clusters.md b/106-auto-rebalance-on-imbalanced-clusters.md index 3e9b8750..e17ef532 100644 --- a/106-auto-rebalance-on-imbalanced-clusters.md +++ b/106-auto-rebalance-on-imbalanced-clusters.md @@ -215,7 +215,7 @@ Since we are working with only goal related violation every anomaly would have s In case the anomaly is unfixable due to issues like a lack of physical hardware (e.g. insufficient number of racks to satisfy rack awareness, insufficient number of brokers to satisfy `ReplicaCapacityGoal`, or insufficient number of resources to satisfy resource capacity goals), then they will be ignored. The `AnomalyDetectorNotifier` will override all the methods declared by the `AnomalyNotifier` interface. We will provide a concrete implementations of the `AnomalyNotifier.alert` method which will alert the operator whenever an anomaly is detected by the operator. -Upon detection of an anomaly, the notifier would create a configmap with name set as `goal-violation-map`. +Upon detection of an anomaly, the notifier would create a ConfigMap with name set as `-goal-violation-map`. The ConfigMap will look like this: @@ -234,7 +234,7 @@ data: # ... ``` -The advantages of using a single configmap for every anomaly are: +The advantages of using a single ConfigMap for every anomaly are: 1. Single place to put in all the anomalies 2. Even when dealing multiple Kafka clusters, the ConfigMap created will be equal to number of clusters deployed From 65fada5b04d864a5bf176ff5998e576bbdfe0ecd Mon Sep 17 00:00:00 2001 From: ShubhamRwt Date: Wed, 29 Oct 2025 17:39:57 +0530 Subject: [PATCH 09/20] Added suggestions Signed-off-by: ShubhamRwt --- 106-auto-rebalance-on-imbalanced-clusters.md | 122 ++++++++++--------- 1 file changed, 66 insertions(+), 56 deletions(-) diff --git a/106-auto-rebalance-on-imbalanced-clusters.md b/106-auto-rebalance-on-imbalanced-clusters.md index e17ef532..a3e22b4d 100644 --- a/106-auto-rebalance-on-imbalanced-clusters.md +++ b/106-auto-rebalance-on-imbalanced-clusters.md @@ -1,13 +1,13 @@ # Auto-rebalance on imbalanced clusters -This proposal is for adding a support for auto-rebalancing a Kafka cluster when it gets imbalanced due to unevenly distributed replicas or overloaded brokers etc. -When enabled, the Strimzi operator should automatically resolve these issues detected by the Anomaly Detector Manager within Cruise Control by using a corresponding KafkaRebalance custom resource (see section [ Anomaly Detector Manager](./106-auto-rebalance-on-imbalanced-clusters.md#anomaly-detector-manager) below for a detailed description). +This proposal introduces support for automatic partition rebalancing whenever a Kafka cluster becomes imbalanced due to unevenly distributed replicas, overloaded brokers, or similar issues. +This feature is opt-in, and when enabled, allows the Strimzi Operator to automatically execute partition rebalances through `KafkaRebalance` custom resources whenever partition imbalances are detected by Cruise Control. ## Motivation Currently, if the cluster is imbalanced, the user would need to manually rebalance the cluster by using the `KafkaRebalance` custom resource. With smaller clusters, it is feasible to fix things manually. However, for larger ones it can be very time-consuming, or just not feasible, to fix all the imbalances on your own. -It would be useful for users of Strimzi to be able to have these imbalanced cluster balanced automatically. +It would be useful for users of Strimzi to be able to have these imbalanced clusters balanced automatically. ### Introduction to Self Healing in Cruise Control @@ -17,7 +17,8 @@ In order to understand how we plan to automatically fix unbalanced Kafka cluster The above flow diagram depicts the self-healing process in Cruise Control. The anomaly detector manager detects an anomaly (using the detector classes) and forwards it to the notifier. -The notifier then decides what action to take on the anomaly whether to fix it, ignore it or delay. Cruise Control provides various notifiers to alert the users about the detected anomaly in several ways like Slack, Alerta, MS Teams etc. +The notifier then decides what action to take on the anomaly whether to fix it, ignore it or delay. +Cruise Control provides various notifiers to alert the users about the detected anomaly in several ways like Slack, Alerta, MS Teams etc. #### Anomaly Detector Manager @@ -25,21 +26,21 @@ The anomaly detector manager helps in detecting the anomalies as well as handlin It acts as a coordinator between the detector classes and the classes which will handle resolving the anomalies. Various detector classes like `GoalViolationDetector`, `DiskFailureDetector`, `KafkaBrokerFailureDetector` etc. are used for the anomaly detection, which runs periodically to check if the cluster has their corresponding anomalies or not. The frequency of this check can be changed via the `anomaly.detection.interval.ms` configuration. -Detector classes have different mechanisms to detect their corresponding anomalies. -For example, `KafkaBrokerFailureDetector` utilises Kafka Metadata API whereas `DiskFailureDetector` and `TopicAnomalyDetector` utilises Kafka Admin API. +Detector classes use different mechanisms to detect their corresponding anomalies. +For example, `KafkaBrokerFailureDetector` utilises Kafka Admin API whereas `DiskFailureDetector` and `TopicAnomalyDetector` utilises Kafka Admin API. Furthermore, `MetricAnomalyDetector` use metrics and `GoalViolationDetector` uses the load distribution to detect their anomalies. The detected anomalies can be of various types: * Goal Violation - This happens if certain [optimization goals](https://strimzi.io/docs/operators/in-development/deploying#optimization_goals) are violated (e.g. DiskUsageDistributionGoal etc.). These goals can be configured through the `self.healing.goals` option in Cruise Control configuration. However, this option is forbidden in the `spec.cruiseControl.config` section of the `Kafka` CR. -* Topic Anomaly - Where one or more topics in cluster violates user-defined properties (e.g. some partitions are too large in disk). +* Topic Anomaly - When one or more topics in the cluster violate user-defined properties (e.g. some partitions are too large on disk). * Broker Failure - This happens when a non-empty broker crashes or leaves a cluster for a long time. -* Disk Failure - This failure happens if one of the non-empty disks fails (related to a Kafka Cluster with JBOD disks). +* Disk Failure - This failure happens when one of the non-empty disks fails (in a Kafka cluster with JBOD disks). * Metric anomaly - This failure happens if metrics collected by Cruise Control have some anomaly in their value (e.g. a sudden rise in the log flush time metrics). -The detected anomalies are inserted into a priority queue where comparator is based upon the priority value. +The detected anomalies are inserted into a priority queue where the comparator is based upon the priority value. The smaller the priority value is, the higher priority the anomaly type has. The anomaly detector manager calls the notifier to get an action regarding whether the anomaly should be fixed, delayed, or ignored. -If the action is `FIX`, then the anomaly detector manager calls the classes that are required to resolve the anomaly. +If self-healing is enabled and the action is `FIX`, then the anomaly detector manager calls the classes that are required to resolve the anomaly. Anomaly detection also has various [configurations](https://github.com/linkedin/cruise-control/wiki/Configurations#anomalydetector-configurations), such as the detection interval and the anomaly notifier class, which can affect the performance of the Cruise Control server and the latency of the anomaly detection. @@ -50,13 +51,17 @@ The notification sent by these classes increases the visibility of the operation The notifier class used by Cruise Control is configurable and custom notifiers can be used by setting the `anomaly.notifier.class` property. The notifier class returns the `action` that is going to be taken on the flagged anomaly. These actions have three types: -* `FIX` - Start the anomaly fix -* `CHECK` - Delay the anomaly fix -* `IGNORE` - Ignore the anomaly fix +* `FIX` - Fix the anomaly +* `CHECK` - Check the anomaly at a later time +* `IGNORE` - Ignore the anomaly -The default `NoopNotifer` always sets the notifier action as `IGNORE`, which means that the detected anomaly will be silently ignored and no notification is sent to the user. +The default notifier enabled by Cruise Control is the `NoopNotifer`. -Cruise Control also provides [custom notifiers](https://github.com/linkedin/cruise-control/wiki/Configure-notifications) like Slack Notifier, Alerta Notifier etc. for notifying users regarding the anomalies. There are multiple other [self-healing notifier](https://github.com/linkedin/cruise-control/wiki/Configurations#selfhealingnotifier-configurations) related configurations you can use to make notifiers more efficient as per the use case. +* This notifier always returns `IGNORE` which means that the anomaly detector manager won't use any class to fix the anomaly. +* This notifier doesn't implement any notification mechanism to the users. + +Cruise Control also provides [custom notifiers](https://github.com/linkedin/cruise-control/wiki/Configure-notifications) like Slack Notifier, Alerta Notifier etc. for notifying users regarding the anomalies. +There are multiple other [self-healing notifier](https://github.com/linkedin/cruise-control/wiki/Configurations#selfhealingnotifier-configurations) related configurations you can use to make notifiers more efficient as per the use case. #### Self Healing @@ -73,7 +78,7 @@ Even under normal operation, it's common for Kafka clusters to encounter problem Currently, in any such scenario these issues need to be fixed manually i.e. if the cluster is imbalanced then a user might instruct Cruise Control to move the partition replicas across the brokers in order to fix the imbalance using the `KafkaRebalance` custom resource. Users can currently enable anomaly detection and can also [set](https://strimzi.io/docs/operators/latest/full/deploying.html#setting_up_alerts_for_anomaly_detection) the notifier to one of those included with Cruise Control (`SelfHealingNotifier`, `AlertaSelfHealingNotifier`, `SlackSelfHealingNotifier` etc.). -All the `self.healing` prefixed properties were disabled in Strimzi's Cruise Control integration because, initially, it was not clear how self-healing would act if pods were rolled in middle of rebalances or how Strimzi triggered manual rebalances should interact with Cruise Control triggered self-healing ones. +All the `self.healing` prefixed properties are currently disabled in Strimzi's Cruise Control integration because, initially, it was not clear how self-healing would act if pods were rolled in middle of rebalances or how Strimzi triggered manual rebalances should interact with Cruise Control triggered self-healing ones. ### Proposal @@ -83,9 +88,9 @@ This could cause potential conflicts with other administration operations and is To resolve this issue, we will only make use of Cruise Control's anomaly detection ability, the triggering of the partition reassignments (rebalance) will the responsibility of the Strimzi Cluster Operator. To enable this, we will use approach based on the existing auto-rebalance for scaling feature (see the [documentation](https://strimzi.io/docs/operators/latest/deploying#proc-automating-rebalances-str) for more details). We will be using the anomaly detection classes related to goal violations that can be addressed by a partition rebalances but not other anomaly detection classes related to goal violations that would require manual intervention like disk or broker failures. -TThe reason behind thus is that disk failures and broker failures can cannot be fixed by rebalancing alone, they require manual intervention. +The reason behind this is that disk failures and broker failures can cannot be fixed by rebalancing alone, they require manual intervention. It would much easier to spin up a new disk in case of disk failures and in the same way it is better to fix the issue with the broker directly instead of just moving the partitions replicas away from it through rebalancing. -Therefore, it would be non-trivial for the Strimzi Operator to fix these failures, hence we narrow down the scope to goal violations that the Operator can fix with a rebalance. +Therefore, it would be non-trivial for the Strimzi Operator to fix these failures, hence these are not goals of this proposal and might be addressed later in a separate proposals. Following the above approach will provide us with the following advantages: * we ensure that the operator controls all rebalance and cluster remediation operations. * using the existing `KafkaRebalance` CR system gives more visibility into what is happening and when, which (as we don't support the Cruise Control UI) enhances observability and will also aid in debugging. @@ -95,14 +100,14 @@ Following the above approach will provide us with the following advantages: The [`auto-rebalancing`](https://strimzi.io/docs/operators/latest/deploying#proc-automating-rebalances-str) feature in Strimzi allows the operator to run a rebalance automatically when a Kafka cluster is scaled up (by adding brokers) or scaled down (by removing brokers). Auto-rebalancing in Strimzi currently supports two modes: -* add-brokers - auto-rebalancing on scale up -* remove-brokers - auto-rebalancing on scale down +* `add-brokers` - auto-rebalancing on scale up +* `remove-brokers` - auto-rebalancing on scale down To leverage the automated rebalance on imbalanced cluster (those with detected Goal violations), we will be introducing a new mode to the auto-rebalancing feature. -The new mode will be called `imbalance`, which means that cluster imbalance was detected and rebalancing should be applied to the all the brokers. +The new mode will be called `imbalance`, which means that cluster imbalance was detected and rebalancing should be applied to all the brokers. The mode is defined by setting the `spec.cruiseControl.autoRebalance.mode` field as `imbalance` and the corresponding rebalancing configuration is defined as a reference to a "template" `KafkaRebalance` custom resource, by using the `spec.cruiseControl.autoRebalance.template` field as a [LocalObjectReference](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/local-object-reference/). This field is optional and if not specified, the auto-rebalancing runs with the default Cruise Control configuration (i.e. the same used for unmodified manual `KafkaRebalance` invocations). -To provide users more flexibility, they only have to configure the auto-rebalance modes they wish to use whether it be `add-brokers`, `remove-brokers`, or `imbalance`.. +To provide users more flexibility, they only have to configure the auto-rebalance modes they wish to use whether it be `add-brokers`, `remove-brokers`, or `imbalance`. When the auto-rebalance configuration is set with `imbalance` mode enabled, the operator will trigger a partition rebalance whenever a goal violation is detected by the anomaly detector. To trigger the auto-rebalance, the operator must know that the cluster is imbalanced due to some goal violation anomaly. We will create our own custom notifier named `StrimziCruiseControlNotifier` to do the same. @@ -149,7 +154,7 @@ spec: The auto-rebalance configuration for the `spec.cruiseControl.autoRebalance.template` property in the `Kafka` custom resource is provided through a `KafkaRebalance` custom resource defined as a "template". That is a `KafkaRebalance` custom resource with the `strimzi.io/rebalance-template: true` annotation set. -When it is created, the `KafkaRebalanceAssemblyOperator` doesn't run any rebalancing. +When it is created, the cluster operator doesn't run any rebalancing. This is not an actual rebalance request to get an optimization proposal; it is simply where the configuration for auto-rebalancing is defined. The user can specify rebalancing goals and configuration in the resource. @@ -176,7 +181,7 @@ spec: ``` When the "template" is set the operator automatically creates (or updates) a corresponding "actual" `KafkaRebalance` custom resource based on the "template" when an anomaly is detected and notified by the `StrimziCruiseControlNotifier` The operator copies over goals and rebalancing options from the referenced "template" resource to the "actual" rebalancing one. -The "imbalance" mode will be mapped to the "full" mode in the actual KafkaRebalance resource which means that actual `KafkaRebalance` custom will have the mode set as `full` which within the Strimzi rebalancing operator means calling the Cruise Control API to run a rebalancing taking all brokers into account. +The "imbalance" mode will be mapped to the "full" mode in the actual KafkaRebalance resource which means that actual `KafkaRebalance` custom resource will have the mode set as `full` which within the Strimzi rebalancing operator means calling the Cruise Control API to run a rebalancing taking all brokers into account. The generated `KafkaRebalance` custom resource will be called `-auto-rebalancing-imbalance-`, where the `` part comes from the `metadata.name` in the `Kafka` custom resource, and `imbalance` refers to applying the rebalance to all the brokers and the `` would be retrieved from the notifier. @@ -184,7 +189,7 @@ The generated `KafkaRebalance` custom resource will be called ` apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaRebalance metadata: - name: my-cluster-auto-rebalancing-add-brokers + name: my-cluster-auto-rebalancing-imbalance- finalizers: - strimzi.io/auto-rebalancing spec: @@ -209,11 +214,11 @@ The finalizer is removed when Cruise Control indicates that the partition reassi Cruise Control provides the `AnomalyNotifier` interface, which has multiple abstract methods on what to do if certain anomalies are detected. Some of those methods are:`onGoalViolation()`, `onBrokerFailure()`, `onDiskFailure`, `alert()`. -The `AnomalyDetectorNotifier` will implement the `AnomalyNotifier` interface. +The `StrimziCruiseControlNotifier` will implement the `AnomalyNotifier` interface. Every detected anomaly is placed in a priority queue and each of the anomalies have a priority value assigned to them. Since we are working with only goal related violation every anomaly would have same priority, and they will be fixed on the basis of first come, first served mechanism. In case the anomaly is unfixable due to issues like a lack of physical hardware (e.g. insufficient number of racks to satisfy rack awareness, insufficient number of brokers to satisfy `ReplicaCapacityGoal`, or insufficient number of resources to satisfy resource capacity goals), then they will be ignored. -The `AnomalyDetectorNotifier` will override all the methods declared by the `AnomalyNotifier` interface. +The `StrimziCruiseControlNotifier` will override all the methods declared by the `AnomalyNotifier` interface. We will provide a concrete implementations of the `AnomalyNotifier.alert` method which will alert the operator whenever an anomaly is detected by the operator. Upon detection of an anomaly, the notifier would create a ConfigMap with name set as `-goal-violation-map`. @@ -223,11 +228,11 @@ The ConfigMap will look like this: kind: ConfigMap apiVersion: v1 metadata: - name: goal-violation-map + name: my-cluster-goal-violation-map data: last_anomaly_detection_timestamp: rebalance_finished_timestamp: - anomaly_list: | + anomalyList: | - - - @@ -239,8 +244,9 @@ The advantages of using a single ConfigMap for every anomaly are: 2. Even when dealing multiple Kafka clusters, the ConfigMap created will be equal to number of clusters deployed This generated config map will contain the list of goal violation anomalies in the section named `anomaly_list`. The ConfigMap will also store the timestamps for when the last anomaly detection was run and when the rebalance is finished. +Whenever a rebalance is finished, the `anomalyList` would be set to empty by the operator. -The `last_anomaly_detection_timestamp` corresponds to when the last anomaly detection was run and will be updated everytime a new anomaly detection is run and the `rebalance_finished_timestamp` refers to the time when the running rebalance is finished and will be updated everytime when the running rebalance is finished +The `last_anomaly_detection_timestamp` corresponds to when the last anomaly detection was run and will be updated everytime a new anomaly detection is run and the `rebalance_finished_timestamp` refers to the time when the running rebalance is finished and will be updated everytime when the running rebalance is finished. The created ConfigMap will persist when self-healing is enabled and will be deleted if the user decides to disable self-healing. This is because the ConfigMap is going to help us track the timestamps during the complete process. @@ -265,7 +271,7 @@ status: modes: - mode: imbalance conditions: - - type: Error + - type: Warning status: "True" reason: UnsupportedOperationException message: | @@ -273,7 +279,6 @@ status: ``` If the users really want to have their own way of dealing with the imbalanced clusters then they can disable auto-rebalance in `imbalance` mode and use their own notifier. -Another way for users to use their own notifier can be to extend our notifier and use our alert method i.e `super.alert()` first in their `alert()` method implementation. #### What happens if an unfixable goal violation happens @@ -296,11 +301,11 @@ status: #### Metrics for tracking the rebalance requests -If the users want to track when the auto-rebalance happened or not, they can access the Strimzi [metrics](https://github.com/strimzi/strimzi-kafka-operator/blob/main/examples/metrics/grafana-dashboards/strimzi-operators.json#L712) about when the KafkaRebalance custom resources were visible/created. These metrics also cover the KafkaRebalances which were created automatically so the users can utilize them to understand when an auto-rebalance wa triggered in their cluster +If the users want to track when the auto-rebalance happened or not, they can access the Strimzi [metrics](https://github.com/strimzi/strimzi-kafka-operator/blob/main/examples/metrics/grafana-dashboards/strimzi-operators.json#L712) about when the `KafkaRebalance` custom resources were visible/created. These metrics also cover the `KafkaRebalance`(s) which were created automatically so the users can utilize them to understand when an auto-rebalance wa triggered in their cluster ### Auto-rebalancing execution for `imbalance` mode -### Auto-rebalancing Finite State Machine (FSM) for `imbalance` mode +#### Auto-rebalancing Finite State Machine (FSM) for `imbalance` mode Currently, the auto-rebalancing mechanism runs through a Finite State Machine (FSM) made by the following states: @@ -308,7 +313,7 @@ Currently, the auto-rebalancing mechanism runs through a Finite State Machine (F * **RebalanceOnScaleDown**: a rebalancing related to a scale down operation is running. * **RebalanceOnScaleUp**: a rebalancing related to a scale up operation is running. -With the new `imbalance` mode, we will be introducing a new state to the FSM called `RebalanceOnAnomalyDetection`. +With the new `imbalance` mode, we will be introducing a new state to the FSM called `RebalanceOnImbalance`. This state will be associated with rebalances triggered by imbalanced cluster. With the new `imbalance` mode, the FSM state transitions would look something like this: @@ -317,12 +322,12 @@ With the new `imbalance` mode, the FSM state transitions would look something li flowchart TB A[Idle] --scaleDown requested--> B[RebalanceOnScaleDown] A[Idle] --scaleUp requested --> C[RebalanceOnScaleUp] - A[Idle] --imbalanced cluster detected --> D[RebalanceOnAnomalyDetection] + A[Idle] --imbalanced cluster detected --> D[RebalanceOnImbalance] ``` * from **Idle** to: * **RebalanceOnScaleDown**: if a scale down operation was requested. This transition happens even if a scale up was requested at the same time but the rebalancing on scaling down has the precedence. The rebalancing on scale up is queued. They will run sequentially. * **RebalanceOnScaleUp**: if only a scale up operation was requested. There was no scale down operation requested. - * **RebalanceOnAnomalyDetection**: if a ConfigMap related to goal violation was detected, and the `anomaly_list` is not empty + * **RebalanceOnImbalance**: if a ConfigMap related to goal violation was detected, and the `anomaly_list` is not empty ```mermaid sequenceDiagram @@ -341,7 +346,7 @@ sequenceDiagram critical queued scale down and scale up and full rebalance(imbalance mode) RebalanceOnScaleDown->>RebalanceOnScaleDown: execute scale down RebalanceOnScaleDown-->>RebalanceOnScaleUp: then scale up - RebalanceOnScaleUp-->>RebalanceOnAnomalyDetection: then full rebalance + RebalanceOnScaleUp-->>RebalanceOnImbalance: then full rebalance end RebalanceOnScaleDown->>Idle: scale down complete with no queued items ``` @@ -368,7 +373,7 @@ sequenceDiagram critical queued scale down and scale up and full rebalance RebalanceOnScaleUp->>RebalanceOnScaleDown: execute scale down RebalanceOnScaleDown-->>RebalanceOnScaleUp: then scale up - RebalanceOnScaleUp-->>RebalanceOnAnomalyDetection: then full rebalance(imbalance mode) + RebalanceOnScaleUp-->>RebalanceOnImbalance: then full rebalance(imbalance mode) end RebalanceOnScaleUp->>Idle: scale up complete with no queued items ``` @@ -376,32 +381,32 @@ sequenceDiagram * from **RebalanceOnScaleUp**: * **RebalanceOnScaleUp**: if a rebalancing on scale up is still running or another one was requested while the first one ended. * **RebalanceOnScaleDown**: if a scale down operation was requested, so the current rebalancing scale up is stopped (and queued) and a new rebalancing scale down is started. The rebalancing scale up will be postponed. - * **RebalanceOnAnomalyDetection**: if a ConfigMap related to goal violation was detected. It will run once the queued scale down and scale up is completed. + * **RebalanceOnImbalance**: if a ConfigMap related to goal violation was detected. It will run once the queued scale down and scale up is completed. * **Idle**: if a scale up operation was requested, it was executed and completed successfully/failed or a full rebalance was asked due to an anomaly but since the scale-down rebalance is done, we can ignore the anomalies assuming they are fixed by the rebalance. In case, they are not fixed, Cruise Control will detect them again and a new rebalance would be requested. ```mermaid sequenceDiagram autonumber - RebalanceOnAnomalyDetection->>RebalanceOnScaleDown: requested scale down - RebalanceOnAnomalyDetection->>RebalanceOnScaleUp: requested scale up - RebalanceOnAnomalyDetection->>RebalanceOnAnomalyDetection: new full rebalance requested + RebalanceOnImbalance->>RebalanceOnScaleDown: requested scale down + RebalanceOnImbalance->>RebalanceOnScaleUp: requested scale up + RebalanceOnImbalance->>RebalanceOnImbalance: new full rebalance requested critical queued scale up and skew rebalance - RebalanceOnAnomalyDetection->>RebalanceOnScaleUp: execute scale up - RebalanceOnScaleUp-->>RebalanceOnAnomalyDetection: then full rebalance + RebalanceOnImbalance->>RebalanceOnScaleUp: execute scale up + RebalanceOnScaleUp-->>RebalanceOnImbalance: then full rebalance end critical queued scale down and skew rebalance - RebalanceOnAnomalyDetection->>RebalanceOnScaleDown: execute scale down - RebalanceOnScaleDown-->>RebalanceOnAnomalyDetection: then full rebalance + RebalanceOnImbalance->>RebalanceOnScaleDown: execute scale down + RebalanceOnScaleDown-->>RebalanceOnImbalance: then full rebalance end critical queued scale down and scale up and skew rebalance - RebalanceOnAnomalyDetection->>RebalanceOnScaleDown: execute scale down + RebalanceOnImbalance->>RebalanceOnScaleDown: execute scale down RebalanceOnScaleDown-->>RebalanceOnScaleUp: then scale up - RebalanceOnScaleUp-->>RebalanceOnAnomalyDetection: then full rebalance + RebalanceOnScaleUp-->>RebalanceOnImbalance: then full rebalance end - RebalanceOnAnomalyDetection->>Idle: scale up complete with no queued items + RebalanceOnImbalance->>Idle: scale up complete with no queued items ``` -* from **RebalanceOnAnomalyDetection**: - * **RebalanceOnAnomalyDetection**: if another goal violation was detected while the first one ended. If a scale down and scale up is also queued up then they will execute first. +* from **RebalanceOnImbalance**: + * **RebalanceOnImbalance**: if another goal violation was detected while the first one ended. If a scale down and scale up is also queued up then they will execute first. * **RebalanceOnScaleUp**: if a rebalancing on scale up is queued and will run if there is no other rebalancing scale down in queue. If a rebalancing scale down is in queue then it will be executed first. * **RebalanceOnScaleDown**: if a scale down operation was requested, it will run once the full rebalance is completed * **Idle**: if full rebalance was requested, it was executed and completed successfully or failed. @@ -431,17 +436,17 @@ The `KafkaAutoRebalancingReconciler.reconcile()` loads the `Kafka.status.autoReb The FSM is initialized based on the `state` field. -Let's see what happens during the auto-rebalancing process when the FSM starts from the **Idle** state and transitions to **RebalanceOnAnomalyDetection** +Let's see what happens during the auto-rebalancing process when the FSM starts from the **Idle** state and transitions to **RebalanceOnImbalance** #### Idle This state is set since the beginning when a `Kafka` custom resource is created with the `spec.cruiseControl.autoRebalance` field. It is also the end state of a previous successfully completed or failed auto-rebalancing. -In case of successful completion, once the rebalance moves to `Ready` state, we will delete the KafkaRebalance and move the empty the `anomaly_list` then update the `auto-rebalance` state to `Idle`. +In case of successful completion, once the rebalance moves to `Ready` state, we will delete the `KafkaRebalance` and move the empty the `anomaly_list` then update the `auto-rebalance` state to `Idle`. In case of failed auto-rebalancing, once the rebalance moves to `NotReady` state, we will follow the same procedure we used in successful completion. In this state, the operator removes the finalizer and deletes the corresponding "actual" `KafkaRebalance` custom resource. -#### RebalanceOnAnomalyDetection +#### RebalanceOnImbalance In this state, an anomaly was detected and a corresponding ConfigMap was generated by the notifier. @@ -453,7 +458,7 @@ flowchart TB B --> C[Ready] C -- queued scale Down --> D[RebalanceOnScaleDown] C -- queued scale up --> E[RebalanceOnScaleUp] - C -- queued rebalance --> F[RebalanceOnAnomalyDetection] + C -- queued rebalance --> F[RebalanceOnImbalance] B --> G[PendingProposal, ProposalReady or Rebalancing] G --> H{{rebalancing is running}} B --> I[NotReady] @@ -499,6 +504,11 @@ This alternative is similar to alternative 1 where we will use a Kubernetes cust The idea was to create a Kubernetes custom resource named `KafkaAnomaly` everytime an anomaly was detected and both the operator and the Notifier would watch the resource for updates. But with this approach the operator will be responsible to make decision regarding the anomaly should be fixed or not +### Using Cruise Control self-healing ability + +If we were to enable the self-healing ability of Cruise Control then, in response to detected anomalies, Cruise Control would issue partition reassignments without involving the Strimzi Cluster Operator. +This could cause potential conflicts with other administration operations and is the primary reason self-healing has been disabled until now. + Pros: * Allows the operator to ignore the anomalies is some task is already running in the cluster like rolling, rebalance etc. From 9453f7f34d677fd4e6a046a9f12985473d0682a3 Mon Sep 17 00:00:00 2001 From: ShubhamRwt Date: Fri, 7 Nov 2025 16:37:45 +0530 Subject: [PATCH 10/20] Added suggestions by Tom and Jakub Signed-off-by: ShubhamRwt --- 106-auto-rebalance-on-imbalanced-clusters.md | 185 ++++++++++++------- 1 file changed, 117 insertions(+), 68 deletions(-) diff --git a/106-auto-rebalance-on-imbalanced-clusters.md b/106-auto-rebalance-on-imbalanced-clusters.md index a3e22b4d..6a39fcc7 100644 --- a/106-auto-rebalance-on-imbalanced-clusters.md +++ b/106-auto-rebalance-on-imbalanced-clusters.md @@ -27,11 +27,10 @@ It acts as a coordinator between the detector classes and the classes which will Various detector classes like `GoalViolationDetector`, `DiskFailureDetector`, `KafkaBrokerFailureDetector` etc. are used for the anomaly detection, which runs periodically to check if the cluster has their corresponding anomalies or not. The frequency of this check can be changed via the `anomaly.detection.interval.ms` configuration. Detector classes use different mechanisms to detect their corresponding anomalies. -For example, `KafkaBrokerFailureDetector` utilises Kafka Admin API whereas `DiskFailureDetector` and `TopicAnomalyDetector` utilises Kafka Admin API. -Furthermore, `MetricAnomalyDetector` use metrics and `GoalViolationDetector` uses the load distribution to detect their anomalies. +For example, `KafkaBrokerFailureDetector`, `DiskFailureDetector` and `TopicAnomalyDetector` utilises Kafka Admin API while `MetricAnomalyDetector` use metrics and `GoalViolationDetector` uses the load distribution (calculated by Cruise Control itself) to detect their anomalies. The detected anomalies can be of various types: -* Goal Violation - This happens if certain [optimization goals](https://strimzi.io/docs/operators/in-development/deploying#optimization_goals) are violated (e.g. DiskUsageDistributionGoal etc.). These goals can be configured through the `self.healing.goals` option in Cruise Control configuration. However, this option is forbidden in the `spec.cruiseControl.config` section of the `Kafka` CR. -* Topic Anomaly - When one or more topics in the cluster violate user-defined properties (e.g. some partitions are too large on disk). +* Goal Violation - This happens if certain [optimization goals](https://strimzi.io/docs/operators/in-development/deploying#optimization_goals) are violated (e.g. DiskUsageDistributionGoal etc.). These goals can be configured through the `self.healing.goals` option in the Cruise Control configuration. However, this option is currently forbidden in the `spec.cruiseControl.config` section of the `Kafka` CR. +* Topic Anomaly - When one or more topics in the cluster violate user-defined properties (e.g. some partitions are too large on disk, the replication factor of a topic is different from a given default value etc). * Broker Failure - This happens when a non-empty broker crashes or leaves a cluster for a long time. * Disk Failure - This failure happens when one of the non-empty disks fails (in a Kafka cluster with JBOD disks). * Metric anomaly - This failure happens if metrics collected by Cruise Control have some anomaly in their value (e.g. a sudden rise in the log flush time metrics). @@ -75,23 +74,26 @@ In case the anomaly detected is unfixable for e.g. violated hard goals that cann ## Current situation Even under normal operation, it's common for Kafka clusters to encounter problems such as partition key skew leading to an uneven partition distribution, or hardware issues like disk failures, which can degrade overall cluster's health and performance. -Currently, in any such scenario these issues need to be fixed manually i.e. if the cluster is imbalanced then a user might instruct Cruise Control to move the partition replicas across the brokers in order to fix the imbalance using the `KafkaRebalance` custom resource. +In Strimzi's current implementation of Cruise Control, fixing these issues needs to be triggered manually i.e. if the cluster is imbalanced then a user might instruct Cruise Control to move the partition replicas across the brokers in order to fix the imbalance using the `KafkaRebalance` custom resource. Users can currently enable anomaly detection and can also [set](https://strimzi.io/docs/operators/latest/full/deploying.html#setting_up_alerts_for_anomaly_detection) the notifier to one of those included with Cruise Control (`SelfHealingNotifier`, `AlertaSelfHealingNotifier`, `SlackSelfHealingNotifier` etc.). All the `self.healing` prefixed properties are currently disabled in Strimzi's Cruise Control integration because, initially, it was not clear how self-healing would act if pods were rolled in middle of rebalances or how Strimzi triggered manual rebalances should interact with Cruise Control triggered self-healing ones. +If a user somehow tries to set the ### Proposal -This proposal allows the users to have their cluster balanced automatically whenever the cluster gets imbalanced due to overloaded broker, CPU usage etc. -If we were to enable the self-healing ability of Cruise Control then, in response to detected anomalies, Cruise Control would issue partition reassignments without involving the Strimzi Cluster Operator. +This proposal is concerned with giving users the option to have their Kafka cluster's balanced automatically whenever they become imbalanced due to overloaded broker, CPU usage etc. +However, the proposal is not to rely on the Cruise Control self-healing implementation directly. +If we were to enable that functionality then, in response to detected anomalies, Cruise Control would issue partition reassignments without involving the Strimzi Cluster Operator. This could cause potential conflicts with other administration operations and is the primary reason self-healing has been disabled until now. To resolve this issue, we will only make use of Cruise Control's anomaly detection ability, the triggering of the partition reassignments (rebalance) will the responsibility of the Strimzi Cluster Operator. -To enable this, we will use approach based on the existing auto-rebalance for scaling feature (see the [documentation](https://strimzi.io/docs/operators/latest/deploying#proc-automating-rebalances-str) for more details). -We will be using the anomaly detection classes related to goal violations that can be addressed by a partition rebalances but not other anomaly detection classes related to goal violations that would require manual intervention like disk or broker failures. -The reason behind this is that disk failures and broker failures can cannot be fixed by rebalancing alone, they require manual intervention. -It would much easier to spin up a new disk in case of disk failures and in the same way it is better to fix the issue with the broker directly instead of just moving the partitions replicas away from it through rebalancing. -Therefore, it would be non-trivial for the Strimzi Operator to fix these failures, hence these are not goals of this proposal and might be addressed later in a separate proposals. -Following the above approach will provide us with the following advantages: +To enable this, we will use an approach based on the existing auto-rebalance for scaling feature (see the [documentation](https://strimzi.io/docs/operators/latest/deploying#proc-automating-rebalances-str) for more details). +We propose using only those anomaly detection classes, related to goal violations, that can be addressed by a partition rebalance. +We will not enable the other anomaly detection classes, related to goal violations, that would require manual interventions at the infrastructure level such as disk or broker failures. +For the latter case, it would be better to spin up new disks or to fix the issue with the broker(s) directly instead of just moving the partitions replicas away from them through rebalancing. +Therefore, given the interventions required, it would be non-trivial for the Strimzi Operator to fix these failures automatically. +Hence, these are not goals of this proposal and could be addressed later in separate proposals. +Following the above approach will provide several advantages: * we ensure that the operator controls all rebalance and cluster remediation operations. * using the existing `KafkaRebalance` CR system gives more visibility into what is happening and when, which (as we don't support the Cruise Control UI) enhances observability and will also aid in debugging. @@ -105,12 +107,12 @@ Auto-rebalancing in Strimzi currently supports two modes: To leverage the automated rebalance on imbalanced cluster (those with detected Goal violations), we will be introducing a new mode to the auto-rebalancing feature. The new mode will be called `imbalance`, which means that cluster imbalance was detected and rebalancing should be applied to all the brokers. -The mode is defined by setting the `spec.cruiseControl.autoRebalance.mode` field as `imbalance` and the corresponding rebalancing configuration is defined as a reference to a "template" `KafkaRebalance` custom resource, by using the `spec.cruiseControl.autoRebalance.template` field as a [LocalObjectReference](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/local-object-reference/). -This field is optional and if not specified, the auto-rebalancing runs with the default Cruise Control configuration (i.e. the same used for unmodified manual `KafkaRebalance` invocations). +The imbalance mode is configured by creating a new object in the `spec.cruiseControl.autoRebalance` list with its `mode` field set to `imbalance` and the corresponding rebalancing configuration is defined as a reference to a template `KafkaRebalance` custom resource, by using the `spec.cruiseControl.autoRebalance.template` field as a [LocalObjectReference](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/local-object-reference/). +The `template` field is optional and if not specified, the auto-rebalancing runs with the default Cruise Control configuration (i.e. the same used for unmodified manual `KafkaRebalance` invocations). To provide users more flexibility, they only have to configure the auto-rebalance modes they wish to use whether it be `add-brokers`, `remove-brokers`, or `imbalance`. When the auto-rebalance configuration is set with `imbalance` mode enabled, the operator will trigger a partition rebalance whenever a goal violation is detected by the anomaly detector. -To trigger the auto-rebalance, the operator must know that the cluster is imbalanced due to some goal violation anomaly. -We will create our own custom notifier named `StrimziCruiseControlNotifier` to do the same. +To trigger the auto-rebalance, the operator must know that the cluster is imbalanced due to some goal violation anomaly. +We will create our own custom notifier named `StrimziCruiseControlNotifier` to do this. This notifier's job will be to update the operator regarding the goal violations so that the operator can trigger a rebalance (see section [AnomalyDetectorNotifier](./106-auto-rebalance-on-imbalanced-clusters.md#anomalydetectornotifier)). With this proposal, we are only going to support auto-rebalance on imbalanced cluster. We also plan to implement the same for topic and metrics related issues, but it will be part of future work since their implementation require different approach. @@ -137,26 +139,10 @@ spec: It is also possible to use the default Cruise Control rebalancing configuration by omitting the `template` field. -```yaml -apiVersion: kafka.strimzi.io/v1beta2 -kind: Kafka -metadata: - name: my-cluster -spec: - kafka: - # ... - cruiseControl: - # ... - autoRebalance: - # using the default Cruise Control rebalancing configuration - - mode: imbalance -``` - -The auto-rebalance configuration for the `spec.cruiseControl.autoRebalance.template` property in the `Kafka` custom resource is provided through a `KafkaRebalance` custom resource defined as a "template". -That is a `KafkaRebalance` custom resource with the `strimzi.io/rebalance-template: true` annotation set. -When it is created, the cluster operator doesn't run any rebalancing. +The configuration for Cruise Control rebalance is provided through a `KafkaRebalance` custom resource which is specifically defined as a template and is referenced in the `template` field in the example above. +A `KafkaRebalance` custom resource with the `strimzi.io/rebalance-template: true` annotation set can be used as template. +When a `KafkaRebalance` with this annotation is created, the cluster operator doesn't run any rebalancing. This is not an actual rebalance request to get an optimization proposal; it is simply where the configuration for auto-rebalancing is defined. -The user can specify rebalancing goals and configuration in the resource. Here is an example template: @@ -179,9 +165,10 @@ spec: skipHardGoalCheck: true # ... other rebalancing related configuration ``` -When the "template" is set the operator automatically creates (or updates) a corresponding "actual" `KafkaRebalance` custom resource based on the "template" when an anomaly is detected and notified by the `StrimziCruiseControlNotifier` -The operator copies over goals and rebalancing options from the referenced "template" resource to the "actual" rebalancing one. -The "imbalance" mode will be mapped to the "full" mode in the actual KafkaRebalance resource which means that actual `KafkaRebalance` custom resource will have the mode set as `full` which within the Strimzi rebalancing operator means calling the Cruise Control API to run a rebalancing taking all brokers into account. +When the `template` is set, the operator automatically creates (or updates) a corresponding `KafkaRebalance` custom resource (based on the template) when an anomaly is detected and notified by the `StrimziCruiseControlNotifier` +The operator copies over goals and rebalancing options from the referenced `template` resource to the `actual` rebalancing one. +The `KafkaRebalance` has 4 modes: full, add-broker, remove-broker and remove-disks mode. +The `imbalance` mode will be mapped to the `full` mode in the actual KafkaRebalance resource which means that actual `KafkaRebalance` custom resource will have the mode set as `full` which within the Strimzi rebalancing operator means calling the Cruise Control API to run a rebalancing taking all brokers into account. The generated `KafkaRebalance` custom resource will be called `-auto-rebalancing-imbalance-`, where the `` part comes from the `metadata.name` in the `Kafka` custom resource, and `imbalance` refers to applying the rebalance to all the brokers and the `` would be retrieved from the notifier. @@ -206,21 +193,23 @@ spec: # ... other rebalancing related configuration ``` -The operator also sets a finalizer, named `strimzi.io/auto-rebalancing`, on the "actual" `KafkaRebalance` custom resource. -This is needed to avoid the user, or any other tooling, to delete the resource while the auto-rebalancing is still running. -The finalizer is removed when Cruise Control indicates that the partition reassignment (rebalance) process has finished, with or without errors, allowing the "actual" `KafkaRebalance` custom resource deletion by the operator itself. +The operator also sets a finalizer, named `strimzi.io/auto-rebalancing`, on the generated `KafkaRebalance` custom resource. +This is needed to avoid the user, or any other tooling, deleting the resource while the auto-rebalancing is still running. +The finalizer is removed when Cruise Control indicates that the partition reassignment (rebalance) process has finished, with or without errors, allowing the generated `KafkaRebalance` custom resource to be deleted by the operator itself. #### StrimziCruiseControlNotifier Cruise Control provides the `AnomalyNotifier` interface, which has multiple abstract methods on what to do if certain anomalies are detected. Some of those methods are:`onGoalViolation()`, `onBrokerFailure()`, `onDiskFailure`, `alert()`. The `StrimziCruiseControlNotifier` will implement the `AnomalyNotifier` interface. -Every detected anomaly is placed in a priority queue and each of the anomalies have a priority value assigned to them. -Since we are working with only goal related violation every anomaly would have same priority, and they will be fixed on the basis of first come, first served mechanism. -In case the anomaly is unfixable due to issues like a lack of physical hardware (e.g. insufficient number of racks to satisfy rack awareness, insufficient number of brokers to satisfy `ReplicaCapacityGoal`, or insufficient number of resources to satisfy resource capacity goals), then they will be ignored. +Every detected anomaly is placed in a priority queue and each of the anomalies have a priority value assigned to them. +Since we are working with only goal related violations, every anomaly will have same priority. +This means that detected anomalies will be fixed on a first come, first served basis. +In situations where the anomaly is unfixable, due to issues like a lack of physical hardware (e.g. insufficient number of racks to satisfy rack awareness, insufficient number of brokers to satisfy `ReplicaCapacityGoal`, or insufficient number of resources to satisfy resource capacity goals), then they will be ignored and the user will be alerted via a Condition in the Kafka CR status. The `StrimziCruiseControlNotifier` will override all the methods declared by the `AnomalyNotifier` interface. We will provide a concrete implementations of the `AnomalyNotifier.alert` method which will alert the operator whenever an anomaly is detected by the operator. -Upon detection of an anomaly, the notifier would create a ConfigMap with name set as `-goal-violation-map`. +Upon detection of an anomaly, the notifier would create (if it doesn't already exist) or update a ConfigMap with the name `-goal-violation-map`. +This ConfigMap will contain all the detected anomalies for a given Kafka cluster. The ConfigMap will look like this: @@ -239,23 +228,73 @@ data: # ... ``` -The advantages of using a single ConfigMap for every anomaly are: -1. Single place to put in all the anomalies -2. Even when dealing multiple Kafka clusters, the ConfigMap created will be equal to number of clusters deployed +The advantages of using a single ConfigMap for all the detected anomalies versus one per anomaly are: +1. It provides a single point of reference for all the anomalies +2. When dealing multiple Kafka clusters, the ConfigMap created will be equal to number of clusters deployed + +This generated ConfigMap will contain the list of goal violation anomalies in the section named `anomalyList`. +The `anomalyList` will refer to the anomalies that were detected by the anomaly detector. +The `anomalyList` will be populated by the notifier everytime it detects an anomaly +Whenever a rebalance is about to start by the operator(either it be in imbalance mode, remove-broker mode, add-broker mode) the `anomalyList` would be set to empty. +We empty the list earlier to make it easier to track the anomalies that were caught in between the rebalance. +If the `anomalyList` isn't empty after the rebalance that means that there were anomalies detected in between the rebalance, and we need to make decision on whether we run another rebalance for these detected anomalies or not. +Refer to this [section](./106-auto-rebalance-on-imbalanced-clusters.md#what-happens-if-anomaly-is-detected-while-the-auto-rebalancemanual-rebalance-is-happening) for more details. +In cases where the rebalance is happening for `remove-broker` and `add-broker` mode, we will put a check before the rebalance starts, that if there are some anomalies detected, we should make the `anomalyList` empty. +This is because its very much possible that the rebalance that will happen can fix all the detected anomalies. +The above statement holds true for the cases of `manual` rebalances too. +If the user runs a `manual` rebalance, we will empty the `anomalyList` in those cases too. +If some other anomalies are detected again after the rebalance then they will be updated in the ConfigMap by the notifier and another rebalance will take place + +The ConfigMap will also have an option field called `unfixedAnomaly` list which would be created only when an unfixable anomaly is detected. + +```yaml +kind: ConfigMap +apiVersion: v1 +metadata: + name: my-cluster-goal-violation-map +data: + last_anomaly_detection_timestamp: + rebalance_finished_timestamp: + anomalyList: | + - + - + unfixableGoals: | + - + - +# ... +``` +The operator will use the `unfixableGoals` list to check if there are any unfixable goals detected or not. +If the list is not empty then the operator would create a `warning` condition based on the unfixable goal and add it to the `Kafka` CR status. + +The `last_anomaly_detection_timestamp` corresponds to when the last anomaly was detected and will be updated every time a new anomaly is detected. -This generated config map will contain the list of goal violation anomalies in the section named `anomaly_list`. The ConfigMap will also store the timestamps for when the last anomaly detection was run and when the rebalance is finished. -Whenever a rebalance is finished, the `anomalyList` would be set to empty by the operator. +The `rebalance_finished_timestamp` refers to the time when the last running rebalance finished and will be updated every time when a rebalance is finished. +The rebalance can be either auto-rebalance or manual rebalance. -The `last_anomaly_detection_timestamp` corresponds to when the last anomaly detection was run and will be updated everytime a new anomaly detection is run and the `rebalance_finished_timestamp` refers to the time when the running rebalance is finished and will be updated everytime when the running rebalance is finished. +The created ConfigMap will persist when self-healing is enabled and will be deleted if the user decides to disable self-healing. +This is done to keep track of the timestamps which will help us to avoid unnecessary rebalances. -The created ConfigMap will persist when self-healing is enabled and will be deleted if the user decides to disable self-healing. This is because the ConfigMap is going to help us track the timestamps during the complete process. +The `StrimziCruiseControlNotifier` will be kept in a separate repository under the Strimzi organization. -#### What happens if same anomaly is detected while the auto-rebalance is happening +#### What happens if same anomaly type is detected while the auto-rebalance/manual rebalance is happening -The `last_anomaly_detection_timestamp` was before `rebalance_finished_timestamp` timestamps will allow us to tackle cases where the rebalance was happening but anomaly detection also took place in that time period and detects the same anomaly which is being fixed by the rebalance. -Once the rebalance in finished, we can compare the `last_anomaly_detection_timestamp` and `rebalance_finished_timestamp` to compare whether the detection took place before `rebalance_finished_timestamp` or not. -If the `last_anomaly_detection_timestamp` was before `rebalance_finished_timestamp`, we can then ignore all the anomalies. -We don't have to worry about the loss of any other new anomalies which was detected since Cruise Control will detect them again if they persist. +The anomaly detector continues to run, even when a rebalance has been triggered. +Therefore, it is possible that it may detect an anomaly that is currently in the process of being fixed. +If we logged the anomaly in the ConfigMap, we may then trigger another rebalance for an anomaly that was fixed by the ongoing rebalance. +This could make operator running multiple rebalances for the anomaly and therefore creating a never ending rebalance loop. + +To tackle this problem we can make use of the `last_anomaly_detection_timestamp` and `rebalance_finished_timestamp` timestamps +Everytime an anomaly of the same type is detected we will treat its detection time as the `last_anomaly_detection_time` and update the value of it in the `last_anomaly_detection_time` field of the ConfigMap. +Now if the anomaly detection happened during the rebalance, the `ConfigMap` will be updated with the anomalies as well as the `last_anomaly_detection_time` will also be updated with last anomaly detection time. +We will track the rebalance finish time in ConfigMap under the `rebalance_finished_timestamp` field. +Now to know if the new anomaly was detected during the rebalance we can compare the `last_anomaly_detection_timestamp` and `rebalance_finished_timestamp`. +If the `last_anomaly_detection_timestamp` was before the `rebalance_finished_timestamp`, that would suggest that the anomaly was detected during the rebalance. +We can ignore all the anomalies that were detected before the `rebalance_finished_timestamp`. +This is because it is possible that the new anomalies were fixed during the rebalance. +Even if the ignored anomalies weren't fixed, the Anomaly Detector can detect them again. + +The above hold true for the manual rebalances also. +If a user tries a manual rebalance then we will still update the `rebalance_finished_timestamp` to track the last rebalance and avoid auto-rebalancing if the anomaly list is not empty and the `last_anomaly_detection_timestamp` was before the `rebalance_finished_timestamp`. #### Using other notifiers when using `imbalance` mode @@ -282,7 +321,12 @@ If the users really want to have their own way of dealing with the imbalanced cl #### What happens if an unfixable goal violation happens -In case, there is an unfixable goal violation like `DiskDistributionUsage` goal is violated but even after rebalance we cannot fix it since the all the disks are already completely populated, in that case the notifier would simply ignore that anomaly. This is because Cruise Control provides a check to first see if the violated goal can be fixed or not by trying a dry run internally. If the violated goal is unfixable then that goal is ignored and will not be added to the ConfigMap but the user will be prompted about the unfixable violation in the status section of the Kafka CR. +Cruise Control has the ability to figure out if a goal violation can be fixed by the generated optimization proposal or not. +The goal optimizer class does this job by doing analysis/dry-run if we can fix the anomaly by the generated proposal or not. +If there is some goal, for example the `DiskDistributionUsage` goal is violated and we cannot fix it since the all the disks are already completely populated then it is marked as unfixable. +We can retrieve those unfixable goals by using the `hasUnfixableGoals` utility provided by the `AnomalyDetectorUtils` class. +The notifier based on list returned by this utility checks if there are unfixable goals detected or not. If the list is empty then the notifier will set the action on the anomaly as `IGNORE` and that anomaly will be ignored. +The notifier will also update the ConfigMap with a `unfixableGoals` list and put the goal which cannot be fixed by rebalancing there so that the operator can then set a warning condition based on the unfixable anomaly in the status of the `Kafka` CR ```yaml status: @@ -301,7 +345,8 @@ status: #### Metrics for tracking the rebalance requests -If the users want to track when the auto-rebalance happened or not, they can access the Strimzi [metrics](https://github.com/strimzi/strimzi-kafka-operator/blob/main/examples/metrics/grafana-dashboards/strimzi-operators.json#L712) about when the `KafkaRebalance` custom resources were visible/created. These metrics also cover the `KafkaRebalance`(s) which were created automatically so the users can utilize them to understand when an auto-rebalance wa triggered in their cluster +If the users want to track when the auto-rebalances happen, they can access the Strimzi [metrics](https://github.com/strimzi/strimzi-kafka-operator/blob/main/examples/metrics/grafana-dashboards/strimzi-operators.json#L712) for the `KafkaRebalance` custom resources, this includes when they were visible/created. +These metrics also cover the `KafkaRebalance`(s) which were created automatically, so the users can utilize them to understand when an auto-rebalance were triggered in their cluster. ### Auto-rebalancing execution for `imbalance` mode @@ -416,17 +461,16 @@ On each reconciliation, the following process will be used: ```mermaid flowchart TB A[KafkaClusterCreator] --creates--> B[KafkaCluster] - B -- calls --> D[KafkaAutoRebalancingReconciler.reconcile] - D -- check for ConfigMap with goal-violation prefix --> E{if config map present?} - D -- if rebalance in progress --> F[moves a;; unfixed anomalies in list to fixed anomalies list] + B -- calls --> D{Reconcilation in Progress} + D -- no --> E{if config map present?} + D -- yes --> F[fix the anomalies] E -- yes --> G[Trigger auto-rebalance] E -- no --> H[No operation] ``` 1. The `KafkaClusterCreator` creates the `KafkaCluster` instance. 2. The `KafkaAutoRebalancingReconciler.reconcile()` will then check if there was any ConfigMap created with name `goal-violation-map` and whether the `anomaly_list` list is empty or not, then the `full` rebalance(imbalance mode) would be performed if the list is not empty. -If the list is not empty, then we trigger the `imbalance` mode (full rebalance). -3. In case, a rebalance is already ongoing and more anomalies are detected, then the operator will just ignore the new anomalies and delete all the anomalies from the `anomaly_list` in the ConfigMap. +3. If a rebalance is already ongoing and more anomalies are detected, then the operator will just ignore the new anomalies and delete all the anomalies from the `anomaly_list` in the ConfigMap. The `KafkaAutoRebalancingReconciler.reconcile()` loads the `Kafka.status.autoRebalance` content: @@ -462,7 +506,7 @@ flowchart TB B --> G[PendingProposal, ProposalReady or Rebalancing] G --> H{{rebalancing is running}} B --> I[NotReady] - I --> J{{Transition to Idle state and delete rebalance resource and empty the `anomaly_list`}} + I --> J{{Transition to Idle state and delete rebalance resource}} ``` Checking the current `KafkaRebalance` status: @@ -470,7 +514,7 @@ Checking the current `KafkaRebalance` status: * if `Ready`, the rebalance was successful. * if there is a queued rebalancing scale down (`Kafka.status.autoRebalance.modes[remove-brokers]` exists), start the rebalancing scale down and transition to **RebalanceOnScaleDown**. * if there is a queued rebalancing scale up (`Kafka.status.autoRebalance.modes[add-brokers]` exists), start the rebalancing scale up and transition to **RebalanceOnScaleUp**. - * If no queued rebalancing scale down or scale up, just transition to **Idle**, clean `Kafka.status.autoRebalance.modes`, delete the "actual" `KafkaRebalance` custom resource. + * If no queued rebalancing scale down or scale up, just transition to **Idle**, clean `Kafka.status.autoRebalance.modes`, delete the generated `KafkaRebalance` custom resource. * if `PendingProposal`, `ProposalReady` or `Rebalancing`, the rebalancing is still running. * No further actions required. * if `NotReady` @@ -483,6 +527,10 @@ In this case, the FSM will assume it as `NotReady` so falling in the last case a This change will affect the Strimzi cluster operator and a new repository named `strimzi-notifier` will be added under the Strimzi organisation. +## Backwards compatibility + +This change will not cause any backwards compatibility issue. The changes stated in the proposal only enables if the user is making use of the `imbalance` mode of the auto-rebalancing feature + ## Rejected Alternatives ### Using custom resource for interaction between Operator and Cruise Control I @@ -531,4 +579,5 @@ Cons: ## Future Scope In the future, we plan to introduce auto-rebalance for topic and metrics related imbalances. -As this feature evolves we can even think of having ways to fix issues like disk failure and broker failures automatically since the fix would be driven by the operator. \ No newline at end of file +As this feature evolves we can even think of having ways to fix issues like disk failure and broker failures automatically since the fix would be driven by the operator. +If the users wants to use their own notifier can be to extend our notifier and use our alert method i.e `super.alert()` first in their `alert()` method implementation. \ No newline at end of file From 7a81346e72c13d8ef61fc241d4c26a170ed531b4 Mon Sep 17 00:00:00 2001 From: ShubhamRwt Date: Fri, 7 Nov 2025 16:49:44 +0530 Subject: [PATCH 11/20] Minor fixes Signed-off-by: ShubhamRwt --- 106-auto-rebalance-on-imbalanced-clusters.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/106-auto-rebalance-on-imbalanced-clusters.md b/106-auto-rebalance-on-imbalanced-clusters.md index 6a39fcc7..703e4355 100644 --- a/106-auto-rebalance-on-imbalanced-clusters.md +++ b/106-auto-rebalance-on-imbalanced-clusters.md @@ -113,7 +113,7 @@ To provide users more flexibility, they only have to configure the auto-rebalanc When the auto-rebalance configuration is set with `imbalance` mode enabled, the operator will trigger a partition rebalance whenever a goal violation is detected by the anomaly detector. To trigger the auto-rebalance, the operator must know that the cluster is imbalanced due to some goal violation anomaly. We will create our own custom notifier named `StrimziCruiseControlNotifier` to do this. -This notifier's job will be to update the operator regarding the goal violations so that the operator can trigger a rebalance (see section [AnomalyDetectorNotifier](./106-auto-rebalance-on-imbalanced-clusters.md#anomalydetectornotifier)). +This notifier's job will be to update the operator regarding the goal violations so that the operator can trigger a rebalance (see section [StrimziCruiseControlNotifier](./106-auto-rebalance-on-imbalanced-clusters.md#strimzicruisecontrolnotifier)). With this proposal, we are only going to support auto-rebalance on imbalanced cluster. We also plan to implement the same for topic and metrics related issues, but it will be part of future work since their implementation require different approach. For example, when dealing with topic related issues, it will require a coordination with topic operator and metrics issues will require coordination with the Kafka API. @@ -323,7 +323,7 @@ If the users really want to have their own way of dealing with the imbalanced cl Cruise Control has the ability to figure out if a goal violation can be fixed by the generated optimization proposal or not. The goal optimizer class does this job by doing analysis/dry-run if we can fix the anomaly by the generated proposal or not. -If there is some goal, for example the `DiskDistributionUsage` goal is violated and we cannot fix it since the all the disks are already completely populated then it is marked as unfixable. +If there is some goal, for example the `DiskDistributionUsage` goal is violated, and we cannot fix it since the all the disks are already completely populated then it is marked as unfixable. We can retrieve those unfixable goals by using the `hasUnfixableGoals` utility provided by the `AnomalyDetectorUtils` class. The notifier based on list returned by this utility checks if there are unfixable goals detected or not. If the list is empty then the notifier will set the action on the anomaly as `IGNORE` and that anomaly will be ignored. The notifier will also update the ConfigMap with a `unfixableGoals` list and put the goal which cannot be fixed by rebalancing there so that the operator can then set a warning condition based on the unfixable anomaly in the status of the `Kafka` CR @@ -372,7 +372,7 @@ flowchart TB * from **Idle** to: * **RebalanceOnScaleDown**: if a scale down operation was requested. This transition happens even if a scale up was requested at the same time but the rebalancing on scaling down has the precedence. The rebalancing on scale up is queued. They will run sequentially. * **RebalanceOnScaleUp**: if only a scale up operation was requested. There was no scale down operation requested. - * **RebalanceOnImbalance**: if a ConfigMap related to goal violation was detected, and the `anomaly_list` is not empty + * **RebalanceOnImbalance**: if a ConfigMap related to goal violation was detected, and the `anomalyList` is not empty ```mermaid sequenceDiagram @@ -469,8 +469,8 @@ flowchart TB ``` 1. The `KafkaClusterCreator` creates the `KafkaCluster` instance. -2. The `KafkaAutoRebalancingReconciler.reconcile()` will then check if there was any ConfigMap created with name `goal-violation-map` and whether the `anomaly_list` list is empty or not, then the `full` rebalance(imbalance mode) would be performed if the list is not empty. -3. If a rebalance is already ongoing and more anomalies are detected, then the operator will just ignore the new anomalies and delete all the anomalies from the `anomaly_list` in the ConfigMap. +2. The `KafkaAutoRebalancingReconciler.reconcile()` will then check if there was any ConfigMap created with name `goal-violation-map` and whether the `anomalyList` list is empty or not, then the `full` rebalance(imbalance mode) would be performed if the list is not empty. +3. If a rebalance is already ongoing and more anomalies are detected, then the operator will just ignore the new anomalies based on the timestamps as discussed earlier in the proposal and delete all the anomalies from the `anomalyList` in the ConfigMap. The `KafkaAutoRebalancingReconciler.reconcile()` loads the `Kafka.status.autoRebalance` content: @@ -486,7 +486,7 @@ Let's see what happens during the auto-rebalancing process when the FSM starts f This state is set since the beginning when a `Kafka` custom resource is created with the `spec.cruiseControl.autoRebalance` field. It is also the end state of a previous successfully completed or failed auto-rebalancing. -In case of successful completion, once the rebalance moves to `Ready` state, we will delete the `KafkaRebalance` and move the empty the `anomaly_list` then update the `auto-rebalance` state to `Idle`. +In case of successful completion, once the rebalance moves to `Ready` state, we will delete the `KafkaRebalance` and update the `auto-rebalance` state to `Idle`. In case of failed auto-rebalancing, once the rebalance moves to `NotReady` state, we will follow the same procedure we used in successful completion. In this state, the operator removes the finalizer and deletes the corresponding "actual" `KafkaRebalance` custom resource. From cf66d983bc8ba4e860837b7f5f6fb87d0408fd51 Mon Sep 17 00:00:00 2001 From: ShubhamRwt Date: Fri, 21 Nov 2025 21:07:38 +0530 Subject: [PATCH 12/20] Added suggestions by Tina, Tom and Paolo Signed-off-by: ShubhamRwt --- 106-auto-rebalance-on-imbalanced-clusters.md | 232 +++++++------------ images/106-finite-state-machine.png | Bin 0 -> 169237 bytes 2 files changed, 78 insertions(+), 154 deletions(-) create mode 100644 images/106-finite-state-machine.png diff --git a/106-auto-rebalance-on-imbalanced-clusters.md b/106-auto-rebalance-on-imbalanced-clusters.md index 703e4355..1b21fa90 100644 --- a/106-auto-rebalance-on-imbalanced-clusters.md +++ b/106-auto-rebalance-on-imbalanced-clusters.md @@ -78,7 +78,6 @@ In Strimzi's current implementation of Cruise Control, fixing these issues needs Users can currently enable anomaly detection and can also [set](https://strimzi.io/docs/operators/latest/full/deploying.html#setting_up_alerts_for_anomaly_detection) the notifier to one of those included with Cruise Control (`SelfHealingNotifier`, `AlertaSelfHealingNotifier`, `SlackSelfHealingNotifier` etc.). All the `self.healing` prefixed properties are currently disabled in Strimzi's Cruise Control integration because, initially, it was not clear how self-healing would act if pods were rolled in middle of rebalances or how Strimzi triggered manual rebalances should interact with Cruise Control triggered self-healing ones. -If a user somehow tries to set the ### Proposal @@ -166,9 +165,11 @@ spec: # ... other rebalancing related configuration ``` When the `template` is set, the operator automatically creates (or updates) a corresponding `KafkaRebalance` custom resource (based on the template) when an anomaly is detected and notified by the `StrimziCruiseControlNotifier` -The operator copies over goals and rebalancing options from the referenced `template` resource to the `actual` rebalancing one. +The operator copies over goals and rebalancing options from the referenced `template` resource to the generated rebalancing one. +If the user has not configured the anomaly detection goals in Cruise Control then the operator would set the default goals to be used by the anomaly detector. +The goals mentioned in the rebalance template will be validated with the anomaly detection goals being used by Cruise Control. The mentioned goals should be either same or be a subset of the anomaly detection goals since the unmentioned goals will not be detected and therefore no rebalance would be required for those goals. The `KafkaRebalance` has 4 modes: full, add-broker, remove-broker and remove-disks mode. -The `imbalance` mode will be mapped to the `full` mode in the actual KafkaRebalance resource which means that actual `KafkaRebalance` custom resource will have the mode set as `full` which within the Strimzi rebalancing operator means calling the Cruise Control API to run a rebalancing taking all brokers into account. +The `imbalance` mode will be mapped to the `full` mode in the generated KafkaRebalance resource which means that generated `KafkaRebalance` custom resource will have the mode set as `full` which within the Strimzi rebalancing operator means calling the Cruise Control API to run a rebalancing taking all brokers into account. The generated `KafkaRebalance` custom resource will be called `-auto-rebalancing-imbalance-`, where the `` part comes from the `metadata.name` in the `Kafka` custom resource, and `imbalance` refers to applying the rebalance to all the brokers and the `` would be retrieved from the notifier. @@ -195,7 +196,8 @@ spec: The operator also sets a finalizer, named `strimzi.io/auto-rebalancing`, on the generated `KafkaRebalance` custom resource. This is needed to avoid the user, or any other tooling, deleting the resource while the auto-rebalancing is still running. -The finalizer is removed when Cruise Control indicates that the partition reassignment (rebalance) process has finished, with or without errors, allowing the generated `KafkaRebalance` custom resource to be deleted by the operator itself. +The finalizer is removed when Cruise Control indicates that the partition reassignment (rebalance) process has finished allowing the generated `KafkaRebalance` custom resource to be deleted by the operator itself. +In case the rebalance finishes with error, the error message will be propagated to the Kafka custom resource just like we do for the `remove-broker` and `add-broker` endpoint and the generated `KafkaRebalance` will be deleted. #### StrimziCruiseControlNotifier @@ -205,8 +207,8 @@ The `StrimziCruiseControlNotifier` will implement the `AnomalyNotifier` interfac Every detected anomaly is placed in a priority queue and each of the anomalies have a priority value assigned to them. Since we are working with only goal related violations, every anomaly will have same priority. This means that detected anomalies will be fixed on a first come, first served basis. -In situations where the anomaly is unfixable, due to issues like a lack of physical hardware (e.g. insufficient number of racks to satisfy rack awareness, insufficient number of brokers to satisfy `ReplicaCapacityGoal`, or insufficient number of resources to satisfy resource capacity goals), then they will be ignored and the user will be alerted via a Condition in the Kafka CR status. -The `StrimziCruiseControlNotifier` will override all the methods declared by the `AnomalyNotifier` interface. +In situations where the anomaly is unfixable, due to issues like a lack of physical hardware (e.g. insufficient number of racks to satisfy rack awareness, insufficient number of brokers to satisfy `ReplicaCapacityGoal`, or insufficient number of resources to satisfy resource capacity goals), then they will be ignored and the user will be alerted via a condition in the Kafka CR status. +The `StrimziCruiseControlNotifier` will be kept in a separate repository and will override all the methods declared by the `AnomalyNotifier` interface. We will provide a concrete implementations of the `AnomalyNotifier.alert` method which will alert the operator whenever an anomaly is detected by the operator. Upon detection of an anomaly, the notifier would create (if it doesn't already exist) or update a ConfigMap with the name `-goal-violation-map`. This ConfigMap will contain all the detected anomalies for a given Kafka cluster. @@ -219,33 +221,29 @@ apiVersion: v1 metadata: name: my-cluster-goal-violation-map data: - last_anomaly_detection_timestamp: - rebalance_finished_timestamp: - anomalyList: | - - - - - - + fixableAnomalies: | + - : + - + - + - : + - # ... ``` The advantages of using a single ConfigMap for all the detected anomalies versus one per anomaly are: 1. It provides a single point of reference for all the anomalies -2. When dealing multiple Kafka clusters, the ConfigMap created will be equal to number of clusters deployed - -This generated ConfigMap will contain the list of goal violation anomalies in the section named `anomalyList`. -The `anomalyList` will refer to the anomalies that were detected by the anomaly detector. -The `anomalyList` will be populated by the notifier everytime it detects an anomaly -Whenever a rebalance is about to start by the operator(either it be in imbalance mode, remove-broker mode, add-broker mode) the `anomalyList` would be set to empty. -We empty the list earlier to make it easier to track the anomalies that were caught in between the rebalance. -If the `anomalyList` isn't empty after the rebalance that means that there were anomalies detected in between the rebalance, and we need to make decision on whether we run another rebalance for these detected anomalies or not. -Refer to this [section](./106-auto-rebalance-on-imbalanced-clusters.md#what-happens-if-anomaly-is-detected-while-the-auto-rebalancemanual-rebalance-is-happening) for more details. -In cases where the rebalance is happening for `remove-broker` and `add-broker` mode, we will put a check before the rebalance starts, that if there are some anomalies detected, we should make the `anomalyList` empty. -This is because its very much possible that the rebalance that will happen can fix all the detected anomalies. +2. When dealing with multiple Kafka clusters, the number of ConfigMap(s) created will be equal to the number of clusters deployed + +This generated ConfigMap will contain the list of fixable goal violation anomalies in the section named `fixableAnomalies`. +The `fixableAnomalies` list will state the `anomalyId` of anomaly as well as the fixable violated goals. +The `fixableAnomalies` list will be populated by the notifier everytime it detects an anomaly. +Whenever a rebalance(manual or auto-rebalance) is about to be triggered by the operator (either in imbalance mode, remove-broker mode or add-broker mode) the `fixableAnomalies` list would be cleared. +In cases where the rebalance is happening for `remove-broker` and `add-broker` mode, we will put a check before the rebalance starts, that if there are some anomalies detected, we should make the `fixableAnomalies` list empty. +This is because it is possible that the rebalance will address some or all of the detected anomalies. The above statement holds true for the cases of `manual` rebalances too. -If the user runs a `manual` rebalance, we will empty the `anomalyList` in those cases too. -If some other anomalies are detected again after the rebalance then they will be updated in the ConfigMap by the notifier and another rebalance will take place +If the user runs a `manual` rebalance, we will empty the `fixableAnomalies` in those cases too, also if some other anomalies are detected again after the rebalance then they will be updated in the ConfigMap by the notifier and another rebalance will take place. -The ConfigMap will also have an option field called `unfixedAnomaly` list which would be created only when an unfixable anomaly is detected. +The ConfigMap will also have an optional field called `unfixableAnomalies` list which would be created only when an unfixable anomaly is detected i.e. an anomaly having unfixable goals. ```yaml kind: ConfigMap @@ -253,48 +251,43 @@ apiVersion: v1 metadata: name: my-cluster-goal-violation-map data: - last_anomaly_detection_timestamp: - rebalance_finished_timestamp: - anomalyList: | - - - - - unfixableGoals: | - - - - + fixableAnomalies: | + - : + - + - + - : + - + unfixableAnomalies: | + - : + - + - + - : + - # ... ``` -The operator will use the `unfixableGoals` list to check if there are any unfixable goals detected or not. +The `unfixableAnomalies` list will state the `anomalyId` as well as the unfixable goals associated with them. +The operator will use the `unfixableAnomalies` list to check if there are anomalies with unfixable goals or not. If the list is not empty then the operator would create a `warning` condition based on the unfixable goal and add it to the `Kafka` CR status. -The `last_anomaly_detection_timestamp` corresponds to when the last anomaly was detected and will be updated every time a new anomaly is detected. +In case we get an anomaly which has both fixable goals and unfixable goals, we will still `IGNORE` that anomaly. +This is because Cruise Control won't be able to generate a proposal that can fix all the configured goals for rebalance. -The `rebalance_finished_timestamp` refers to the time when the last running rebalance finished and will be updated every time when a rebalance is finished. -The rebalance can be either auto-rebalance or manual rebalance. - -The created ConfigMap will persist when self-healing is enabled and will be deleted if the user decides to disable self-healing. -This is done to keep track of the timestamps which will help us to avoid unnecessary rebalances. - -The `StrimziCruiseControlNotifier` will be kept in a separate repository under the Strimzi organization. +The created ConfigMap will persist when `imbalance` mode is enabled for auto-rebalance and will be deleted if the user decides to remove `imbalance` mode from `spec.kafka.cruiseControl.autoRebalance`. #### What happens if same anomaly type is detected while the auto-rebalance/manual rebalance is happening The anomaly detector continues to run, even when a rebalance has been triggered. Therefore, it is possible that it may detect an anomaly that is currently in the process of being fixed. If we logged the anomaly in the ConfigMap, we may then trigger another rebalance for an anomaly that was fixed by the ongoing rebalance. -This could make operator running multiple rebalances for the anomaly and therefore creating a never ending rebalance loop. +This could make operator running multiple rebalances for the anomaly and therefore running a lot of unnecessary rebalances. -To tackle this problem we can make use of the `last_anomaly_detection_timestamp` and `rebalance_finished_timestamp` timestamps -Everytime an anomaly of the same type is detected we will treat its detection time as the `last_anomaly_detection_time` and update the value of it in the `last_anomaly_detection_time` field of the ConfigMap. -Now if the anomaly detection happened during the rebalance, the `ConfigMap` will be updated with the anomalies as well as the `last_anomaly_detection_time` will also be updated with last anomaly detection time. -We will track the rebalance finish time in ConfigMap under the `rebalance_finished_timestamp` field. -Now to know if the new anomaly was detected during the rebalance we can compare the `last_anomaly_detection_timestamp` and `rebalance_finished_timestamp`. -If the `last_anomaly_detection_timestamp` was before the `rebalance_finished_timestamp`, that would suggest that the anomaly was detected during the rebalance. -We can ignore all the anomalies that were detected before the `rebalance_finished_timestamp`. -This is because it is possible that the new anomalies were fixed during the rebalance. -Even if the ignored anomalies weren't fixed, the Anomaly Detector can detect them again. +To tackle this problem we will ignore all the anomalies that are detected in between the rebalance. +We will place a check in the auto-rebalance reconciler class which will make sure that if a rebalance is running and a new anomaly is detected, then the `fixableAnomalies` list would be made empty. +This way we can avoid the rebalance for the same anomaly which is detected again. +It is possible that a new anomaly was ignored in the process but the anomaly detector will detect it again in case the rebalance didn't fix it so we don't have to worry about it. -The above hold true for the manual rebalances also. -If a user tries a manual rebalance then we will still update the `rebalance_finished_timestamp` to track the last rebalance and avoid auto-rebalancing if the anomaly list is not empty and the `last_anomaly_detection_timestamp` was before the `rebalance_finished_timestamp`. +The above also holds true for the manual rebalances. +If a user is running a manual rebalance, and some anomaly is detected in between, we should still make the `fixable` anomalies list empty. #### Using other notifiers when using `imbalance` mode @@ -323,10 +316,10 @@ If the users really want to have their own way of dealing with the imbalanced cl Cruise Control has the ability to figure out if a goal violation can be fixed by the generated optimization proposal or not. The goal optimizer class does this job by doing analysis/dry-run if we can fix the anomaly by the generated proposal or not. -If there is some goal, for example the `DiskDistributionUsage` goal is violated, and we cannot fix it since the all the disks are already completely populated then it is marked as unfixable. -We can retrieve those unfixable goals by using the `hasUnfixableGoals` utility provided by the `AnomalyDetectorUtils` class. -The notifier based on list returned by this utility checks if there are unfixable goals detected or not. If the list is empty then the notifier will set the action on the anomaly as `IGNORE` and that anomaly will be ignored. -The notifier will also update the ConfigMap with a `unfixableGoals` list and put the goal which cannot be fixed by rebalancing there so that the operator can then set a warning condition based on the unfixable anomaly in the status of the `Kafka` CR +If a goal such as the `DiskDistributionUsage` goal is violated, but we cannot fix it since the all the disks are already completely populated, then it is marked as unfixable. +We can retrieve those unfixable goals by using the `hasUnfixableGoals` utility provided by the `AnomalyDetectorUtils` class present in Cruise Control. +The notifier based on list returned by this utility checks if there are unfixable goals detected or not. If the list is not empty then the notifier will set the action on the anomaly as `IGNORE` and that anomaly will be ignored. +The notifier will also update the ConfigMap with a `unfixableAnomalies` list and put the goal which cannot be fixed by rebalancing there so that the operator can then set a warning condition based on the unfixable anomaly in the status of the `Kafka` CR: ```yaml status: @@ -340,13 +333,18 @@ status: status: "True" reason: UnfixableViolatedGoal message: | - The detected `DiskDistributionGoal` cannot be fixed. + The detected has unfixable `DiskDistributionGoal` goal. ``` +#### Stopping a running rebalance + +To stop a running rebalance the user can apply the `strimzi.io/rebalance=stop` annotation on the generated `KafkaRebalance` resource. This would stop the running rebalance and the stopped `KafkaRebalance` resource will be deleted. The user will need to make sure that they disable the `auto-rebalance` mode after they have stopped the rebalance otherwise the rebalance would be triggered again since the anomalies are still present in the cluster. + #### Metrics for tracking the rebalance requests If the users want to track when the auto-rebalances happen, they can access the Strimzi [metrics](https://github.com/strimzi/strimzi-kafka-operator/blob/main/examples/metrics/grafana-dashboards/strimzi-operators.json#L712) for the `KafkaRebalance` custom resources, this includes when they were visible/created. These metrics also cover the `KafkaRebalance`(s) which were created automatically, so the users can utilize them to understand when an auto-rebalance were triggered in their cluster. +We will add labels to the metrics to differentiate the created rebalance on basis of mode i,.e the rebalance was triggered for full(for imbalanced cluster), add-broker or remove-broker mode. ### Auto-rebalancing execution for `imbalance` mode @@ -363,118 +361,40 @@ This state will be associated with rebalances triggered by imbalanced cluster. With the new `imbalance` mode, the FSM state transitions would look something like this: -```mermaid -flowchart TB - A[Idle] --scaleDown requested--> B[RebalanceOnScaleDown] - A[Idle] --scaleUp requested --> C[RebalanceOnScaleUp] - A[Idle] --imbalanced cluster detected --> D[RebalanceOnImbalance] -``` +![auto-rebalance state machine flow diagram](images/106-finite-state-machine.png) + * from **Idle** to: * **RebalanceOnScaleDown**: if a scale down operation was requested. This transition happens even if a scale up was requested at the same time but the rebalancing on scaling down has the precedence. The rebalancing on scale up is queued. They will run sequentially. * **RebalanceOnScaleUp**: if only a scale up operation was requested. There was no scale down operation requested. - * **RebalanceOnImbalance**: if a ConfigMap related to goal violation was detected, and the `anomalyList` is not empty - -```mermaid -sequenceDiagram - autonumber - RebalanceOnScaleDown->>RebalanceOnScaleDown: requested scale down - RebalanceOnScaleDown->>RebalanceOnScaleUp: requested scale up - RebalanceOnScaleDown->>Idle: full rebalance requested but ignored - critical queued scale down and full rebalance(imbalance mode) - RebalanceOnScaleDown->>RebalanceOnScaleDown: execute scale down - RebalanceOnScaleDown-->>Idle: full rebalance requested but ignored - end - critical queued scale up and scale down - RebalanceOnScaleDown->>RebalanceOnScaleDown: execute scale down - RebalanceOnScaleDown-->>RebalanceOnScaleUp: then scale up - end - critical queued scale down and scale up and full rebalance(imbalance mode) - RebalanceOnScaleDown->>RebalanceOnScaleDown: execute scale down - RebalanceOnScaleDown-->>RebalanceOnScaleUp: then scale up - RebalanceOnScaleUp-->>RebalanceOnImbalance: then full rebalance - end - RebalanceOnScaleDown->>Idle: scale down complete with no queued items -``` + * **RebalanceOnImbalance**: if a ConfigMap related to goal violation was detected, and the `fixableAnomalies` list is not empty while the `unfixableAnomalies` list is empty. If there are queued scale up or scale down operations, then they will run first. * from **RebalanceOnScaleDown** to: * **RebalanceOnScaleDown**: if a rebalancing on scale down is still running or another one was requested while the first one ended. * **RebalanceOnScaleUp**: if a scale down operation was requested together with a scale up and, because they run sequentially, the rebalance on scale down had the precedence, was executed first and completed successfully. We can now move on with rebalancing for the scale up. + * **RebalanceOnImbalance**: if a ConfigMap related to goal violation was detected and the `fixableAnomalies` list is not empty while the `unfixableAnomalies` list is empty. It will run once the queued scale down and scale up is completed. * **Idle**: if a scale down operation was requested, it was executed and completed successfully/failed or a full rebalance was asked due to an anomaly but since the scale-down rebalance is done, we can ignore the anomalies assuming they are fixed by the rebalance. In case, they are not fixed, Cruise Control will detect them again and a new rebalance would be requested. -```mermaid -sequenceDiagram - autonumber - RebalanceOnScaleUp->>RebalanceOnScaleDown: requested scale down - RebalanceOnScaleUp->>RebalanceOnScaleUp: requested scale up - RebalanceOnScaleUp->>Idle: full rebalance requested but ignored - critical queued scale up and full rebalance(imbalance mode) - RebalanceOnScaleUp->>RebalanceOnScaleUp: execute scale down - RebalanceOnScaleUp-->>Idle: ignore full rebalance(imbalance mode) - end - critical queued scale up and scale down - RebalanceOnScaleUp->>RebalanceOnScaleDown: execute scale down - RebalanceOnScaleUp-->>RebalanceOnScaleUp: then scale up - end - critical queued scale down and scale up and full rebalance - RebalanceOnScaleUp->>RebalanceOnScaleDown: execute scale down - RebalanceOnScaleDown-->>RebalanceOnScaleUp: then scale up - RebalanceOnScaleUp-->>RebalanceOnImbalance: then full rebalance(imbalance mode) - end - RebalanceOnScaleUp->>Idle: scale up complete with no queued items -``` - * from **RebalanceOnScaleUp**: * **RebalanceOnScaleUp**: if a rebalancing on scale up is still running or another one was requested while the first one ended. * **RebalanceOnScaleDown**: if a scale down operation was requested, so the current rebalancing scale up is stopped (and queued) and a new rebalancing scale down is started. The rebalancing scale up will be postponed. - * **RebalanceOnImbalance**: if a ConfigMap related to goal violation was detected. It will run once the queued scale down and scale up is completed. + * **RebalanceOnImbalance**: if a ConfigMap related to goal violation was detected and the `fixableAnomalies` list is not empty while the `unfixableAnomalies` list is empty. It will run once the queued scale down and scale up is completed. * **Idle**: if a scale up operation was requested, it was executed and completed successfully/failed or a full rebalance was asked due to an anomaly but since the scale-down rebalance is done, we can ignore the anomalies assuming they are fixed by the rebalance. In case, they are not fixed, Cruise Control will detect them again and a new rebalance would be requested. -```mermaid -sequenceDiagram - autonumber - RebalanceOnImbalance->>RebalanceOnScaleDown: requested scale down - RebalanceOnImbalance->>RebalanceOnScaleUp: requested scale up - RebalanceOnImbalance->>RebalanceOnImbalance: new full rebalance requested - critical queued scale up and skew rebalance - RebalanceOnImbalance->>RebalanceOnScaleUp: execute scale up - RebalanceOnScaleUp-->>RebalanceOnImbalance: then full rebalance - end - critical queued scale down and skew rebalance - RebalanceOnImbalance->>RebalanceOnScaleDown: execute scale down - RebalanceOnScaleDown-->>RebalanceOnImbalance: then full rebalance - end - critical queued scale down and scale up and skew rebalance - RebalanceOnImbalance->>RebalanceOnScaleDown: execute scale down - RebalanceOnScaleDown-->>RebalanceOnScaleUp: then scale up - RebalanceOnScaleUp-->>RebalanceOnImbalance: then full rebalance - end - RebalanceOnImbalance->>Idle: scale up complete with no queued items -``` * from **RebalanceOnImbalance**: * **RebalanceOnImbalance**: if another goal violation was detected while the first one ended. If a scale down and scale up is also queued up then they will execute first. * **RebalanceOnScaleUp**: if a rebalancing on scale up is queued and will run if there is no other rebalancing scale down in queue. If a rebalancing scale down is in queue then it will be executed first. - * **RebalanceOnScaleDown**: if a scale down operation was requested, it will run once the full rebalance is completed + * **RebalanceOnScaleDown**: if a scale down operation was requested, it will run once the full rebalance is completed. * **Idle**: if full rebalance was requested, it was executed and completed successfully or failed. On each reconciliation, the following process will be used: -```mermaid -flowchart TB - A[KafkaClusterCreator] --creates--> B[KafkaCluster] - B -- calls --> D{Reconcilation in Progress} - D -- no --> E{if config map present?} - D -- yes --> F[fix the anomalies] - E -- yes --> G[Trigger auto-rebalance] - E -- no --> H[No operation] -``` - 1. The `KafkaClusterCreator` creates the `KafkaCluster` instance. -2. The `KafkaAutoRebalancingReconciler.reconcile()` will then check if there was any ConfigMap created with name `goal-violation-map` and whether the `anomalyList` list is empty or not, then the `full` rebalance(imbalance mode) would be performed if the list is not empty. -3. If a rebalance is already ongoing and more anomalies are detected, then the operator will just ignore the new anomalies based on the timestamps as discussed earlier in the proposal and delete all the anomalies from the `anomalyList` in the ConfigMap. +2. The `KafkaAutoRebalancingReconciler.reconcile()` will then check if there was any ConfigMap created with name `my-cluster-goal-violation-map` and whether the `fixableAnomalies` and `unfixableAnomalies` list is empty or not, then the `full` rebalance(imbalance mode) would be performed if the `unfixableAnomalies` list is empty and the `fixableAnomalies` list is not empty. +3. If a rebalance is already ongoing and more anomalies are detected, then the operator will just ignore the new anomalies and delete all the anomalies from the `fixableAnomalies` list in the ConfigMap. Any anomalies that are not resolved by the ongoing rebalance will be redetected by the anomaly detector once the FSM returns to the `Idle` state. -The `KafkaAutoRebalancingReconciler.reconcile()` loads the `Kafka.status.autoRebalance` content: +The `KafkaAutoRebalancingReconciler.reconcile()` also loads the `Kafka.status.autoRebalance` content: -* `state`: is the FSM state. +* `state`: is the FSM state * `lastTransitionTime`: when the transition to that state happened. * `modes`: sets the mode as `imbalance` @@ -486,15 +406,15 @@ Let's see what happens during the auto-rebalancing process when the FSM starts f This state is set since the beginning when a `Kafka` custom resource is created with the `spec.cruiseControl.autoRebalance` field. It is also the end state of a previous successfully completed or failed auto-rebalancing. -In case of successful completion, once the rebalance moves to `Ready` state, we will delete the `KafkaRebalance` and update the `auto-rebalance` state to `Idle`. -In case of failed auto-rebalancing, once the rebalance moves to `NotReady` state, we will follow the same procedure we used in successful completion. -In this state, the operator removes the finalizer and deletes the corresponding "actual" `KafkaRebalance` custom resource. +In case of successful completion, once the rebalance moves to `Ready` state, we will delete the generated `KafkaRebalance` and update the `auto-rebalance` state to `Idle`. +In case of failed auto-rebalancing, once the rebalance moves to `NotReady` state, we will propagate error to the Kafka CR, delete the generated `KafkaRebalance` and the state will be set to `Idle`. +In this state, the operator removes the finalizer and deletes the corresponding generated `KafkaRebalance` custom resource. #### RebalanceOnImbalance -In this state, an anomaly was detected and a corresponding ConfigMap was generated by the notifier. +In this state, an anomaly was detected and a ConfigMap was generated by the notifier with an `fixableAnomalies` list - A KafkaRebalance resource will now be applied to the cluster to fix the imbalanced cluster. This kafka rebalance will be based on the template provided by the user, if no template is provided then the kafkaRebalance will be created with default configurations. + A KafkaRebalance resource will now be applied to the cluster to fix the imbalanced cluster. This KafkaRebalance will be based on the template provided by the user, if no template is provided then the KafkaRebalance will be created with default configurations. ```mermaid flowchart TB @@ -507,6 +427,8 @@ flowchart TB G --> H{{rebalancing is running}} B --> I[NotReady] I --> J{{Transition to Idle state and delete rebalance resource}} + B --> K[Stopped] + K --> L{{delete rebalance and disable `imbalance` mode}} ``` Checking the current `KafkaRebalance` status: @@ -518,7 +440,9 @@ Checking the current `KafkaRebalance` status: * if `PendingProposal`, `ProposalReady` or `Rebalancing`, the rebalancing is still running. * No further actions required. * if `NotReady` - * the rebalancing failed, transition to **Idle** and also removing the corresponding mode from the status. The operator also deletes the "actual" `KafkaRebalance` custom resource and empties the ConfigMap. + * the rebalancing failed, transition to **Idle** and also removing the corresponding mode from the status. The operator also deletes the generated `KafkaRebalance` custom resource and empties the ConfigMap. +* if `Stopped` + * the rebalancing is stopped, transition to **Idle** and also removing the corresponding mode from the status. The operator deletes the generated `KafkaRebalance` custom resource. The users should then disable the `imbalance` mode of auto-rebalance else a new rebalance would be triggered. If, during an ongoing auto-rebalancing, the `KafkaRebalance` custom resource is not there anymore on the next reconciliation, it could mean the user deleted it while the operator was stopped/crashed/not running. In this case, the FSM will assume it as `NotReady` so falling in the last case above. diff --git a/images/106-finite-state-machine.png b/images/106-finite-state-machine.png new file mode 100644 index 0000000000000000000000000000000000000000..71a7c073373ed258cfd0b35827fc3d6edb126b8b GIT binary patch literal 169237 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 literal 0 HcmV?d00001 From f86bf35e1638e8050ad15414b7ca22e0c985c5b6 Mon Sep 17 00:00:00 2001 From: ShubhamRwt Date: Tue, 25 Nov 2025 13:34:38 +0530 Subject: [PATCH 13/20] Added suggestions by Kate Signed-off-by: ShubhamRwt --- 106-auto-rebalance-on-imbalanced-clusters.md | 65 ++++++++++---------- 1 file changed, 34 insertions(+), 31 deletions(-) diff --git a/106-auto-rebalance-on-imbalanced-clusters.md b/106-auto-rebalance-on-imbalanced-clusters.md index 1b21fa90..a134a3da 100644 --- a/106-auto-rebalance-on-imbalanced-clusters.md +++ b/106-auto-rebalance-on-imbalanced-clusters.md @@ -77,7 +77,7 @@ Even under normal operation, it's common for Kafka clusters to encounter problem In Strimzi's current implementation of Cruise Control, fixing these issues needs to be triggered manually i.e. if the cluster is imbalanced then a user might instruct Cruise Control to move the partition replicas across the brokers in order to fix the imbalance using the `KafkaRebalance` custom resource. Users can currently enable anomaly detection and can also [set](https://strimzi.io/docs/operators/latest/full/deploying.html#setting_up_alerts_for_anomaly_detection) the notifier to one of those included with Cruise Control (`SelfHealingNotifier`, `AlertaSelfHealingNotifier`, `SlackSelfHealingNotifier` etc.). -All the `self.healing` prefixed properties are currently disabled in Strimzi's Cruise Control integration because, initially, it was not clear how self-healing would act if pods were rolled in middle of rebalances or how Strimzi triggered manual rebalances should interact with Cruise Control triggered self-healing ones. +All the `self.healing` prefixed properties are currently disabled in Strimzi's Cruise Control integration because, initially, it was not clear how self-healing would act if pods were rolled in the middle of rebalances or how Strimzi triggered manual rebalances should interact with Cruise Control triggered self-healing ones. ### Proposal @@ -85,7 +85,7 @@ This proposal is concerned with giving users the option to have their Kafka clus However, the proposal is not to rely on the Cruise Control self-healing implementation directly. If we were to enable that functionality then, in response to detected anomalies, Cruise Control would issue partition reassignments without involving the Strimzi Cluster Operator. This could cause potential conflicts with other administration operations and is the primary reason self-healing has been disabled until now. -To resolve this issue, we will only make use of Cruise Control's anomaly detection ability, the triggering of the partition reassignments (rebalance) will the responsibility of the Strimzi Cluster Operator. +To resolve this issue, we will only make use of Cruise Control's anomaly detection ability, the triggering of the partition reassignments (rebalance) will be the responsibility of the Strimzi Cluster Operator. To enable this, we will use an approach based on the existing auto-rebalance for scaling feature (see the [documentation](https://strimzi.io/docs/operators/latest/deploying#proc-automating-rebalances-str) for more details). We propose using only those anomaly detection classes, related to goal violations, that can be addressed by a partition rebalance. We will not enable the other anomaly detection classes, related to goal violations, that would require manual interventions at the infrastructure level such as disk or broker failures. @@ -114,7 +114,7 @@ To trigger the auto-rebalance, the operator must know that the cluster is imbala We will create our own custom notifier named `StrimziCruiseControlNotifier` to do this. This notifier's job will be to update the operator regarding the goal violations so that the operator can trigger a rebalance (see section [StrimziCruiseControlNotifier](./106-auto-rebalance-on-imbalanced-clusters.md#strimzicruisecontrolnotifier)). With this proposal, we are only going to support auto-rebalance on imbalanced cluster. -We also plan to implement the same for topic and metrics related issues, but it will be part of future work since their implementation require different approach. +We also plan to implement the same for topic and metrics related issues, but it will be part of future work since their implementation require different approaches. For example, when dealing with topic related issues, it will require a coordination with topic operator and metrics issues will require coordination with the Kafka API. Here is an example of what the configured `Kafka` custom resource could look like: @@ -139,7 +139,7 @@ spec: It is also possible to use the default Cruise Control rebalancing configuration by omitting the `template` field. The configuration for Cruise Control rebalance is provided through a `KafkaRebalance` custom resource which is specifically defined as a template and is referenced in the `template` field in the example above. -A `KafkaRebalance` custom resource with the `strimzi.io/rebalance-template: true` annotation set can be used as template. +A `KafkaRebalance` custom resource with the `strimzi.io/rebalance-template: true` annotation set can be used as a template. When a `KafkaRebalance` with this annotation is created, the cluster operator doesn't run any rebalancing. This is not an actual rebalance request to get an optimization proposal; it is simply where the configuration for auto-rebalancing is defined. @@ -166,9 +166,13 @@ spec: ``` When the `template` is set, the operator automatically creates (or updates) a corresponding `KafkaRebalance` custom resource (based on the template) when an anomaly is detected and notified by the `StrimziCruiseControlNotifier` The operator copies over goals and rebalancing options from the referenced `template` resource to the generated rebalancing one. -If the user has not configured the anomaly detection goals in Cruise Control then the operator would set the default goals to be used by the anomaly detector. -The goals mentioned in the rebalance template will be validated with the anomaly detection goals being used by Cruise Control. The mentioned goals should be either same or be a subset of the anomaly detection goals since the unmentioned goals will not be detected and therefore no rebalance would be required for those goals. -The `KafkaRebalance` has 4 modes: full, add-broker, remove-broker and remove-disks mode. +If the user has not configured the anomaly detection goals in Cruise Control section of the Kafka CR then the operator would set the default goals to be used by the anomaly detector. +The default anomaly detection goals set by the operator are RACK_AWARENESS_GOAL, MIN_TOPIC_LEADERS_PER_BROKER_GOAL, REPLICA_CAPACITY_GOAL, DISK_CAPACITY_GOAL. +These are similar to the default goals used in for KafkaRebalance if the users don't mention the rebalance goals. +If the user specifies a rebalance template then the goals mentioned in the rebalance template will be validated against the anomaly detection goals being used by Cruise Control. +The goals in the rebalance template should be either the same or be a subset of the anomaly detection goals being used by Cruise Control. +This is to ensure rebalances are only being run with goals that Cruise Control is checking for anomalies. +The `KafkaRebalance` has 4 modes: `full`, `add-broker`, `remove-broker` and `remove-disks` mode. The `imbalance` mode will be mapped to the `full` mode in the generated KafkaRebalance resource which means that generated `KafkaRebalance` custom resource will have the mode set as `full` which within the Strimzi rebalancing operator means calling the Cruise Control API to run a rebalancing taking all brokers into account. The generated `KafkaRebalance` custom resource will be called `-auto-rebalancing-imbalance-`, where the `` part comes from the `metadata.name` in the `Kafka` custom resource, and `imbalance` refers to applying the rebalance to all the brokers and the `` would be retrieved from the notifier. @@ -235,13 +239,12 @@ The advantages of using a single ConfigMap for all the detected anomalies versus 2. When dealing with multiple Kafka clusters, the number of ConfigMap(s) created will be equal to the number of clusters deployed This generated ConfigMap will contain the list of fixable goal violation anomalies in the section named `fixableAnomalies`. -The `fixableAnomalies` list will state the `anomalyId` of anomaly as well as the fixable violated goals. -The `fixableAnomalies` list will be populated by the notifier everytime it detects an anomaly. -Whenever a rebalance(manual or auto-rebalance) is about to be triggered by the operator (either in imbalance mode, remove-broker mode or add-broker mode) the `fixableAnomalies` list would be cleared. -In cases where the rebalance is happening for `remove-broker` and `add-broker` mode, we will put a check before the rebalance starts, that if there are some anomalies detected, we should make the `fixableAnomalies` list empty. -This is because it is possible that the rebalance will address some or all of the detected anomalies. -The above statement holds true for the cases of `manual` rebalances too. -If the user runs a `manual` rebalance, we will empty the `fixableAnomalies` in those cases too, also if some other anomalies are detected again after the rebalance then they will be updated in the ConfigMap by the notifier and another rebalance will take place. +The `fixableAnomalies` list will state the `anomalyId` of the anomaly as well as the fixable violated goals. +The `fixableAnomalies` list will be populated by the notifier every time it detects an anomaly. +Whenever a rebalance is about to be triggered by the operator the `fixableAnomalies` list will be cleared. +This will be the case for manual rebalances triggered by the user, as well as auto-rebalance rebalances that are happening in `add-broker`, `remove-broker`, or `imbalance` mode. +This is because not matter the reason for triggering the rebalance it is possible that the rebalance will address some or all of the detected anomalies. +If some other anomalies are detected again after the rebalance then they will be updated in the ConfigMap by the notifier and an `imbalance` related rebalance will take place. The ConfigMap will also have an optional field called `unfixableAnomalies` list which would be created only when an unfixable anomaly is detected i.e. an anomaly having unfixable goals. @@ -266,8 +269,8 @@ data: # ... ``` The `unfixableAnomalies` list will state the `anomalyId` as well as the unfixable goals associated with them. -The operator will use the `unfixableAnomalies` list to check if there are anomalies with unfixable goals or not. -If the list is not empty then the operator would create a `warning` condition based on the unfixable goal and add it to the `Kafka` CR status. +The operator will use the `unfixableAnomalies` list to check if there are anomalies with unfixable goals or not. +If the list is not empty then the operator will create a `warning` condition based on the unfixable goal and add it to the `Kafka` CR status. In case we get an anomaly which has both fixable goals and unfixable goals, we will still `IGNORE` that anomaly. This is because Cruise Control won't be able to generate a proposal that can fix all the configured goals for rebalance. @@ -279,21 +282,21 @@ The created ConfigMap will persist when `imbalance` mode is enabled for auto-reb The anomaly detector continues to run, even when a rebalance has been triggered. Therefore, it is possible that it may detect an anomaly that is currently in the process of being fixed. If we logged the anomaly in the ConfigMap, we may then trigger another rebalance for an anomaly that was fixed by the ongoing rebalance. -This could make operator running multiple rebalances for the anomaly and therefore running a lot of unnecessary rebalances. +This could result in the operator running multiple rebalances for the anomaly and therefore running a lot of unnecessary rebalances. -To tackle this problem we will ignore all the anomalies that are detected in between the rebalance. -We will place a check in the auto-rebalance reconciler class which will make sure that if a rebalance is running and a new anomaly is detected, then the `fixableAnomalies` list would be made empty. +To tackle this problem we will ignore all the anomalies that are detected while a rebalance is ongoing. +We will place a check in the auto-rebalance reconciler class which will make sure that if a rebalance is running and a new anomaly is detected, then the anomaly is not added to the `fixableAnomalies` list. This way we can avoid the rebalance for the same anomaly which is detected again. It is possible that a new anomaly was ignored in the process but the anomaly detector will detect it again in case the rebalance didn't fix it so we don't have to worry about it. -The above also holds true for the manual rebalances. -If a user is running a manual rebalance, and some anomaly is detected in between, we should still make the `fixable` anomalies list empty. +The above also holds true for the manual rebalances. +If a user is running a manual rebalance, and some anomaly is detected while it is happening, we should still not add it to the `fixable` anomalies list. #### Using other notifiers when using `imbalance` mode Users cannot configure the notifier if they are utilising the auto-rebalance on imbalanced cluster. -This is because the operator is using our custom notifier for getting alerts about goal violations. -If the users try to override the notifier while the `imbalance` mode is enabled, then the operator would throw warnings in the status field of the Kafka CR and ignore the changes made by the user +This is because the operator is using our custom notifier for getting alerts about goal violations. +If the users try to override the notifier while the `imbalance` mode is enabled, then the operator will add warnings in the status field of the Kafka CR and ignore the changes made by the user. ```yaml status: @@ -343,8 +346,8 @@ To stop a running rebalance the user can apply the `strimzi.io/rebalance=stop` a #### Metrics for tracking the rebalance requests If the users want to track when the auto-rebalances happen, they can access the Strimzi [metrics](https://github.com/strimzi/strimzi-kafka-operator/blob/main/examples/metrics/grafana-dashboards/strimzi-operators.json#L712) for the `KafkaRebalance` custom resources, this includes when they were visible/created. -These metrics also cover the `KafkaRebalance`(s) which were created automatically, so the users can utilize them to understand when an auto-rebalance were triggered in their cluster. -We will add labels to the metrics to differentiate the created rebalance on basis of mode i,.e the rebalance was triggered for full(for imbalanced cluster), add-broker or remove-broker mode. +These metrics also cover the `KafkaRebalance`(s) which were created automatically, so the users can utilize them to understand when an auto-rebalance was triggered in their cluster. +We will add labels to the metrics to differentiate the created rebalance on basis of mode i.e. the rebalance was triggered for full (for imbalanced cluster), add-broker or remove-broker mode. ### Auto-rebalancing execution for `imbalance` mode @@ -378,7 +381,7 @@ With the new `imbalance` mode, the FSM state transitions would look something li * **RebalanceOnScaleUp**: if a rebalancing on scale up is still running or another one was requested while the first one ended. * **RebalanceOnScaleDown**: if a scale down operation was requested, so the current rebalancing scale up is stopped (and queued) and a new rebalancing scale down is started. The rebalancing scale up will be postponed. * **RebalanceOnImbalance**: if a ConfigMap related to goal violation was detected and the `fixableAnomalies` list is not empty while the `unfixableAnomalies` list is empty. It will run once the queued scale down and scale up is completed. - * **Idle**: if a scale up operation was requested, it was executed and completed successfully/failed or a full rebalance was asked due to an anomaly but since the scale-down rebalance is done, we can ignore the anomalies assuming they are fixed by the rebalance. In case, they are not fixed, Cruise Control will detect them again and a new rebalance would be requested. + * **Idle**: if a scale up operation was requested, it was executed and completed successfully/failed or a full rebalance was asked due to an anomaly but since the scale-up rebalance is done, we can ignore the anomalies assuming they are fixed by the rebalance. In case, they are not fixed, Cruise Control will detect them again and a new rebalance would be requested. * from **RebalanceOnImbalance**: * **RebalanceOnImbalance**: if another goal violation was detected while the first one ended. If a scale down and scale up is also queued up then they will execute first. @@ -389,7 +392,7 @@ With the new `imbalance` mode, the FSM state transitions would look something li On each reconciliation, the following process will be used: 1. The `KafkaClusterCreator` creates the `KafkaCluster` instance. -2. The `KafkaAutoRebalancingReconciler.reconcile()` will then check if there was any ConfigMap created with name `my-cluster-goal-violation-map` and whether the `fixableAnomalies` and `unfixableAnomalies` list is empty or not, then the `full` rebalance(imbalance mode) would be performed if the `unfixableAnomalies` list is empty and the `fixableAnomalies` list is not empty. +2. The `KafkaAutoRebalancingReconciler.reconcile()` will then check if there was any ConfigMap created with name `my-cluster-goal-violation-map` and whether the `fixableAnomalies` and `unfixableAnomalies` list is empty or not, then the `full` rebalance (imbalance mode) would be performed if the `unfixableAnomalies` list is empty and the `fixableAnomalies` list is not empty. 3. If a rebalance is already ongoing and more anomalies are detected, then the operator will just ignore the new anomalies and delete all the anomalies from the `fixableAnomalies` list in the ConfigMap. Any anomalies that are not resolved by the ongoing rebalance will be redetected by the anomaly detector once the FSM returns to the `Idle` state. The `KafkaAutoRebalancingReconciler.reconcile()` also loads the `Kafka.status.autoRebalance` content: @@ -400,7 +403,7 @@ The `KafkaAutoRebalancingReconciler.reconcile()` also loads the `Kafka.status.au The FSM is initialized based on the `state` field. -Let's see what happens during the auto-rebalancing process when the FSM starts from the **Idle** state and transitions to **RebalanceOnImbalance** +Let's see what happens during the auto-rebalancing process when the FSM starts from the **Idle** state and transitions to **RebalanceOnImbalance**. #### Idle @@ -412,7 +415,7 @@ In this state, the operator removes the finalizer and deletes the corresponding #### RebalanceOnImbalance -In this state, an anomaly was detected and a ConfigMap was generated by the notifier with an `fixableAnomalies` list +In this state, an anomaly was detected and a ConfigMap was generated by the notifier with a `fixableAnomalies` list. A KafkaRebalance resource will now be applied to the cluster to fix the imbalanced cluster. This KafkaRebalance will be based on the template provided by the user, if no template is provided then the KafkaRebalance will be created with default configurations. @@ -445,7 +448,7 @@ Checking the current `KafkaRebalance` status: * the rebalancing is stopped, transition to **Idle** and also removing the corresponding mode from the status. The operator deletes the generated `KafkaRebalance` custom resource. The users should then disable the `imbalance` mode of auto-rebalance else a new rebalance would be triggered. If, during an ongoing auto-rebalancing, the `KafkaRebalance` custom resource is not there anymore on the next reconciliation, it could mean the user deleted it while the operator was stopped/crashed/not running. -In this case, the FSM will assume it as `NotReady` so falling in the last case above. +In this case, the FSM will assume it as falling in the `NotReady` case above. ## Affected/not affected projects @@ -453,7 +456,7 @@ This change will affect the Strimzi cluster operator and a new repository named ## Backwards compatibility -This change will not cause any backwards compatibility issue. The changes stated in the proposal only enables if the user is making use of the `imbalance` mode of the auto-rebalancing feature +This change will not cause any backwards compatibility issue. The behaviour stated in the proposal is only enabled if the user is making use of the `imbalance` mode of the auto-rebalancing feature. ## Rejected Alternatives From 9b7738ac705b1e2c06f4db674d8d4ac09502ed17 Mon Sep 17 00:00:00 2001 From: ShubhamRwt Date: Wed, 26 Nov 2025 13:54:47 +0530 Subject: [PATCH 14/20] Added suggestions by Paolo and Tina Signed-off-by: ShubhamRwt --- 106-auto-rebalance-on-imbalanced-clusters.md | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/106-auto-rebalance-on-imbalanced-clusters.md b/106-auto-rebalance-on-imbalanced-clusters.md index a134a3da..1f863786 100644 --- a/106-auto-rebalance-on-imbalanced-clusters.md +++ b/106-auto-rebalance-on-imbalanced-clusters.md @@ -374,17 +374,15 @@ With the new `imbalance` mode, the FSM state transitions would look something li * from **RebalanceOnScaleDown** to: * **RebalanceOnScaleDown**: if a rebalancing on scale down is still running or another one was requested while the first one ended. * **RebalanceOnScaleUp**: if a scale down operation was requested together with a scale up and, because they run sequentially, the rebalance on scale down had the precedence, was executed first and completed successfully. We can now move on with rebalancing for the scale up. - * **RebalanceOnImbalance**: if a ConfigMap related to goal violation was detected and the `fixableAnomalies` list is not empty while the `unfixableAnomalies` list is empty. It will run once the queued scale down and scale up is completed. * **Idle**: if a scale down operation was requested, it was executed and completed successfully/failed or a full rebalance was asked due to an anomaly but since the scale-down rebalance is done, we can ignore the anomalies assuming they are fixed by the rebalance. In case, they are not fixed, Cruise Control will detect them again and a new rebalance would be requested. * from **RebalanceOnScaleUp**: * **RebalanceOnScaleUp**: if a rebalancing on scale up is still running or another one was requested while the first one ended. * **RebalanceOnScaleDown**: if a scale down operation was requested, so the current rebalancing scale up is stopped (and queued) and a new rebalancing scale down is started. The rebalancing scale up will be postponed. - * **RebalanceOnImbalance**: if a ConfigMap related to goal violation was detected and the `fixableAnomalies` list is not empty while the `unfixableAnomalies` list is empty. It will run once the queued scale down and scale up is completed. * **Idle**: if a scale up operation was requested, it was executed and completed successfully/failed or a full rebalance was asked due to an anomaly but since the scale-up rebalance is done, we can ignore the anomalies assuming they are fixed by the rebalance. In case, they are not fixed, Cruise Control will detect them again and a new rebalance would be requested. * from **RebalanceOnImbalance**: - * **RebalanceOnImbalance**: if another goal violation was detected while the first one ended. If a scale down and scale up is also queued up then they will execute first. + * **RebalanceOnImbalance**: if another goal violation was detected while the first one ended or rebalance is still running. * **RebalanceOnScaleUp**: if a rebalancing on scale up is queued and will run if there is no other rebalancing scale down in queue. If a rebalancing scale down is in queue then it will be executed first. * **RebalanceOnScaleDown**: if a scale down operation was requested, it will run once the full rebalance is completed. * **Idle**: if full rebalance was requested, it was executed and completed successfully or failed. @@ -392,14 +390,14 @@ With the new `imbalance` mode, the FSM state transitions would look something li On each reconciliation, the following process will be used: 1. The `KafkaClusterCreator` creates the `KafkaCluster` instance. -2. The `KafkaAutoRebalancingReconciler.reconcile()` will then check if there was any ConfigMap created with name `my-cluster-goal-violation-map` and whether the `fixableAnomalies` and `unfixableAnomalies` list is empty or not, then the `full` rebalance (imbalance mode) would be performed if the `unfixableAnomalies` list is empty and the `fixableAnomalies` list is not empty. +2. The `KafkaAutoRebalancingReconciler.reconcile()` will then check if there was any ConfigMap created with name `-goal-violation-map` and whether the `fixableAnomalies` and `unfixableAnomalies` list is empty or not, then the `full` rebalance (imbalance mode) would be performed if the `unfixableAnomalies` list is empty and the `fixableAnomalies` list is not empty. 3. If a rebalance is already ongoing and more anomalies are detected, then the operator will just ignore the new anomalies and delete all the anomalies from the `fixableAnomalies` list in the ConfigMap. Any anomalies that are not resolved by the ongoing rebalance will be redetected by the anomaly detector once the FSM returns to the `Idle` state. The `KafkaAutoRebalancingReconciler.reconcile()` also loads the `Kafka.status.autoRebalance` content: * `state`: is the FSM state * `lastTransitionTime`: when the transition to that state happened. -* `modes`: sets the mode as `imbalance` +* `modes`: enabled modes (`remove-brokers`, `imbalance` and/or `add-brokers`) if an auto-rebalancing requested. The FSM is initialized based on the `state` field. From de6c2866af815c3197bcbdb00d0c9a9ef74b62cb Mon Sep 17 00:00:00 2001 From: ShubhamRwt Date: Wed, 26 Nov 2025 14:09:17 +0530 Subject: [PATCH 15/20] Update image Signed-off-by: ShubhamRwt --- images/106-finite-state-machine.png | Bin 169237 -> 167018 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/images/106-finite-state-machine.png b/images/106-finite-state-machine.png index 71a7c073373ed258cfd0b35827fc3d6edb126b8b..928dfb7326840a7181c924ee2e7576fd23bd6ff0 100644 GIT binary patch literal 167018 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 z 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

l1ZVs2#gY`Zhf!kggxOQ!54my;>D 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 z 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 V?bokITss5))ReVhWlE1i{tsh#F(3c{ literal 169237 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 From 062efeb09f183e604afabb70fbbbb523eb612db5 Mon Sep 17 00:00:00 2001 From: ShubhamRwt Date: Fri, 28 Nov 2025 14:32:53 +0530 Subject: [PATCH 16/20] Added more changes Signed-off-by: ShubhamRwt --- 106-auto-rebalance-on-imbalanced-clusters.md | 29 ++++++++++++-------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/106-auto-rebalance-on-imbalanced-clusters.md b/106-auto-rebalance-on-imbalanced-clusters.md index 1f863786..ae0d6619 100644 --- a/106-auto-rebalance-on-imbalanced-clusters.md +++ b/106-auto-rebalance-on-imbalanced-clusters.md @@ -108,9 +108,9 @@ To leverage the automated rebalance on imbalanced cluster (those with detected G The new mode will be called `imbalance`, which means that cluster imbalance was detected and rebalancing should be applied to all the brokers. The imbalance mode is configured by creating a new object in the `spec.cruiseControl.autoRebalance` list with its `mode` field set to `imbalance` and the corresponding rebalancing configuration is defined as a reference to a template `KafkaRebalance` custom resource, by using the `spec.cruiseControl.autoRebalance.template` field as a [LocalObjectReference](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/local-object-reference/). The `template` field is optional and if not specified, the auto-rebalancing runs with the default Cruise Control configuration (i.e. the same used for unmodified manual `KafkaRebalance` invocations). -To provide users more flexibility, they only have to configure the auto-rebalance modes they wish to use whether it be `add-brokers`, `remove-brokers`, or `imbalance`. +To provide users more flexibility, they only have to configure the auto-rebalance modes they wish to use, whether it be `add-brokers`, `remove-brokers`, or `imbalance`. When the auto-rebalance configuration is set with `imbalance` mode enabled, the operator will trigger a partition rebalance whenever a goal violation is detected by the anomaly detector. -To trigger the auto-rebalance, the operator must know that the cluster is imbalanced due to some goal violation anomaly. +For the operator to trigger the auto-rebalance, it must be aware that the cluster is imbalanced due to a goal violation anomaly. We will create our own custom notifier named `StrimziCruiseControlNotifier` to do this. This notifier's job will be to update the operator regarding the goal violations so that the operator can trigger a rebalance (see section [StrimziCruiseControlNotifier](./106-auto-rebalance-on-imbalanced-clusters.md#strimzicruisecontrolnotifier)). With this proposal, we are only going to support auto-rebalance on imbalanced cluster. @@ -167,15 +167,16 @@ spec: When the `template` is set, the operator automatically creates (or updates) a corresponding `KafkaRebalance` custom resource (based on the template) when an anomaly is detected and notified by the `StrimziCruiseControlNotifier` The operator copies over goals and rebalancing options from the referenced `template` resource to the generated rebalancing one. If the user has not configured the anomaly detection goals in Cruise Control section of the Kafka CR then the operator would set the default goals to be used by the anomaly detector. -The default anomaly detection goals set by the operator are RACK_AWARENESS_GOAL, MIN_TOPIC_LEADERS_PER_BROKER_GOAL, REPLICA_CAPACITY_GOAL, DISK_CAPACITY_GOAL. +The default anomaly detection goals set by the operator are `RACK_AWARENESS_GOAL`, `MIN_TOPIC_LEADERS_PER_BROKER_GOAL`, `REPLICA_CAPACITY_GOAL`, `DISK_CAPACITY_GOAL`. These are similar to the default goals used in for KafkaRebalance if the users don't mention the rebalance goals. If the user specifies a rebalance template then the goals mentioned in the rebalance template will be validated against the anomaly detection goals being used by Cruise Control. The goals in the rebalance template should be either the same or be a subset of the anomaly detection goals being used by Cruise Control. This is to ensure rebalances are only being run with goals that Cruise Control is checking for anomalies. +If the goals mentioned in the templates are not a subset of the configured anomaly detection goals then we will add a warning condition in the Kafka CR regarding the failed validation. The `KafkaRebalance` has 4 modes: `full`, `add-broker`, `remove-broker` and `remove-disks` mode. The `imbalance` mode will be mapped to the `full` mode in the generated KafkaRebalance resource which means that generated `KafkaRebalance` custom resource will have the mode set as `full` which within the Strimzi rebalancing operator means calling the Cruise Control API to run a rebalancing taking all brokers into account. -The generated `KafkaRebalance` custom resource will be called `-auto-rebalancing-imbalance-`, where the `` part comes from the `metadata.name` in the `Kafka` custom resource, and `imbalance` refers to applying the rebalance to all the brokers and the `` would be retrieved from the notifier. +The generated `KafkaRebalance` custom resource will be called `-auto-rebalancing-imbalance-`, where the `` part comes from the `metadata.name` in the `Kafka` custom resource, `imbalance` refers to applying the rebalance to all the brokers, and the `` would be retrieved from the notifier. ```yaml apiVersion: kafka.strimzi.io/v1beta2 @@ -201,12 +202,12 @@ spec: The operator also sets a finalizer, named `strimzi.io/auto-rebalancing`, on the generated `KafkaRebalance` custom resource. This is needed to avoid the user, or any other tooling, deleting the resource while the auto-rebalancing is still running. The finalizer is removed when Cruise Control indicates that the partition reassignment (rebalance) process has finished allowing the generated `KafkaRebalance` custom resource to be deleted by the operator itself. -In case the rebalance finishes with error, the error message will be propagated to the Kafka custom resource just like we do for the `remove-broker` and `add-broker` endpoint and the generated `KafkaRebalance` will be deleted. +In case the rebalance finishes with an error, the error message will be propagated to the Kafka custom resource just like we do for the `remove-broker` and `add-broker` endpoint and the generated `KafkaRebalance` will be deleted. #### StrimziCruiseControlNotifier Cruise Control provides the `AnomalyNotifier` interface, which has multiple abstract methods on what to do if certain anomalies are detected. -Some of those methods are:`onGoalViolation()`, `onBrokerFailure()`, `onDiskFailure`, `alert()`. +Some of those methods are: `onGoalViolation()`, `onBrokerFailure()`, `onDiskFailure`, `alert()`. The `StrimziCruiseControlNotifier` will implement the `AnomalyNotifier` interface. Every detected anomaly is placed in a priority queue and each of the anomalies have a priority value assigned to them. Since we are working with only goal related violations, every anomaly will have same priority. @@ -341,13 +342,18 @@ status: #### Stopping a running rebalance -To stop a running rebalance the user can apply the `strimzi.io/rebalance=stop` annotation on the generated `KafkaRebalance` resource. This would stop the running rebalance and the stopped `KafkaRebalance` resource will be deleted. The user will need to make sure that they disable the `auto-rebalance` mode after they have stopped the rebalance otherwise the rebalance would be triggered again since the anomalies are still present in the cluster. +To stop a running rebalance the user can apply the `strimzi.io/rebalance=stop` annotation on the generated `KafkaRebalance` resource. +This would stop the running rebalance and the stopped `KafkaRebalance` resource will be deleted. +The user will need to make sure that they disable the `auto-rebalance` mode after they have stopped the rebalance otherwise the rebalance would be triggered again since the anomalies are still present in the cluster. #### Metrics for tracking the rebalance requests If the users want to track when the auto-rebalances happen, they can access the Strimzi [metrics](https://github.com/strimzi/strimzi-kafka-operator/blob/main/examples/metrics/grafana-dashboards/strimzi-operators.json#L712) for the `KafkaRebalance` custom resources, this includes when they were visible/created. These metrics also cover the `KafkaRebalance`(s) which were created automatically, so the users can utilize them to understand when an auto-rebalance was triggered in their cluster. We will add labels to the metrics to differentiate the created rebalance on basis of mode i.e. the rebalance was triggered for full (for imbalanced cluster), add-broker or remove-broker mode. +Cruise Control currently don't have any metrics to depict what type of anomaly was detected and when. +Therefore, we will add a new metric of counter type named `anomaly_detection_metrics` which will be updated whenever an anomaly is detected by the anomaly detector. We will also add labels to it to differentiate them based on fixability and type of anomaly. +These metrics will be exposed by the operator and will be only available when the user has configured auto-rebalance on `imbalance` mode. ### Auto-rebalancing execution for `imbalance` mode @@ -369,7 +375,7 @@ With the new `imbalance` mode, the FSM state transitions would look something li * from **Idle** to: * **RebalanceOnScaleDown**: if a scale down operation was requested. This transition happens even if a scale up was requested at the same time but the rebalancing on scaling down has the precedence. The rebalancing on scale up is queued. They will run sequentially. * **RebalanceOnScaleUp**: if only a scale up operation was requested. There was no scale down operation requested. - * **RebalanceOnImbalance**: if a ConfigMap related to goal violation was detected, and the `fixableAnomalies` list is not empty while the `unfixableAnomalies` list is empty. If there are queued scale up or scale down operations, then they will run first. + * **RebalanceOnImbalance**: if a ConfigMap related to goal violation was updated, and the `fixableAnomalies` list is not empty while the `unfixableAnomalies` list is empty. If there are queued scale up or scale down operations, then they will run first. * from **RebalanceOnScaleDown** to: * **RebalanceOnScaleDown**: if a rebalancing on scale down is still running or another one was requested while the first one ended. @@ -383,15 +389,16 @@ With the new `imbalance` mode, the FSM state transitions would look something li * from **RebalanceOnImbalance**: * **RebalanceOnImbalance**: if another goal violation was detected while the first one ended or rebalance is still running. - * **RebalanceOnScaleUp**: if a rebalancing on scale up is queued and will run if there is no other rebalancing scale down in queue. If a rebalancing scale down is in queue then it will be executed first. - * **RebalanceOnScaleDown**: if a scale down operation was requested, it will run once the full rebalance is completed. + * **RebalanceOnScaleUp**: if a rebalancing on scale up is in queue, then the rebalance on imbalance will be stopped and the scale up will happen first. If there is a rebalancing scale down in queue too, then it will be executed before both scale up and rebalance on imbalance. + * **RebalanceOnScaleDown**: if a scale down operation was requested, then the rebalance on imbalance will be stopped and the scale down will be allowed to finish first and after that rebalance on imbalance will be executed. * **Idle**: if full rebalance was requested, it was executed and completed successfully or failed. On each reconciliation, the following process will be used: 1. The `KafkaClusterCreator` creates the `KafkaCluster` instance. 2. The `KafkaAutoRebalancingReconciler.reconcile()` will then check if there was any ConfigMap created with name `-goal-violation-map` and whether the `fixableAnomalies` and `unfixableAnomalies` list is empty or not, then the `full` rebalance (imbalance mode) would be performed if the `unfixableAnomalies` list is empty and the `fixableAnomalies` list is not empty. -3. If a rebalance is already ongoing and more anomalies are detected, then the operator will just ignore the new anomalies and delete all the anomalies from the `fixableAnomalies` list in the ConfigMap. Any anomalies that are not resolved by the ongoing rebalance will be redetected by the anomaly detector once the FSM returns to the `Idle` state. +3. If a rebalance is already ongoing and more anomalies are detected, then the operator will just ignore the new anomalies and delete all the anomalies from the `fixableAnomalies` list in the ConfigMap. +4. Any anomalies that are not resolved by the ongoing rebalance will be redetected by the anomaly detector once the FSM returns to the `Idle` state. The `KafkaAutoRebalancingReconciler.reconcile()` also loads the `Kafka.status.autoRebalance` content: From ce26f07006ebeebd74415c808f4dcf06017708c9 Mon Sep 17 00:00:00 2001 From: ShubhamRwt Date: Thu, 11 Dec 2025 13:32:20 +0530 Subject: [PATCH 17/20] Added suggestion by Tina and Kate Signed-off-by: ShubhamRwt --- 106-auto-rebalance-on-imbalanced-clusters.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/106-auto-rebalance-on-imbalanced-clusters.md b/106-auto-rebalance-on-imbalanced-clusters.md index ae0d6619..213518f4 100644 --- a/106-auto-rebalance-on-imbalanced-clusters.md +++ b/106-auto-rebalance-on-imbalanced-clusters.md @@ -340,6 +340,9 @@ status: The detected has unfixable `DiskDistributionGoal` goal. ``` +Once the warning is issued, the operator will clear the `unfixableAnomalies` list. +In case the user doesn't fix the anomaly, the `unfixableAnomalies` list will be populated again with the unfixable goal violation, and it will keep happening until the user fixes the anomaly manually. + #### Stopping a running rebalance To stop a running rebalance the user can apply the `strimzi.io/rebalance=stop` annotation on the generated `KafkaRebalance` resource. From 2f710d582205f204d3a6637527704d15cb4b970e Mon Sep 17 00:00:00 2001 From: ShubhamRwt Date: Fri, 12 Dec 2025 16:47:00 +0530 Subject: [PATCH 18/20] Added the changes suggested by Paolo Signed-off-by: ShubhamRwt --- 106-auto-rebalance-on-imbalanced-clusters.md | 26 +++++++++++--------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/106-auto-rebalance-on-imbalanced-clusters.md b/106-auto-rebalance-on-imbalanced-clusters.md index 213518f4..8ba5a2b7 100644 --- a/106-auto-rebalance-on-imbalanced-clusters.md +++ b/106-auto-rebalance-on-imbalanced-clusters.md @@ -29,7 +29,7 @@ The frequency of this check can be changed via the `anomaly.detection.interval.m Detector classes use different mechanisms to detect their corresponding anomalies. For example, `KafkaBrokerFailureDetector`, `DiskFailureDetector` and `TopicAnomalyDetector` utilises Kafka Admin API while `MetricAnomalyDetector` use metrics and `GoalViolationDetector` uses the load distribution (calculated by Cruise Control itself) to detect their anomalies. The detected anomalies can be of various types: -* Goal Violation - This happens if certain [optimization goals](https://strimzi.io/docs/operators/in-development/deploying#optimization_goals) are violated (e.g. DiskUsageDistributionGoal etc.). These goals can be configured through the `self.healing.goals` option in the Cruise Control configuration. However, this option is currently forbidden in the `spec.cruiseControl.config` section of the `Kafka` CR. +* Goal Violation - This happens if certain [optimization goals](https://strimzi.io/docs/operators/in-development/deploying#optimization_goals) are violated (e.g. DiskUsageDistributionGoal etc.). These goals can be configured through the `anomaly.detection.goals` option in the Cruise Control configuration. However, this option is currently forbidden in the `spec.cruiseControl.config` section of the `Kafka` CR. * Topic Anomaly - When one or more topics in the cluster violate user-defined properties (e.g. some partitions are too large on disk, the replication factor of a topic is different from a given default value etc). * Broker Failure - This happens when a non-empty broker crashes or leaves a cluster for a long time. * Disk Failure - This failure happens when one of the non-empty disks fails (in a Kafka cluster with JBOD disks). @@ -64,7 +64,7 @@ There are multiple other [self-healing notifier](https://github.com/linkedin/cru #### Self Healing -If self-healing is enabled, then an action is returned by the notifier to make a decision whether the anomaly should be fixed or not. +If self-healing is enabled, Cruise Control will start fixing or not the detected anomaly based on the action returned by the configured notifier. If the notifier has returned `FIX` as the action then the classes which are responsible for resolving the anomaly would be called. Each detectable anomaly is handled by a specific detector class which then uses another remediation class to run a fix. For example, the `GoalViolations` class uses the `RebalanceRunnable` class, the `DiskFailure` class use the `RemoveDisksRunnable` class and so on. @@ -215,7 +215,8 @@ This means that detected anomalies will be fixed on a first come, first served b In situations where the anomaly is unfixable, due to issues like a lack of physical hardware (e.g. insufficient number of racks to satisfy rack awareness, insufficient number of brokers to satisfy `ReplicaCapacityGoal`, or insufficient number of resources to satisfy resource capacity goals), then they will be ignored and the user will be alerted via a condition in the Kafka CR status. The `StrimziCruiseControlNotifier` will be kept in a separate repository and will override all the methods declared by the `AnomalyNotifier` interface. We will provide a concrete implementations of the `AnomalyNotifier.alert` method which will alert the operator whenever an anomaly is detected by the operator. -Upon detection of an anomaly, the notifier would create (if it doesn't already exist) or update a ConfigMap with the name `-goal-violation-map`. +This implementation of `AnomalyNotifier.alert` will return `IGNORE` to the anomaly detector manager because even if an anomaly is detected, it won't be fixed by Cruise Control but via a "rebalance" operation triggered by the operator. +Upon detection of an anomaly, the notifier would create (if it doesn't already exist) or update a ConfigMap with the name `-goal-violations`. This ConfigMap will contain all the detected anomalies for a given Kafka cluster. The ConfigMap will look like this: @@ -224,7 +225,7 @@ The ConfigMap will look like this: kind: ConfigMap apiVersion: v1 metadata: - name: my-cluster-goal-violation-map + name: my-cluster-goal-violations data: fixableAnomalies: | - : @@ -253,7 +254,7 @@ The ConfigMap will also have an optional field called `unfixableAnomalies` list kind: ConfigMap apiVersion: v1 metadata: - name: my-cluster-goal-violation-map + name: my-cluster-goal-violations data: fixableAnomalies: | - : @@ -263,10 +264,10 @@ data: - unfixableAnomalies: | - : - - - - + - + - - : - - + - # ... ``` The `unfixableAnomalies` list will state the `anomalyId` as well as the unfixable goals associated with them. @@ -286,8 +287,9 @@ If we logged the anomaly in the ConfigMap, we may then trigger another rebalance This could result in the operator running multiple rebalances for the anomaly and therefore running a lot of unnecessary rebalances. To tackle this problem we will ignore all the anomalies that are detected while a rebalance is ongoing. -We will place a check in the auto-rebalance reconciler class which will make sure that if a rebalance is running and a new anomaly is detected, then the anomaly is not added to the `fixableAnomalies` list. -This way we can avoid the rebalance for the same anomaly which is detected again. +A check will be placed in the auto-rebalance reconciler class which will make sure that if a rebalance is running or not. +If an anomaly is detected during the rebalance, then that anomaly will be ignored and `fixableAnomalies` list will be made empty. +This way a new rebalance can be avoided for the same anomaly which is detected again. It is possible that a new anomaly was ignored in the process but the anomaly detector will detect it again in case the rebalance didn't fix it so we don't have to worry about it. The above also holds true for the manual rebalances. @@ -399,7 +401,7 @@ With the new `imbalance` mode, the FSM state transitions would look something li On each reconciliation, the following process will be used: 1. The `KafkaClusterCreator` creates the `KafkaCluster` instance. -2. The `KafkaAutoRebalancingReconciler.reconcile()` will then check if there was any ConfigMap created with name `-goal-violation-map` and whether the `fixableAnomalies` and `unfixableAnomalies` list is empty or not, then the `full` rebalance (imbalance mode) would be performed if the `unfixableAnomalies` list is empty and the `fixableAnomalies` list is not empty. +2. The `KafkaAutoRebalancingReconciler.reconcile()` will then check if there was any ConfigMap created with name `-goal-violations` and whether the `fixableAnomalies` and `unfixableAnomalies` list is empty or not, then the `full` rebalance (imbalance mode) would be performed if the `unfixableAnomalies` list is empty and the `fixableAnomalies` list is not empty. 3. If a rebalance is already ongoing and more anomalies are detected, then the operator will just ignore the new anomalies and delete all the anomalies from the `fixableAnomalies` list in the ConfigMap. 4. Any anomalies that are not resolved by the ongoing rebalance will be redetected by the anomaly detector once the FSM returns to the `Idle` state. @@ -460,7 +462,7 @@ In this case, the FSM will assume it as falling in the `NotReady` case above. ## Affected/not affected projects -This change will affect the Strimzi cluster operator and a new repository named `strimzi-notifier` will be added under the Strimzi organisation. +This change will affect the Strimzi cluster operator and a new repository named `strimzi-cruise-control-notifier` will be added under the Strimzi organisation. ## Backwards compatibility From 93d4c5c94db556d88a488eaaf65534fe04bf1319 Mon Sep 17 00:00:00 2001 From: ShubhamRwt Date: Fri, 12 Dec 2025 16:56:35 +0530 Subject: [PATCH 19/20] Fixed the missing change Signed-off-by: ShubhamRwt --- 106-auto-rebalance-on-imbalanced-clusters.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/106-auto-rebalance-on-imbalanced-clusters.md b/106-auto-rebalance-on-imbalanced-clusters.md index 8ba5a2b7..d36e1739 100644 --- a/106-auto-rebalance-on-imbalanced-clusters.md +++ b/106-auto-rebalance-on-imbalanced-clusters.md @@ -293,7 +293,7 @@ This way a new rebalance can be avoided for the same anomaly which is detected a It is possible that a new anomaly was ignored in the process but the anomaly detector will detect it again in case the rebalance didn't fix it so we don't have to worry about it. The above also holds true for the manual rebalances. -If a user is running a manual rebalance, and some anomaly is detected while it is happening, we should still not add it to the `fixable` anomalies list. +If a user is running a manual rebalance, and some anomaly is detected while it is happening, the operator will still ignore the newly detected anomaly. #### Using other notifiers when using `imbalance` mode From 90173d69d35529bdae33d851fa0d606daf9abb92 Mon Sep 17 00:00:00 2001 From: ShubhamRwt Date: Thu, 26 Feb 2026 22:08:07 +0530 Subject: [PATCH 20/20] Updated the logic Signed-off-by: ShubhamRwt --- 106-auto-rebalance-on-imbalanced-clusters.md | 304 +++++++++++-------- images/106-auto-rebalance-imbalance.png | Bin 0 -> 193243 bytes 2 files changed, 180 insertions(+), 124 deletions(-) create mode 100644 images/106-auto-rebalance-imbalance.png diff --git a/106-auto-rebalance-on-imbalanced-clusters.md b/106-auto-rebalance-on-imbalanced-clusters.md index d36e1739..4abd524a 100644 --- a/106-auto-rebalance-on-imbalanced-clusters.md +++ b/106-auto-rebalance-on-imbalanced-clusters.md @@ -111,8 +111,8 @@ The `template` field is optional and if not specified, the auto-rebalancing runs To provide users more flexibility, they only have to configure the auto-rebalance modes they wish to use, whether it be `add-brokers`, `remove-brokers`, or `imbalance`. When the auto-rebalance configuration is set with `imbalance` mode enabled, the operator will trigger a partition rebalance whenever a goal violation is detected by the anomaly detector. For the operator to trigger the auto-rebalance, it must be aware that the cluster is imbalanced due to a goal violation anomaly. -We will create our own custom notifier named `StrimziCruiseControlNotifier` to do this. -This notifier's job will be to update the operator regarding the goal violations so that the operator can trigger a rebalance (see section [StrimziCruiseControlNotifier](./106-auto-rebalance-on-imbalanced-clusters.md#strimzicruisecontrolnotifier)). +We will make use of the `state` endpoint of Cruise Control to do this +This operator will use this endpoint to understand if there are any goal violations so that the operator can trigger a rebalance (see section [StrimziCruiseControlNotifier](./106-auto-rebalance-on-imbalanced-clusters.md#strimzicruisecontrolnotifier)). With this proposal, we are only going to support auto-rebalance on imbalanced cluster. We also plan to implement the same for topic and metrics related issues, but it will be part of future work since their implementation require different approaches. For example, when dealing with topic related issues, it will require a coordination with topic operator and metrics issues will require coordination with the Kafka API. @@ -204,128 +204,187 @@ This is needed to avoid the user, or any other tooling, deleting the resource wh The finalizer is removed when Cruise Control indicates that the partition reassignment (rebalance) process has finished allowing the generated `KafkaRebalance` custom resource to be deleted by the operator itself. In case the rebalance finishes with an error, the error message will be propagated to the Kafka custom resource just like we do for the `remove-broker` and `add-broker` endpoint and the generated `KafkaRebalance` will be deleted. -#### StrimziCruiseControlNotifier - -Cruise Control provides the `AnomalyNotifier` interface, which has multiple abstract methods on what to do if certain anomalies are detected. -Some of those methods are: `onGoalViolation()`, `onBrokerFailure()`, `onDiskFailure`, `alert()`. -The `StrimziCruiseControlNotifier` will implement the `AnomalyNotifier` interface. -Every detected anomaly is placed in a priority queue and each of the anomalies have a priority value assigned to them. -Since we are working with only goal related violations, every anomaly will have same priority. -This means that detected anomalies will be fixed on a first come, first served basis. -In situations where the anomaly is unfixable, due to issues like a lack of physical hardware (e.g. insufficient number of racks to satisfy rack awareness, insufficient number of brokers to satisfy `ReplicaCapacityGoal`, or insufficient number of resources to satisfy resource capacity goals), then they will be ignored and the user will be alerted via a condition in the Kafka CR status. -The `StrimziCruiseControlNotifier` will be kept in a separate repository and will override all the methods declared by the `AnomalyNotifier` interface. -We will provide a concrete implementations of the `AnomalyNotifier.alert` method which will alert the operator whenever an anomaly is detected by the operator. -This implementation of `AnomalyNotifier.alert` will return `IGNORE` to the anomaly detector manager because even if an anomaly is detected, it won't be fixed by Cruise Control but via a "rebalance" operation triggered by the operator. -Upon detection of an anomaly, the notifier would create (if it doesn't already exist) or update a ConfigMap with the name `-goal-violations`. -This ConfigMap will contain all the detected anomalies for a given Kafka cluster. - -The ConfigMap will look like this: - -```yaml -kind: ConfigMap -apiVersion: v1 -metadata: - name: my-cluster-goal-violations -data: - fixableAnomalies: | - - : - - - - - - : - - -# ... +#### State endpoint in Cruise Control + +Cruise Control provides the `state` endpoint to query the state of Kafka Cruise Control at any time by issuing a HTTP GET request. +The state endpoint supports following parameters: + +| PARAMETER | TYPE | DESCRIPTION | DEFAULT | OPTIONAL | +|---------------|---------|-------------------------------------------------------------------------------------------------------------------------------------|----------------------|----------| +| substates | list | substates for which to retrieve state from cruise-control, available substates are analyzer, monitor, executor and anomaly_detector | all substates | yes | +| json | boolean | return in JSON format or not | false | yes | +| verbose | boolean | return detailed state information | false | yes | +| super_verbose | boolean | return more detailed state information | false | yes | +| doAs | string | propagated user by the trusted proxy service | null | yes | +| reason | string | reason for the request | "No reason provided" | yes | + +For this feature, we will be making use of the two substates of the `state` endpoint which are `executor` and `anomaly_detector` substate. +The `excecutor` state provides us with the status of rebalance i.e. no rebalance in progress, if rebalance is already running, if rebalance is in stopped state etc. +The `anomaly_detector` state provides us with the status of the anomaly detector part of Cruise Control i.e. if a goal violation was detected, the timestamp corresponding to it, the type of anomaly etc. +For more information, refer to the [state endpoint](https://github.com/linkedin/cruise-control/wiki/rest-apis#query-the-state-of-cruise-control) + +### Flow diagram depicting process of auto-rebalance on imbalance +![flow-diagram-auto-rebalance-on-imbalance](images/106-auto-rebalance-imbalance.png) + +#### KafkaAutoRebalanceReconciler class using state endpoint + +The operator will interact with the cruise control `state` endpoint to understand when an anomaly is detected and when it should take any action. +The `KafkaAutoRebalanceReconciler` class will hold all the logic for the auto-rebalance triggered on scale up, scale down or imbalance. +The reconciler currently detects any sort of scale down or scale automatically every reconciliation, we will configure it to detect any imbalances in the cluster in a similar fashion. +But we also need to make sure that we don't detect any goal violations when a rebalance is already ongoing (manual or automatic rebalance). +An ongoing rebalance can mean that some goal violation which might be detected in that particular reconciliation will be fixed already by the rebalance and we don't need any extra rebalance. +For the rebalances that are triggered automatically, if the `KafkaAutoRebalanceReconciler` state machine is not in `Idle` state and is currently in `RebalanceOnScaleUp`, `RebalanceOnScaleDown`or `RebalanceOnImbalance` then it means that a rebalance is happening. +We can ignore the goal violation detection in those cases. +For manual rebalances, we can't use the above mechanism, therefore to do that we will make use of the `executor` state endpoint. +Every reconciliation, the `KafkaAutoRebalanceReconciler` will send a request to the `state` endpoint with `executor` substate to know if there is any rebalance ongoing or not. +If there is no ongoing rebalance, only then the operator will check for goal violations. +Here is an example JSON returned by executor state if there is no rebalance happening: +```json +{ + "ExecutorState": { + "state": "NO_TASK_IN_PROGRESS" + }, + "version": 1 +} ``` - -The advantages of using a single ConfigMap for all the detected anomalies versus one per anomaly are: -1. It provides a single point of reference for all the anomalies -2. When dealing with multiple Kafka clusters, the number of ConfigMap(s) created will be equal to the number of clusters deployed - -This generated ConfigMap will contain the list of fixable goal violation anomalies in the section named `fixableAnomalies`. -The `fixableAnomalies` list will state the `anomalyId` of the anomaly as well as the fixable violated goals. -The `fixableAnomalies` list will be populated by the notifier every time it detects an anomaly. -Whenever a rebalance is about to be triggered by the operator the `fixableAnomalies` list will be cleared. -This will be the case for manual rebalances triggered by the user, as well as auto-rebalance rebalances that are happening in `add-broker`, `remove-broker`, or `imbalance` mode. -This is because not matter the reason for triggering the rebalance it is possible that the rebalance will address some or all of the detected anomalies. -If some other anomalies are detected again after the rebalance then they will be updated in the ConfigMap by the notifier and an `imbalance` related rebalance will take place. - -The ConfigMap will also have an optional field called `unfixableAnomalies` list which would be created only when an unfixable anomaly is detected i.e. an anomaly having unfixable goals. - -```yaml -kind: ConfigMap -apiVersion: v1 -metadata: - name: my-cluster-goal-violations -data: - fixableAnomalies: | - - : - - - - - - : - - - unfixableAnomalies: | - - : - - - - - - : - - -# ... +If there is some task already on-going then the returned json would be: +```json +{ + "ExecutorState": { + "state": "LEADER_MOVEMENT_TASK_IN_PROGRESS", + "status": { + "finishedLeadershipMovements": 0, + "totalLeadershipMovements": 1, + "maximumBrokerLeadershipMovementConcurrency": 250, + "minimumBrokerLeadershipMovementConcurrency": 250, + "averageBrokerLeadershipMovementConcurrency": 250.0, + "clusterLeadershipMovementConcurrency": 1000 + }, + "triggeredSelfHealingTaskId": "c2071b83-b011-4924-8fa9-8d3cb0b2ebb9", + "triggeredTaskReason": "Self healing for GOAL_VIOLATION: {Unfixable goal violations: {}, Fixable goal violations: {DiskUsageDistributionGoal}, Exclude brokers recently (removed: true demoted: true), Provision: OVER_PROVISIONED ([RackAwareGoal] Remove at least 1 rack with brokers.)}" + }, + "version": 1 +} ``` -The `unfixableAnomalies` list will state the `anomalyId` as well as the unfixable goals associated with them. -The operator will use the `unfixableAnomalies` list to check if there are anomalies with unfixable goals or not. -If the list is not empty then the operator will create a `warning` condition based on the unfixable goal and add it to the `Kafka` CR status. -In case we get an anomaly which has both fixable goals and unfixable goals, we will still `IGNORE` that anomaly. -This is because Cruise Control won't be able to generate a proposal that can fix all the configured goals for rebalance. - -The created ConfigMap will persist when `imbalance` mode is enabled for auto-rebalance and will be deleted if the user decides to remove `imbalance` mode from `spec.kafka.cruiseControl.autoRebalance`. +So if there are no manual or auto-rebalance running then we can move forward to check if there were any detected goal violations or not. +To detect any goal violation we will make use of the `state`endpoint with `anomaly_detector`substate. +The `KafkaAutoRebalanceReconciler` endpoint will send request to the`state`endpoint with `anomaly_detector`substate every reconciliation if no rebalance is already running. +Here is an example JSON returned by state endpoint when called with `anomaly_detector` substate: +```json +{ + "AnomalyDetectorState": { + "selfHealingEnabled": [ + "BROKER_FAILURE", + "DISK_FAILURE", + "GOAL_VIOLATION", + "METRIC_ANOMALY", + "TOPIC_ANOMALY", + "MAINTENANCE_EVENT" + ], + "selfHealingDisabled": [], + "selfHealingEnabledRatio": { + "BROKER_FAILURE": 1.0, + "DISK_FAILURE": 1.0, + "GOAL_VIOLATION": 1.0, + "METRIC_ANOMALY": 1.0, + "TOPIC_ANOMALY": 1.0, + "MAINTENANCE_EVENT": 1.0 + }, + "recentGoalViolations": [ + { + "anomalyId": "c2071b83-b011-4924-8fa9-8d3cb0b2ebb9", + "detectionDate": "2024-12-17T09:26:00Z", + "statusUpdateDate": "2024-12-17T09:26:04Z", + "fixableViolatedGoals": [ + "DiskUsageDistributionGoal" + ], + "unfixableViolatedGoals": [], + "status": "FIX_STARTED" + } + ], + "recentBrokerFailures": [], + "recentMetricAnomalies": [], + "recentDiskFailures": [], + "recentTopicAnomalies": [], + "recentMaintenanceEvents": [], + "metrics": { + "meanTimeBetweenAnomalies": { + "GOAL_VIOLATION": 3.28, + "BROKER_FAILURE": 0.0, + "METRIC_ANOMALY": 0.0, + "DISK_FAILURE": 0.0, + "TOPIC_ANOMALY": 0.0 + }, + "meanTimeToStartFix": 2890.0, + "numSelfHealingStarted": 1, + "numSelfHealingFailedToStart": 0, + "ongoingAnomalyDuration": 0.0 + }, + "ongoingSelfHealingAnomaly": "c2071b83-b011-4924-8fa9-8d3cb0b2ebb9", + "balancednessScore": 88.45 + }, + "version": 1 +} +``` +The "recentGoalViolations" field in the above json is the property that we require to see which goal violation happened and when +It is possible that `recentGoalViolations` list will keep growing with respect to a lot of violations being detected. +We will always be interested in the latest violated goal. +This is because `recentGoalViolations` list contains the fixed as well as not fixed goal violations. +We will assume that the most recent goal violation is the unfixed goal. +We will then convert the received json input into a json object and retrieve the `detectionDate` from the `recentGoalViolations` field. +This `detectionDate` is the timestamp that will help us trigger the auto-rebalance. -#### What happens if same anomaly type is detected while the auto-rebalance/manual rebalance is happening +#### Logic to trigger rebalance -The anomaly detector continues to run, even when a rebalance has been triggered. -Therefore, it is possible that it may detect an anomaly that is currently in the process of being fixed. -If we logged the anomaly in the ConfigMap, we may then trigger another rebalance for an anomaly that was fixed by the ongoing rebalance. -This could result in the operator running multiple rebalances for the anomaly and therefore running a lot of unnecessary rebalances. +1. We use the `lastTransitionTime` field in the `KafkaAutoRebalanceStatus` and the detection timestamp to determine whether a rebalance should be triggered or not. +2. Every time the autoRebalance state machine transitions—e.g., from `Idle` to `RebalanceOnImbalance` or any other state—the `lastTransitionTime is updated. +3. A rebalance on imbalance will be triggered when the anomaly detection timestamp is greater than the current `lastTransitionTime`. +4. If the anomaly detection timestamp is greater than the `lastTransitionTime` of the `KafkaAutoRebalanceReconciler` state machine, it means that the goal violation was detected after any sort of rebalance that happened in the cluster. -To tackle this problem we will ignore all the anomalies that are detected while a rebalance is ongoing. -A check will be placed in the auto-rebalance reconciler class which will make sure that if a rebalance is running or not. -If an anomaly is detected during the rebalance, then that anomaly will be ignored and `fixableAnomalies` list will be made empty. -This way a new rebalance can be avoided for the same anomaly which is detected again. -It is possible that a new anomaly was ignored in the process but the anomaly detector will detect it again in case the rebalance didn't fix it so we don't have to worry about it. +#### What happens if there are no rebalances running and an anomaly is detected (The Happy Path) -The above also holds true for the manual rebalances. -If a user is running a manual rebalance, and some anomaly is detected while it is happening, the operator will still ignore the newly detected anomaly. +1. We check whether the anomaly detection timestamp is greater than the `lastTransitionTime` in the `status.autoRebalance` section of the Kafka CR. +2. If the condition passes then we will trigger a rebalance and once the rebalance is complete we will move the state of the `autoRebalance` machine to `Idle`. -#### Using other notifiers when using `imbalance` mode +#### What happens if the anomaly is detected during a running rebalance -Users cannot configure the notifier if they are utilising the auto-rebalance on imbalanced cluster. -This is because the operator is using our custom notifier for getting alerts about goal violations. -If the users try to override the notifier while the `imbalance` mode is enabled, then the operator will add warnings in the status field of the Kafka CR and ignore the changes made by the user. +As we discussed above, we first check the state of the `autoRebalance` as well the manual rebalance. +If the `autoRebalance` is not in `Idle` state and currently in other states like `RebalanceOnImbalance`, `RebalanceOnScaleUp` or `RebalanceOnScaleDown` then it means a rebalance is already running. +Also, if the request to the `state` endpoint with `executor` substate shows any task in progress then it means a rebalance is already running. +In both scenarios, we will simply ignore the anomaly since that anomaly might be fixed by the ongoing rebalance. +In case it is not fixed, the anomaly detector will detect it again. -```yaml -status: - autoRebalance: - state: Idle - lastTransitionTime: "2025-09-22T16:04:00Z" - modes: - - mode: imbalance - conditions: - - type: Warning - status: "True" - reason: UnsupportedOperationException - message: | - Notifier cannot be overridden since `imbalance` mode is enabled in the `auto-rebalance` configuration -``` +#### What happens if some rebalance fails: -If the users really want to have their own way of dealing with the imbalanced clusters then they can disable auto-rebalance in `imbalance` mode and use their own notifier. +With the new `imbalance` mode, we will be introducing two new states to the FSM called `RebalanceOnImbalance` and `RebalanceOnImbalanceNotComplete` +In case a rebalance fails, the operator will move to `RebalanceOnImbalanceNotComplete` when an auto-rebalance fails. +This `state` is added to let the user know that the rebalance on imbalance failed due to some reason, and we also don't want to retrigger the failed rebalance in next reconciliation since the goal violation detection will run again in the next reconciliation. +If the violation was not fixed earlier, it would be fixed in the next cycle. +Re-triggering the failed rebalance means that we would run an extra rebalance, first the failed one and then the one triggered again in case there was some new violation detected. +We will also delete the auto generated rebalance. #### What happens if an unfixable goal violation happens -Cruise Control has the ability to figure out if a goal violation can be fixed by the generated optimization proposal or not. -The goal optimizer class does this job by doing analysis/dry-run if we can fix the anomaly by the generated proposal or not. -If a goal such as the `DiskDistributionUsage` goal is violated, but we cannot fix it since the all the disks are already completely populated, then it is marked as unfixable. -We can retrieve those unfixable goals by using the `hasUnfixableGoals` utility provided by the `AnomalyDetectorUtils` class present in Cruise Control. -The notifier based on list returned by this utility checks if there are unfixable goals detected or not. If the list is not empty then the notifier will set the action on the anomaly as `IGNORE` and that anomaly will be ignored. -The notifier will also update the ConfigMap with a `unfixableAnomalies` list and put the goal which cannot be fixed by rebalancing there so that the operator can then set a warning condition based on the unfixable anomaly in the status of the `Kafka` CR: +The `recentGoalViolation` property in the json returned by the `state` endpoint with `anomaly_detector` substate also provides the information on fixable goals and unfixables goal under the `fixableViolatedGoals` and `unfixableViolatedGoals` list in the json. +Here is an example json: +```json + "recentGoalViolations": [ + { + "anomalyId": "c2071b83-b011-4924-8fa9-8d3cb0b2ebb9", + "detectionDate": "2024-12-17T09:26:00Z", + "statusUpdateDate": "2024-12-17T09:26:04Z", + "fixableViolatedGoals": [ + "DiskUsageDistributionGoal" + ], + "unfixableViolatedGoals": [], + "status": "FIX_STARTED" + } + ] +``` +We will add a check to make sure that if the anomaly has a non-empty `unfixableViolatedGoals` list then we will not trigger any rebalance in such cases. +We can retrieve the unfixable goals from the `unfixableViolatedGoals` list is empty in the json. +Then the operator can set a warning condition based on the unfixable anomaly in the status of the `Kafka` CR: ```yaml status: @@ -342,9 +401,6 @@ status: The detected has unfixable `DiskDistributionGoal` goal. ``` -Once the warning is issued, the operator will clear the `unfixableAnomalies` list. -In case the user doesn't fix the anomaly, the `unfixableAnomalies` list will be populated again with the unfixable goal violation, and it will keep happening until the user fixes the anomaly manually. - #### Stopping a running rebalance To stop a running rebalance the user can apply the `strimzi.io/rebalance=stop` annotation on the generated `KafkaRebalance` resource. @@ -370,8 +426,8 @@ Currently, the auto-rebalancing mechanism runs through a Finite State Machine (F * **RebalanceOnScaleDown**: a rebalancing related to a scale down operation is running. * **RebalanceOnScaleUp**: a rebalancing related to a scale up operation is running. -With the new `imbalance` mode, we will be introducing a new state to the FSM called `RebalanceOnImbalance`. -This state will be associated with rebalances triggered by imbalanced cluster. +As we discussed above, with the new `imbalance` mode, we will be introducing two new states to the FSM called `RebalanceOnImbalance` and `RebalanceOnImbalanceNotComplete` +These state will be associated with rebalances triggered by imbalanced cluster. With the new `imbalance` mode, the FSM state transitions would look something like this: @@ -380,7 +436,7 @@ With the new `imbalance` mode, the FSM state transitions would look something li * from **Idle** to: * **RebalanceOnScaleDown**: if a scale down operation was requested. This transition happens even if a scale up was requested at the same time but the rebalancing on scaling down has the precedence. The rebalancing on scale up is queued. They will run sequentially. * **RebalanceOnScaleUp**: if only a scale up operation was requested. There was no scale down operation requested. - * **RebalanceOnImbalance**: if a ConfigMap related to goal violation was updated, and the `fixableAnomalies` list is not empty while the `unfixableAnomalies` list is empty. If there are queued scale up or scale down operations, then they will run first. + * **RebalanceOnImbalance**: if a goal violation is detected, and the `unfixableGoal` list is not empty while the ``unfixableViolatedGoals`` list is empty in the json. If there are queued scale up or scale down operations, then they will run first. * from **RebalanceOnScaleDown** to: * **RebalanceOnScaleDown**: if a rebalancing on scale down is still running or another one was requested while the first one ended. @@ -401,9 +457,10 @@ With the new `imbalance` mode, the FSM state transitions would look something li On each reconciliation, the following process will be used: 1. The `KafkaClusterCreator` creates the `KafkaCluster` instance. -2. The `KafkaAutoRebalancingReconciler.reconcile()` will then check if there was any ConfigMap created with name `-goal-violations` and whether the `fixableAnomalies` and `unfixableAnomalies` list is empty or not, then the `full` rebalance (imbalance mode) would be performed if the `unfixableAnomalies` list is empty and the `fixableAnomalies` list is not empty. -3. If a rebalance is already ongoing and more anomalies are detected, then the operator will just ignore the new anomalies and delete all the anomalies from the `fixableAnomalies` list in the ConfigMap. -4. Any anomalies that are not resolved by the ongoing rebalance will be redetected by the anomaly detector once the FSM returns to the `Idle` state. +2. The `KafkaAutoRebalancingReconciler.reconcile()` will then check for ongoing rebalances and the state of the `auto-rebalance`. +3. If the state is `Idle` and no rebalance is running, then we request the state endpoint with anomaly_detector substate to get the detected violations and its respective timestamp. +4. If the detected anomaly timestamp is greater than the `lastTransitionTime` of the auto-rebalance state and the `unfixableViolatedGoals` list is empty then we trigger the auto-rebalance on imbalance. + The `KafkaAutoRebalancingReconciler.reconcile()` also loads the `Kafka.status.autoRebalance` content: @@ -425,8 +482,7 @@ In this state, the operator removes the finalizer and deletes the corresponding #### RebalanceOnImbalance -In this state, an anomaly was detected and a ConfigMap was generated by the notifier with a `fixableAnomalies` list. - +In this state, an anomaly was detected when we sent a request to `state` endpoint with `anomaly_detector` substate. A KafkaRebalance resource will now be applied to the cluster to fix the imbalanced cluster. This KafkaRebalance will be based on the template provided by the user, if no template is provided then the KafkaRebalance will be created with default configurations. ```mermaid @@ -453,7 +509,7 @@ Checking the current `KafkaRebalance` status: * if `PendingProposal`, `ProposalReady` or `Rebalancing`, the rebalancing is still running. * No further actions required. * if `NotReady` - * the rebalancing failed, transition to **Idle** and also removing the corresponding mode from the status. The operator also deletes the generated `KafkaRebalance` custom resource and empties the ConfigMap. + * the rebalancing failed, transition to **RebalanceOnImbalanceNotComplete** and also removing the corresponding mode from the status. The operator also deletes the generated `KafkaRebalance` custom resource. * if `Stopped` * the rebalancing is stopped, transition to **Idle** and also removing the corresponding mode from the status. The operator deletes the generated `KafkaRebalance` custom resource. The users should then disable the `imbalance` mode of auto-rebalance else a new rebalance would be triggered. @@ -509,10 +565,10 @@ But the fix would be run by Cruise Control itself and not the operator Pros: * Loose coupling with the operator -* Faster decison making as Cruise Control runs the fix +* Faster decision-making as Cruise Control runs the fix Cons: -* Operator wouldn't play any role in the process +* Operator wouldn't play any role in the process. ## Future Scope In the future, we plan to introduce auto-rebalance for topic and metrics related imbalances. diff --git a/images/106-auto-rebalance-imbalance.png b/images/106-auto-rebalance-imbalance.png new file mode 100644 index 0000000000000000000000000000000000000000..94dda2c41f62c9b80ec17d49ca5b5576f09e3c96 GIT binary patch literal 193243 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

@EFm5SVbr&2)d{~SyFEnMUDsVFO( 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

CSrAcPePZICLtT|CtR;POU_t?%4(1Z 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 uld4fA79S93zERj1gf> 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 Z?`)^hVsGx(t8@_X=