21.3. 최적화 제안 생성


KafkaRebalance 리소스를 생성하거나 업데이트할 때 Cruise Control은 최적화 목표 집합을 기반으로 Kafka 클러스터에 대한 최적화 제안을 생성합니다. 최적화 제안에서 정보를 분석하고 승인 여부를 결정합니다. 최적화 제안의 결과를 사용하여 Kafka 클러스터를 재조정할 수 있습니다.

이 절차에서는 리밸런스와 관련된 최적화 제안을 생성하기 위해 다음 모드를 사용하는 방법을 다룹니다.

  • Full (기본값)
  • add-brokers
  • remove-brokers

사용하는 모드는 Kafka 클러스터에서 이미 실행 중인 모든 브로커 간에 재조정하는지 아니면 Kafka 클러스터를 확장한 후 또는 Kafka 클러스터를 축소하기 전에 재조정해야 하는지에 따라 다릅니다. 자세한 내용은 브로커 스케일링을 사용하여 모드 재조정 을 참조하십시오.

사전 요구 사항

  • Apache Kafka 클러스터의 Streams에 Cruise Control을 배포 했습니다.
  • 최적화 목표를 구성하고 브로커 리소스에 대한 용량 제한을 선택적으로 구성했습니다.

Cruise Control 구성에 대한 자세한 내용은 21.2절. “Kafka를 사용하여 Cruise Control 배포” 을 참조하십시오.

프로세스

  1. KafkaRebalance 리소스를 생성하고 적절한 모드를 지정합니다.

    전체 모드(기본값)

    Kafka 리소스에 정의된 기본 최적화 목표를 사용하려면 spec 속성을 비워 둡니다. cruise Control은 기본적으로 Kafka 클러스터를 전체 모드로 재조정합니다.

    기본적으로 전체 재조정이 있는 구성의 예

    apiVersion: kafka.strimzi.io/v1beta2
    kind: KafkaRebalance
    metadata:
      name: my-rebalance
      labels:
        strimzi.io/cluster: my-cluster
    spec: {}

    spec.mode 속성을 통해 전체 모드를 지정하여 전체 리밸런스를 실행할 수도 있습니다.

    전체 모드를 지정하는 구성 예

    apiVersion: kafka.strimzi.io/v1beta2
    kind: KafkaRebalance
    metadata:
      name: my-rebalance
      labels:
        strimzi.io/cluster: my-cluster
    spec:
      mode: full

    add-brokers 모드

    확장 후 Kafka 클러스터를 재조정하려면 add-brokers 모드를 지정합니다.

    이 모드에서는 기존 복제본이 새로 추가된 브로커로 이동합니다. 브로커를 목록으로 지정해야 합니다.

    add-brokers 모드를 지정하는 구성 예

    apiVersion: kafka.strimzi.io/v1beta2
    kind: KafkaRebalance
    metadata:
      name: my-rebalance
      labels:
        strimzi.io/cluster: my-cluster
    spec:
      mode: add-brokers
      brokers: [3, 4] 
    1

    1
    확장 작업에 의해 추가된 새로 추가된 브로커 목록입니다. 이 속성은 필수입니다.
    remove-brokers 모드

    축소 전에 Kafka 클러스터를 재조정하려면 remove-brokers 모드를 지정합니다.

    이 모드에서 복제본은 제거하려는 브로커에서 이동합니다. 목록으로 제거되는 브로커를 지정해야 합니다.

    remove-brokers 모드를 지정하는 구성 예

    apiVersion: kafka.strimzi.io/v1beta2
    kind: KafkaRebalance
    metadata:
      name: my-rebalance
      labels:
        strimzi.io/cluster: my-cluster
    spec:
      mode: remove-brokers
      brokers: [3, 4] 
    1

    1
    축소 작업에서 제거할 브로커 목록입니다. 이 속성은 필수입니다.
    참고

    다음 단계와 리밸런스를 승인하거나 중지하는 단계는 사용 중인 리밸런스 모드에 관계없이 동일합니다.

  2. 기본 목표를 사용하는 대신 제안별 최적화 목표를 구성하려면 목표 속성을 추가하고 하나 이상의 목표를 입력합니다.

    다음 예에서는 랙 인식 및 복제본 용량이 제안별 최적화 목표로 구성됩니다.

    apiVersion: kafka.strimzi.io/v1beta2
    kind: KafkaRebalance
    metadata:
      name: my-rebalance
      labels:
        strimzi.io/cluster: my-cluster
    spec:
      goals:
        - RackAwareGoal
        - ReplicaCapacityGoal
  3. 구성된 하드 목표를 무시하려면 skipHardGoalCheck: true 속성을 추가합니다.

    apiVersion: kafka.strimzi.io/v1beta2
    kind: KafkaRebalance
    metadata:
      name: my-rebalance
      labels:
        strimzi.io/cluster: my-cluster
    spec:
      goals:
        - RackAwareGoal
        - ReplicaCapacityGoal
      skipHardGoalCheck: true
  4. (선택 사항) 최적화 제안을 자동으로 승인하려면 strimzi.io/rebalance-auto-approval 주석을 true 로 설정합니다.

    apiVersion: kafka.strimzi.io/v1beta2
    kind: KafkaRebalance
    metadata:
      name: my-rebalance
      labels:
        strimzi.io/cluster: my-cluster
      annotations:
        strimzi.io/rebalance-auto-approval: "true"
    spec:
      goals:
        - RackAwareGoal
        - ReplicaCapacityGoal
      skipHardGoalCheck: true
  5. 리소스를 생성하거나 업데이트합니다.

    oc apply -f <kafka_rebalance_configuration_file>

    Cluster Operator는 Cruise Control에서 최적화 제안을 요청합니다. Kafka 클러스터 크기에 따라 몇 분이 걸릴 수 있습니다.

  6. 자동 승인 메커니즘을 사용한 경우 최적화 제안 상태가 Ready 로 변경될 때까지 기다립니다. 자동 승인 메커니즘을 활성화하지 않은 경우 최적화 제안 상태가 ProposalReady 로 변경될 때까지 기다립니다.

    oc get kafkarebalance -o wide -w -n <namespace>
    PendingProposal
    PendingProposal 상태는 리밸런스 Operator가 Cruise Control API를 폴링하여 최적화 제안이 준비되었는지 확인합니다.
    ProposalReady
    ProposalReady 상태는 최적화 제안이 검토 및 승인을 받을 준비가 되었음을 의미합니다.

    상태가 ProposalReady 로 변경되면 최적화 제안을 승인할 준비가 된 것입니다.

  7. 최적화 제안을 검토하십시오.

    최적화 제안은 KafkaRebalance 리소스의 Status.Optimization Result 속성에 포함되어 있습니다.

    oc describe kafkarebalance <kafka_rebalance_resource_name>

    최적화 제안 예

    Status:
      Conditions:
        Last Transition Time:  2020-05-19T13:50:12.533Z
        Status:                ProposalReady
        Type:                  State
      Observed Generation:     1
      Optimization Result:
        Data To Move MB:  0
        Excluded Brokers For Leadership:
        Excluded Brokers For Replica Move:
        Excluded Topics:
        Intra Broker Data To Move MB:         0
        Monitored Partitions Percentage:      100
        Num Intra Broker Replica Movements:   0
        Num Leader Movements:                 0
        Num Replica Movements:                26
        On Demand Balancedness Score After:   81.8666802863978
        On Demand Balancedness Score Before:  78.01176356230222
        Recent Windows:                       1
      Session Id:                             05539377-ca7b-45ef-b359-e13564f1458c

    최적화 결과 섹션의 속성은 보류 중인 클러스터 재조정 작업을 설명합니다. 각 속성에 대한 설명은 최적화 제안의 콘텐츠를 참조하십시오.

CPU 용량 부족

CPU 사용률 측면에서 Kafka 클러스터가 과부하된 경우 KafkaRebalance 상태에 충분하지 않은 CPU 용량 오류가 표시될 수 있습니다. 이 사용률 값이 excludedTopics 구성의 영향을 받지 않음을 주목할 가치가 있습니다. 최적화 제안서가 제외된 주제의 복제본을 다시 할당하지 않지만, 해당 부하는 여전히 사용률 계산에서 고려됩니다.

CPU 사용률 오류 예

com.linkedin.kafka.cruisecontrol.exception.OptimizationFailureException:
[CpuCapacityGoal] Insufficient capacity for cpu (Utilization 615.21, Allowed Capacity 420.00, Threshold: 0.70). Add at least 3 brokers with the same cpu capacity (100.00) as broker-0. Add at least 3 brokers with the same cpu capacity (100.00) as broker-0.

참고

오류에 CPU 용량이 CPU 코어 수가 아닌 백분율로 표시됩니다. 따라서 Kafka 사용자 정의 리소스에 구성된 CPU 수에 직접 매핑되지 않습니다. 브로커당 단일 가상 CPU를 사용하는 것과 같습니다. 이 CPU에는 Kafka.spec.kafka.resources.limits.cpu 에 구성된 CPU의 주기가 있습니다. 이는 CPU 사용률과 용량 간의 비율이 동일하게 유지되므로 리밸런스 동작에는 영향을 미치지 않습니다.

다음에 수행할 작업

21.4절. “최적화 제안 승인”

Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 문서 정보

Legal Notice

Theme

© 2026 Red Hat
맨 위로 이동