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 를 참조하십시오.
사전 요구 사항
프로세스
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: true5 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
- 지원되는 리소스(현재
cpu및memory) 예약 요청 및 사용할 수 있는 최대 리소스를 지정합니다. - 7
- 크루즈 제어 로거 및 로그 수준은
ConfigMap을 통해 직접(인라인) 또는 간접적으로(외부)에 추가됩니다. 사용자 정의 Log4j 구성은ConfigMap의log4j2.properties키 아래에 배치해야 합니다. 로그 수준은INFO,ERROR,WARN,TRACE,DEBUG,FATAL또는OFF로 설정할 수 있습니다. - 8
- 템플릿 사용자 지정. 여기에서 Pod는 추가 보안 특성으로 예약됩니다.
- 9
- 컨테이너를 다시 시작할 시기(라이브)와 컨테이너가 트래픽을 허용할 시기(준비)를 확인할 상태 점검입니다.
- 10
- Prometheus 지표가 활성화되어 있습니다. 이 예에서는 Prometheus Cryostat Exporter(기본 지표 내보내기)에 대한 메트릭이 구성됩니다.
리소스를 생성하거나 업데이트합니다.
oc apply -f <kafka_configuration_file>배포 상태를 확인합니다.
oc get deployments -n <my_cluster_operator_namespace>출력에 배포 이름 및 준비 상태 표시
NAME READY UP-TO-DATE AVAILABLE my-cluster-cruise-control 1/1 1 1my-cluster는 Kafka 클러스터의 이름입니다.READY는 ready/expected 복제본 수를 표시합니다.AVAILABLE출력에1이 표시되면 배포가 성공적으로 수행됩니다.
21.2.1. 자동 생성 Cruise Control 주제 링크 복사링크가 클립보드에 복사되었습니다!
다음 표에서는 Cruise Control을 배포할 때 자동으로 생성되는 세 가지 주제를 보여줍니다. 이러한 주제는 크루즈 제어가 제대로 작동하려면 필수이며 삭제하거나 변경하지 않아야 합니다. 지정된 구성 옵션을 사용하여 주제 이름을 변경할 수 있습니다.
| 자동 생성 주제 구성 | 기본 주제 이름 | 작성자 | 함수 |
|---|---|---|---|
|
|
| Apache Kafka Metrics Reporter 스트림 | 각 Kafka 브로커의 Metrics Reporter의 원시 지표를 저장합니다. |
|
|
| 크루즈 제어 | 각 파티션에 대해 파생된 지표를 저장합니다. 이는 Metric Sample Aggregator 에 의해 생성됩니다. |
|
|
| 크루즈 제어 | 클러스터 워크로드 모델을 생성하는 데 사용되는 메트릭 샘플을 저장합니다. |
Cruise Control에 필요한 레코드 제거를 방지하기 위해 자동 생성된 항목에서 로그 압축이 비활성화됩니다.
Cruise Control이 활성화된 Kafka 클러스터에서 자동 생성 주제의 이름이 변경된 경우 이전 주제는 삭제되지 않으며 수동으로 제거해야 합니다.
다음에 수행할 작업
Cruise Control을 구성하고 배포한 후 최적화 제안을 생성할 수 있습니다.