19.2. 최적화 목표 개요


최적화 목표는 Kafka 클러스터의 워크로드 재배포 및 리소스 사용률에 대한 제약입니다. Kafka 클러스터를 재조정하기 위해 Cruise Control은 최적화 목표를 사용하여 승인 또는 거부할 수 있는 최적화 제안을 생성합니다.

19.2.1. 우선 순위의 목표 순서

AMQ Streams는 Cruise Control 프로젝트에서 개발된 대부분의 최적화 목표를 지원합니다. 지원되는 목표는 기본 우선순위 내림차순으로 다음과 같습니다.

  1. Rack-awareness
  2. 주제 집합의 브로커당 최소 리더 복제본 수
  3. 복제본 용량
  4. 용량 목표

    • 디스크 용량
    • 네트워크 인바운드 용량
    • 네트워크 아웃 바운드 용량
    • CPU 용량
  5. 복제본 배포
  6. 잠재적인 네트워크 출력
  7. 리소스 배포 목표

    • 디스크 사용률 배포
    • 네트워크 인바운드 사용률 배포
    • 네트워크 아웃 바운드 사용률 배포
    • CPU 사용률 배포
  8. Leader bytes-in rate distribution
  9. 주제 복제본 배포
  10. 리더 복제본 배포
  11. 선호하는 리더 선택
  12. Intra-broker 디스크 용량
  13. Intra-broker 디스크 사용 배포

각 최적화 목표에 대한 자세한 내용은 Cruise Control Wiki의 목표를 참조하십시오.

참고

"자신의 쓰기" 목표와 Kafka 할당자 목표는 아직 지원되지 않습니다.

19.2.2. AMQ Streams 사용자 정의 리소스의 목표 구성

KafkaKafkaRebalance 사용자 정의 리소스에서 최적화 목표를 구성합니다. 크루즈 컨트롤에는 주요, 기본값 및 사용자 제공 최적화 목표를 충족해야 하는 하드 최적화 목표에 대한 구성이 있습니다.

다음 구성에서 최적화 목표를 지정할 수 있습니다.

  • 주요 목적 Cryostat- Kafka.spec.cruiseControl.config.goals
  • 하드 목적 Cryostat- Kafka.spec.cruiseControl.config.hard.goals
  • 기본 목적 Cryostat- Kafka.spec.cruiseControl.config.default.goals
  • 사용자 제공 목표 Cryo stat- KafkaRebalance.spec.goals
참고

리소스 배포 목표는 브로커 리소스에 대한 용량 제한 의 적용을 받습니다.

19.2.3. 하드 및 소프트 최적화 목표

하드 목표는 최적화 제안에 충족해야 하는 목표입니다. Cruise Control 코드에서 하드 목표로 정의되지 않은 목표는 소프트 목표 라고 합니다. 소프트 목표는 최선의 노력 목표로 생각할 수 있습니다: 최적화 제안에 만족 할 필요는 없지만 최적화 계산에 포함됩니다. 하나 이상의 소프트 목표를 위반하지만 모든 하드 목표를 충족하는 최적화 제안은 유효합니다.

크루즈 컨트롤은 가능한 한 많은 하드 목표와 가능한 많은 소프트 목표를 충족하는 최적화 제안을 계산합니다. 모든 하드 목표를 충족하지 않는 최적화 제안은 Cruise Control에 의해 거부되고 승인을 위해 사용자에게 전송되지 않습니다.

참고

예를 들어 클러스터에 주제의 복제본을 균등하게 분배하는 소프트 목표를 가질 수 있습니다(복제 복제본 배포 목표 참조). 크루즈 컨트롤은 구성된 모든 하드 목표를 달성할 수 있도록 하는 경우 이 목표를 무시합니다.

Cruise Control에서 다음과 같은 주요 최적화 목표는 어려운 목표입니다.

RackAwareGoal; ReplicaCapacityGoal; DiskCapacityGoal; NetworkInboundCapacityGoal; NetworkOutboundCapacityGoal; CpuCapacityGoal
Copy to Clipboard Toggle word wrap

Cruise Control 배포 구성에서 Kafka.spec.cruiseControl.confighard.goals 속성을 사용하여 적용할 하드 목표를 지정할 수 있습니다.

  • 모든 하드 목표를 강제 실행하려면 hard.goals 속성을 생략하면 됩니다.
  • Cruise Control이 적용하는 하드 목표를 변경하려면 정규화된 도메인 이름을 사용하여 hard.goals 속성에 필요한 목표를 지정합니다.
  • 특정 하드 목표를 실행하지 못하도록 목표는 default.goalshard.goals 목록 구성 둘 다에 포함되지 않아야 합니다.
참고

소프트 또는 하드 목표로 간주되는 목표를 구성할 수 없습니다. 이러한 차이점은 크루즈 제어 코드에 의해 결정됩니다.

하드 최적화 목표에 대한 Kafka 구성의 예

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
  name: my-cluster
spec:
  kafka:
    # ...
  zookeeper:
    # ...
  entityOperator:
    topicOperator: {}
    userOperator: {}
  cruiseControl:
    brokerCapacity:
      inboundNetwork: 10000KB/s
      outboundNetwork: 10000KB/s
    config:
      # Note that `default.goals` (superset) must also include all `hard.goals` (subset)
      default.goals: >
        com.linkedin.kafka.cruisecontrol.analyzer.goals.NetworkInboundCapacityGoal,
        com.linkedin.kafka.cruisecontrol.analyzer.goals.NetworkOutboundCapacityGoal
      hard.goals: >
        com.linkedin.kafka.cruisecontrol.analyzer.goals.NetworkInboundCapacityGoal,
        com.linkedin.kafka.cruisecontrol.analyzer.goals.NetworkOutboundCapacityGoal
      # ...
Copy to Clipboard Toggle word wrap

구성된 하드 목표 수를 늘리면 Cruise Control이 유효한 최적화 제안을 생성할 가능성을 줄일 수 있습니다.

skipHardGoalCheck: trueKafkaRebalance 사용자 정의 리소스에 지정된 경우 Cruise Control은 사용자 제공 최적화 목표 목록( KafkaRebalance.spec.goals)에 구성된 모든 하드 목표(hard.goals)가 포함되어 있는지 확인하지 않습니다. 따라서 사용자 제공 최적화 목표의 일부만 hard.goals 목록에 있는 경우 Cruise Control은 skipHardGoalCheck: true 가 지정된 경우에도 여전히 하드 목표로 처리합니다.

19.2.4. 주요 최적화 목표

주요 최적화 목표는 모든 사용자가 사용할 수 있습니다. 주요 최적화 목표에 나열되지 않은 목표는 Cruise Control 작업에서 사용할 수 없습니다.

Cruise Control 배포 구성 을 변경하지 않는 한 AMQ Streams는 Cruise Control의 다음과 같은 주요 최적화 목표를 내림차순으로 상속합니다.

RackAwareGoal; MinTopicLeadersPerBrokerGoal; ReplicaCapacityGoal; DiskCapacityGoal; NetworkInboundCapacityGoal; NetworkOutboundCapacityGoal; CpuCapacityGoal; ReplicaDistributionGoal; PotentialNwOutGoal; DiskUsageDistributionGoal; NetworkInboundUsageDistributionGoal; NetworkOutboundUsageDistributionGoal; CpuUsageDistributionGoal; TopicReplicaDistributionGoal; LeaderReplicaDistributionGoal; LeaderBytesInDistributionGoal; PreferredLeaderElectionGoal
Copy to Clipboard Toggle word wrap

이러한 목표 중 일부는 하드 목표로 사전 설정되어 있습니다.

복잡성을 줄이려면 KafkaRebalance 리소스에서 하나 이상의 목표를 완전히 제외할 필요가 없는 상속된 기본 최적화 목표를 사용하는 것이 좋습니다. 기본 최적화 목표의 우선 순위 순서는 필요한 경우 기본 최적화 목표에 대한 구성에서 수정할 수 있습니다.

필요한 경우 Cruise Control 배포 구성에서 기본 최적화 목표를 구성합니다. Kafka.spec.cruiseControl.config.goals

  • 상속된 주요 최적화 목표를 수락하려면 Kafka.spec.cruiseControl.config 에서 goals 속성을 지정하지 마십시오.
  • 상속된 기본 최적화 목표를 수정해야 하는 경우 목표 목록을 대상 구성 옵션에 내림차순으로 지정합니다.
참고

최적화 제안을 생성할 때 오류를 방지하려면 Kafka.spec.cruiseControl.config목표 또는 default.goals 에 대한 변경 사항이 hard.goals 속성에 지정된 모든 하드 목표를 포함해야 합니다. 명확히 하려면 주요 최적화 목표 및 기본 목표에 대해 (하위 세트로) 하드 목표를 지정해야 합니다.

19.2.5. 기본 최적화 목표

cruise Control은 기본 최적화 목표를 사용하여 캐시된 최적화 제안을 생성합니다. 캐시된 최적화 제안에 대한 자세한 내용은 19.3절. “최적화 제안 개요” 을 참조하십시오.

KafkaRebalance 사용자 정의 리소스에서 사용자 제공 최적화 목표를 설정하여 기본 최적화 목표를 덮어쓸 수 있습니다.

Cruise Control 배포 구성에 default.goals 를 지정하지 않는 한 주요 최적화 목표는 기본 최적화 목표로 사용됩니다. 이 경우 캐시된 최적화 제안은 주요 최적화 목표를 사용하여 생성됩니다.

  • 기본 최적화 목표를 기본 목표로 사용하려면 Kafka.spec.cruiseControl.configdefault.goals 속성을 지정하지 마십시오.
  • 기본 최적화 목표를 수정하려면 Kafka.spec.cruiseControl.config 에서 default.goals 속성을 편집합니다. 주요 최적화 목표의 하위 집합을 사용해야 합니다.

기본 최적화 목표에 대한 Kafka 구성의 예

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
  name: my-cluster
spec:
  kafka:
    # ...
  zookeeper:
    # ...
  entityOperator:
    topicOperator: {}
    userOperator: {}
  cruiseControl:
    brokerCapacity:
      inboundNetwork: 10000KB/s
      outboundNetwork: 10000KB/s
    config:
      # Note that `default.goals` (superset) must also include all `hard.goals` (subset)
      default.goals: >
        com.linkedin.kafka.cruisecontrol.analyzer.goals.RackAwareGoal,
        com.linkedin.kafka.cruisecontrol.analyzer.goals.ReplicaCapacityGoal,
        com.linkedin.kafka.cruisecontrol.analyzer.goals.DiskCapacityGoal
      hard.goals: >
        com.linkedin.kafka.cruisecontrol.analyzer.goals.RackAwareGoal
      # ...
Copy to Clipboard Toggle word wrap

기본 최적화 목표를 지정하지 않으면 기본 최적화 목표를 사용하여 캐시된 제안서가 생성됩니다.

19.2.6. 사용자 제공 최적화 목표

사용자 제공 최적화 목표는 특정 최적화 제안에 대해 구성된 기본 목표를 좁힙니다. KafkaRebalance 사용자 정의 리소스의 spec.goals 에서 필요에 따라 이를 설정할 수 있습니다.

KafkaRebalance.spec.goals
Copy to Clipboard Toggle word wrap

사용자 제공 최적화 목표는 다양한 시나리오에 대한 최적화 제안을 생성할 수 있습니다. 예를 들어 디스크 용량 또는 디스크 사용률을 고려하지 않고 Kafka 클러스터에서 리더 복제본 배포를 최적화할 수 있습니다. 따라서 리더 복제본 배포를 위한 단일 사용자 제공 목표를 포함하는 KafkaRebalance 사용자 정의 리소스를 생성합니다.

사용자 제공 최적화 목표는 다음과 같아야 합니다.

  • 구성된 모든 하드 목표를 포함하거나 오류가 발생합니다.
  • 주요 최적화 목표의 하위 집합이 될 수 있습니다.

최적화 제안을 생성할 때 구성된 하드 목표를 무시하려면 skipHardGoalCheck: true 속성을 KafkaRebalance 사용자 지정 리소스에 추가합니다. 19.6절. “최적화 제안 생성”을 참조하십시오.

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

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

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

Red Hat 소개

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

Theme

© 2025 Red Hat