21.2. Kafka를 사용하여 Cruise Control 배포


Kafka 클러스터와 함께 Cruise Control을 배포하도록 Kafka 리소스를 구성합니다. Kafka 리소스의 cruiseControl 속성을 사용하여 배포를 구성할 수 있습니다. Kafka 클러스터당 하나의 Cruise Control 인스턴스를 배포합니다.

Cruise Control config 에서 목표 구성을 사용하여 최적화 제안을 생성하기 위한 최적화 목표를 지정합니다. brokerCapacity 를 사용하여 리소스 배포와 관련된 목표에 대한 기본 용량 제한을 변경할 수 있습니다. 브로커가 이기종 네트워크 리소스가 있는 노드에서 실행 중인 경우 재정의 를 사용하여 각 브로커의 네트워크 용량 제한을 설정할 수 있습니다.

cruiseControl 구성에 빈 오브젝트({})를 사용하는 경우 모든 속성은 기본값을 사용합니다.

Apache Kafka의 스트림은 Cruise Control 구성을 사용하여 Kafka 사용자 정의 리소스를 포함하는 구성 파일 예제 를 제공합니다. Cruise Control의 구성 옵션에 대한 자세한 내용은 Streams for Apache Kafka Custom Resource API Reference 를 참조하십시오.

프로세스

  1. Kafka 리소스의 cruiseControl 속성을 편집합니다.

    구성할 수 있는 속성은 이 예제 구성에 표시됩니다.

    apiVersion: kafka.strimzi.io/v1beta2
    kind: Kafka
    metadata:
      name: my-cluster
      annotations:
        strimzi.io/node-pools: enabled
        strimzi.io/kraft: enabled
    spec:
      # ...
      cruiseControl:
        brokerCapacity: 
    1
    
          inboundNetwork: 10000KB/s
          outboundNetwork: 10000KB/s
          overrides: 
    2
    
          - brokers: [0]
            inboundNetwork: 20000KiB/s
            outboundNetwork: 20000KiB/s
          - brokers: [1, 2]
            inboundNetwork: 30000KiB/s
            outboundNetwork: 30000KiB/s
          # ...
        config: 
    3
    
          # Note that `default.goals` (superset) must also include all `hard.goals` (subset)
          default.goals: > 
    4
    
            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
            # ...
          cpu.balance.threshold: 1.1
          metadata.max.age.ms: 300000
          send.buffer.bytes: 131072
          webserver.http.cors.enabled: true 
    5
    
          webserver.http.cors.origin: "*"
          webserver.http.cors.exposeheaders: "User-Task-ID,Content-Type"
          # ...
        resources: 
    6
    
          requests:
            cpu: 1
            memory: 512Mi
          limits:
            cpu: 2
            memory: 2Gi
        logging: 
    7
    
            type: inline
            loggers:
              rootLogger.level: INFO
        template: 
    8
    
          pod:
            metadata:
              labels:
                label1: value1
            securityContext:
              runAsUser: 1000001
              fsGroup: 0
            terminationGracePeriodSeconds: 120
        readinessProbe: 
    9
    
          initialDelaySeconds: 15
          timeoutSeconds: 5
        livenessProbe:
          initialDelaySeconds: 15
          timeoutSeconds: 5
        metricsConfig: 
    10
    
          type: jmxPrometheusExporter
          valueFrom:
            configMapKeyRef:
              name: cruise-control-metrics
              key: metrics-config.yml
    # ...
    1
    브로커 리소스에 대한 용량 제한입니다.
    2
    덮어쓰기는 이기종 네트워크 리소스가 있는 노드에서 실행할 때 특정 브로커에 대한 네트워크 용량 제한을 설정합니다.
    3
    크루즈 제어 구성. 표준 크루즈 컨트롤 구성은 Apache Kafka용 Streams에서 직접 관리하지 않는 속성으로 제공될 수 있습니다.
    4
    최적화 목표 구성: 기본 최적화 목표(default.goals), 지원되는 최적화 목표(대상) 및 하드목표(hard.goals)를 위한 구성이 포함될 수 있습니다.
    5
    CORS를 활성화하고 Cruise Control API에 대한 읽기 전용 액세스를 위해 구성되었습니다.
    6
    지원되는 리소스(현재 cpumemory ) 예약 요청 및 사용할 수 있는 최대 리소스를 지정합니다.
    7
    크루즈 제어 로거 및 로그 수준은 ConfigMap 을 통해 직접(인라인) 또는 간접적으로(외부)에 추가됩니다. 사용자 정의 Log4j 구성은 ConfigMaplog4j2.properties 키 아래에 배치해야 합니다. 로그 수준은 INFO,ERROR,WARN,TRACE,DEBUG,FATAL 또는 OFF 로 설정할 수 있습니다.
    8
    템플릿 사용자 지정. 여기에서 Pod는 추가 보안 특성으로 예약됩니다.
    9
    컨테이너를 다시 시작할 시기(라이브)와 컨테이너가 트래픽을 허용할 시기(준비)를 확인할 상태 점검입니다.
    10
    Prometheus 지표가 활성화되어 있습니다. 이 예에서는 Prometheus Cryostat Exporter(기본 지표 내보내기)에 대한 메트릭이 구성됩니다.
  2. 리소스를 생성하거나 업데이트합니다.

    oc apply -f <kafka_configuration_file>
  3. 배포 상태를 확인합니다.

    oc get deployments -n <my_cluster_operator_namespace>

    출력에 배포 이름 및 준비 상태 표시

    NAME                      READY  UP-TO-DATE  AVAILABLE
    my-cluster-cruise-control 1/1    1           1

    my-cluster 는 Kafka 클러스터의 이름입니다.

    READY 는 ready/expected 복제본 수를 표시합니다. AVAILABLE 출력에 1 이 표시되면 배포가 성공적으로 수행됩니다.

21.2.1. 자동 생성 Cruise Control 주제

다음 표에서는 Cruise Control을 배포할 때 자동으로 생성되는 세 가지 주제를 보여줍니다. 이러한 주제는 크루즈 제어가 제대로 작동하려면 필수이며 삭제하거나 변경하지 않아야 합니다. 지정된 구성 옵션을 사용하여 주제 이름을 변경할 수 있습니다.

Expand
표 21.4. Cruise Control을 배포할 때 생성되는 주제
자동 생성 주제 구성기본 주제 이름작성자함수

metric.reporter.topic

strimzi.cruisecontrol.metrics

Apache Kafka Metrics Reporter 스트림

각 Kafka 브로커의 Metrics Reporter의 원시 지표를 저장합니다.

partition.metric.sample.store.topic

strimzi.cruisecontrol.partitionmetricsamples

크루즈 제어

각 파티션에 대해 파생된 지표를 저장합니다. 이는 Metric Sample Aggregator 에 의해 생성됩니다.

broker.metric.sample.store.topic

strimzi.cruisecontrol.modeltrainingsamples

크루즈 제어

클러스터 워크로드 모델을 생성하는 데 사용되는 메트릭 샘플을 저장합니다.

Cruise Control에 필요한 레코드 제거를 방지하기 위해 자동 생성된 항목에서 로그 압축이 비활성화됩니다.

참고

Cruise Control이 활성화된 Kafka 클러스터에서 자동 생성 주제의 이름이 변경된 경우 이전 주제는 삭제되지 않으며 수동으로 제거해야 합니다.

다음에 수행할 작업

Cruise Control을 구성하고 배포한 후 최적화 제안을 생성할 수 있습니다.

Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 소개

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

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

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

Red Hat 문서 정보

Legal Notice

Theme

© 2026 Red Hat
맨 위로 이동