6.6. Kafka MirrorMaker 배포
Kafka MirrorMaker는 데이터 센터 내의 두 개 이상의 Kafka 클러스터 간에 데이터를 복제합니다. 이 프로세스를 Kafka 파티션 복제 개념과 혼동하지 않도록 미러링이라고 합니다. MirrorMaker는 소스 클러스터의 메시지를 사용하고 해당 메시지를 대상 클러스터에 다시 게시합니다.
클러스터 간에 데이터 복제는 다음이 필요한 시나리오를 지원합니다.
- 시스템 장애 발생 시 데이터 복구
- 중앙 집중식 분석을 위해 여러 소스 클러스터에서 데이터 통합
- 특정 클러스터에 대한 데이터 액세스 제한
- 대기 시간을 개선하기 위해 특정 위치에서 데이터 제공
6.6.1. OpenShift 클러스터에 Kafka MirrorMaker 배포 링크 복사링크가 클립보드에 복사되었습니다!
다음 절차에서는 Cluster Operator를 사용하여 Kafka MirrorMaker 클러스터를 OpenShift 클러스터에 배포하는 방법을 보여줍니다.
배포에서는 YAML 파일을 사용하여 배포된 MirrorMaker 버전에 따라 KafkaMirrorMaker 또는 KafkaMirrorMaker2 리소스를 생성하는 사양을 제공합니다. MirrorMaker 2는 Kafka Connect를 기반으로 하며 구성 속성을 사용합니다.
Kafka MirrorMaker 1 (문서에서 MirrorMaker 라고도 함)은 Apache Kafka 3.0.0에서 더 이상 사용되지 않으며 Apache Kafka 4.0.0에서 제거됩니다. 결과적으로 Kafka MirrorMaker 1을 배포하는 데 사용되는 KafkaMirrorMaker 사용자 정의 리소스는 Apache Kafka용 Streams에서도 더 이상 사용되지 않습니다. KafkaMirrorMaker 리소스는 Apache Kafka 4.0.0을 채택할 때 Apache Kafka용 Streams에서 제거됩니다. 대신 KafkaMirrorMaker2 사용자 정의 리소스를 IdentityReplicationPolicy 와 함께 사용합니다.
Apache Kafka의 스트림은 구성 파일 예제 를 제공합니다. 이 절차에서는 다음 예제 파일을 사용합니다.
-
examples/mirror-maker/kafka-mirror-maker.yaml -
examples/mirror-maker/kafka-mirror-maker-2.yaml
동일한 대상 Kafka 클러스터를 사용하여 병렬로 실행되도록 MirrorMaker 2 클러스터를 배포하는 경우 각 인스턴스에서 내부 Kafka Connect 항목에 고유한 이름을 사용해야 합니다. 이렇게 하려면 기본값을 대체하도록 각 MirrorMaker 2 인스턴스를 구성합니다.
사전 요구 사항
프로세스
Kafka MirrorMaker를 OpenShift 클러스터에 배포합니다.
MirrorMaker의 경우:
oc apply -f examples/mirror-maker/kafka-mirror-maker.yaml
oc apply -f examples/mirror-maker/kafka-mirror-maker.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow MirrorMaker 2:
oc apply -f examples/mirror-maker/kafka-mirror-maker-2.yaml
oc apply -f examples/mirror-maker/kafka-mirror-maker-2.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 배포 상태를 확인합니다.
oc get pods -n <my_cluster_operator_namespace>
oc get pods -n <my_cluster_operator_namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력에 배포 이름 및 준비 상태 표시
NAME READY STATUS RESTARTS my-mirror-maker-mirror-maker-<pod_id> 1/1 Running 1 my-mm2-cluster-mirrormaker2-<pod_id> 1/1 Running 1
NAME READY STATUS RESTARTS my-mirror-maker-mirror-maker-<pod_id> 1/1 Running 1 my-mm2-cluster-mirrormaker2-<pod_id> 1/1 Running 1Copy to Clipboard Copied! Toggle word wrap Toggle overflow my-mirror-maker는 Kafka MirrorMaker 클러스터의 이름입니다.my-mm2-cluster는 Kafka MirrorMaker 2 클러스터의 이름입니다.Pod ID는 생성된 각 pod를 식별합니다.
기본 배포를 사용하면 단일 MirrorMaker 또는 MirrorMaker 2 Pod를 설치합니다.
READY는 ready/expected 복제본 수를 표시합니다.STATUS가Running으로 표시되면 배포가 성공적으로 수행됩니다.
6.6.2. Kafka MirrorMaker 2 클러스터 리소스 목록 링크 복사링크가 클립보드에 복사되었습니다!
다음 리소스는 OpenShift 클러스터의 Cluster Operator에 의해 생성됩니다.
- <mirrormaker2_cluster_name>-mirrormaker2
다음 MirrorMaker 2 리소스에 지정된 이름입니다.
- MirrorMaker 2 작업자 노드 Pod를 생성하는 StrimziPodSet.
- MirrorMaker 2 Pod에 안정적인 DNS 이름을 제공하는 헤드리스 서비스입니다.
- MirrorMaker 2 Pod에서 사용하는 서비스 계정입니다.
- MirrorMaker 2 작업자 노드에 대해 구성된 Pod 중단 예산입니다.
- MirrorMaker 2 REST API에 대한 액세스를 관리하는 네트워크 정책입니다.
- <mirrormaker2_cluster_name>-mirrormaker2-<pod_id>
- MirrorMaker 2 StrimziPodSet에서 생성된 Pod
- <mirrormaker2_cluster_name>-mirrormaker2-api
- MirrorMaker 2 클러스터를 관리하기 위해 REST 인터페이스를 노출하는 서비스입니다.
- <mirrormaker2_cluster_name>-mirrormaker2-config
- MirrorMaker 2 보조 구성이 포함되어 있으며 MirrorMaker 2 Pod에서 볼륨으로 마운트되는 ConfigMap입니다.
- strimzi-<namespace-name>-<mirrormaker2_cluster_name>-mirrormaker2-init
- MirrorMaker 2 클러스터에서 사용하는 클러스터 역할 바인딩입니다.
6.6.3. Kafka MirrorMaker 클러스터 리소스 목록 링크 복사링크가 클립보드에 복사되었습니다!
다음 리소스는 OpenShift 클러스터의 Cluster Operator에 의해 생성됩니다.
- <mirrormaker_cluster_name>-mirror-maker
다음 MirrorMaker 리소스에 지정된 이름입니다.
- MirrorMaker Pod 생성을 담당하는 배포입니다.
- MirrorMaker 노드에서 사용하는 서비스 계정입니다.
- MirrorMaker 작업자 노드에 대해 구성된 Pod 중단 예산입니다.
- <mirrormaker_cluster_name>-mirror-maker-config
- MirrorMaker의 보조 구성이 포함된 ConfigMap은 MirrorMaker Pod에서 볼륨으로 마운트됩니다.