25장. Rack 스키마 참조
사용 위치: KafkaBridgeSpec, KafkaClusterSpec, KafkaConnectSpec, KafkaMirrorMaker2Spec
rack 옵션은 랙 인식을 구성합니다. 랙 은 데이터 센터의 가용성 영역, 데이터 센터 또는 실제 랙을 나타낼 수 있습니다. 랙 은 topologyKey 를 통해 구성됩니다. TopologyKey 는 해당 값의 토폴로지 이름이 포함된 OpenShift 노드에서 레이블을 식별합니다. 이러한 레이블의 예로는 OpenShift 노드가 실행되는 가용성 영역의 이름이 포함된 topology. .io/zone)이 있습니다. 실행되는 랙을 인식하도록 Kafka 클러스터를 구성하고, 다른 랙 에 걸쳐 파티션 복제본을 분배하거나 가장 가까운 복제본의 메시지 사용과 같은 추가 기능을 활성화할 수 있습니다.
kubernetes.io/zone (또는 이전 OpenShift 버전의 failure-domain.beta
OpenShift 노드 라벨에 대한 자세한 내용은 Cryostat -Known Labels, Annotations and Taints 를 참조하십시오. 노드가 배포된 영역 또는 랙을 나타내는 노드 레이블과 관련하여 OpenShift 관리자를 참조하십시오.
25.1. 랙에 파티션 복제본 분배 링크 복사링크가 클립보드에 복사되었습니다!
랙 인식이 구성되면 AMQ Streams는 각 Kafka 브로커에 대해 broker.rack 구성을 설정합니다. broker.rack 구성은 각 브로커에 랙 ID를 할당합니다. broker.rack 이 구성되면 Kafka 브로커는 가능한 한 많은 다른 랙에 파티션 복제본을 분배합니다. 복제본이 여러 랙에 분산되면 여러 복제본이 동시에 실패할 확률은 동일한 랙에 있는 경우보다 낮습니다. 분산 복제본은 복원력을 개선하고 가용성 및 안정성에 중요합니다. Kafka에서 랙 인식을 활성화하려면 아래 예제와 같이 Kafka 사용자 정의 리소스의 .spec.kafka 섹션에 rack 옵션을 추가합니다.
Kafka의 랙 구성 예
브로커를 실행 중인 랙 은 Pod를 삭제하거나 다시 시작할 때 경우에 따라 변경될 수 있습니다. 결과적으로 다른 랙에서 실행되는 복제본이 동일한 랙을 공유할 수 있습니다. RackAwareGoal 과 함께 Cruise Control 및 KafkaRebalance 리소스를 사용하여 복제본을 다른 랙에 분산 상태로 유지합니다.
Kafka 사용자 정의 리소스에서 랙 인식이 활성화되면 AMQ Streams는 OpenShift preferredDuringSchedulingIgnoredDuringExecution 선호도 규칙을 자동으로 추가하여 Kafka 브로커를 다른 랙에 배포합니다. 그러나 기본 규칙은 브로커가 분배되는 것을 보장하지 않습니다. 정확한 OpenShift 및 Kafka 구성에 따라 노드를 가능한 한 많은 랙에 걸쳐 올바르게 배포되도록 Zoo Cryostat 및 Kafka 둘 다에 대해 affinity 규칙을 추가하거나 topologySpreadConstraints 를 구성해야 합니다. 자세한 내용은 Pod 예약 구성을 참조하십시오.