25.2. 가장 가까운 복제본에서 메시지 사용
Rack 인식은 소비자에서 가장 가까운 복제본에서 데이터를 가져오는 데 사용할 수도 있습니다. 이는 Kafka 클러스터가 여러 데이터센터에 걸쳐 있을 때 네트워크의 부하를 줄이고 퍼블릭 클라우드에서 Kafka를 실행할 때 비용을 줄일 수 있는 데 유용합니다. 그러나 이로 인해 대기 시간이 증가할 수 있습니다.
가장 가까운 복제본에서 사용할 수 있으려면 Kafka 클러스터에서 랙 인식을 구성해야 하며 RackAwareReplicaSelector
를 활성화해야 합니다. 복제본 선택기 플러그인은 클라이언트가 가장 가까운 복제본에서 사용할 수 있는 논리를 제공합니다. 기본 구현에서는 LeaderSelector
를 사용하여 항상 클라이언트의 리더 복제본을 선택합니다. 기본 구현에서 전환할 replica.selector.class
에 대해 RackAwareReplicaSelector
를 지정합니다.
활성화된 복제본 인식 선택기가 있는 랙
구성의 예
apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: name: my-cluster spec: kafka: # ... rack: topologyKey: topology.kubernetes.io/zone config: # ... replica.selector.class: org.apache.kafka.common.replica.RackAwareReplicaSelector # ...
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
name: my-cluster
spec:
kafka:
# ...
rack:
topologyKey: topology.kubernetes.io/zone
config:
# ...
replica.selector.class: org.apache.kafka.common.replica.RackAwareReplicaSelector
# ...
Kafka 브로커 구성 외에도 소비자에 client.rack
옵션도 지정해야 합니다. client.rack
옵션은 소비자가 실행 중인 rack ID 를 지정해야 합니다. RackAwareReplicaSelector
는 일치하는 broker.rack
및 client.rack
ID를 연결하여 가장 가까운 복제본을 찾고 여기에서 사용합니다. 동일한 랙에 여러 개의 복제본이 있는 경우 RackAwareReplicaSelector
는 항상 최신 복제본을 선택합니다. 랙 ID를 지정하지 않거나 동일한 랙 ID가 있는 복제본을 찾을 수 없는 경우 리더 복제본으로 대체됩니다.
그림 25.1. 동일한 가용성 영역의 복제본에서 사용하는 클라이언트 표시 예

커넥터가 가장 가까운 복제본의 메시지를 사용하도록 Kafka Connect, MirrorMaker 2 및 Kafka Bridge를 구성할 수도 있습니다. KafkaConnect
,KafkaMirrorMaker2
및 KafkaBridge
사용자 정의 리소스에서 랙 인식을 활성화합니다. 구성은 선호도 규칙을 설정하지 않지만 선호도
또는 topologySpreadConstraints
를 구성할 수도 있습니다. 자세한 내용은 Pod 예약 구성을 참조하십시오.
Apache Kafka용 Streams를 사용하여 Kafka Connect를 배포할 때 KafkaConnect
사용자 정의 리소스의 rack
섹션을 사용하여 client.rack
옵션을 자동으로 구성할 수 있습니다.
Kafka Connect의 랙
구성 예
apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaConnect # ... spec: # ... rack: topologyKey: topology.kubernetes.io/zone # ...
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaConnect
# ...
spec:
# ...
rack:
topologyKey: topology.kubernetes.io/zone
# ...
Apache Kafka용 Streams를 사용하여 MirrorMaker 2를 배포할 때 KafkaMirrorMaker2
사용자 정의 리소스의 랙
섹션을 사용하여 client.rack
옵션을 자동으로 구성할 수 있습니다.
MirrorMaker 2의 랙
구성 예
apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaMirrorMaker2 # ... spec: # ... rack: topologyKey: topology.kubernetes.io/zone # ...
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaMirrorMaker2
# ...
spec:
# ...
rack:
topologyKey: topology.kubernetes.io/zone
# ...
Apache Kafka용 Streams를 사용하여 Kafka 브리지를 배포할 때 KafkaBridge
사용자 정의 리소스의 rack
섹션을 사용하여 client.rack
옵션을 자동으로 구성할 수 있습니다.
Kafka 브리지의 랙
구성 예
apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaBridge # ... spec: # ... rack: topologyKey: topology.kubernetes.io/zone # ...
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaBridge
# ...
spec:
# ...
rack:
topologyKey: topology.kubernetes.io/zone
# ...