8.5. Kafka MirrorMaker 배포
Kafka MirrorMaker는 데이터 센터 내의 두 개 이상의 Kafka 클러스터 간에 데이터를 복제합니다. 이 프로세스를 Kafka 파티션 복제 개념과 혼동하지 않도록 미러링이라고 합니다. MirrorMaker는 소스 클러스터의 메시지를 사용하고 해당 메시지를 대상 클러스터에 다시 게시합니다.
클러스터 간에 데이터 복제는 다음이 필요한 시나리오를 지원합니다.
- 시스템 장애 발생 시 데이터 복구
- 중앙 집중식 분석을 위해 여러 소스 클러스터에서 데이터 통합
- 특정 클러스터에 대한 데이터 액세스 제한
- 대기 시간을 개선하기 위해 특정 위치에서 데이터 제공
8.5.1. Kafka MirrorMaker 배포 링크 복사링크가 클립보드에 복사되었습니다!
다음 절차에서는 Cluster Operator를 사용하여 Kafka MirrorMaker 2 클러스터를 OpenShift 클러스터에 배포하는 방법을 보여줍니다.
배포에서는 YAML 파일을 사용하여 KafkaMirrorMaker2 리소스를 생성하는 사양을 제공합니다. MirrorMaker 2는 Kafka Connect를 기반으로 하며 구성 속성을 사용합니다.
Apache Kafka의 스트림은 구성 파일 예제 를 제공합니다. 이 절차에서는 다음 예제 파일을 사용합니다.
-
examples/mirror-maker/kafka-mirror-maker-2.yaml
사전 요구 사항
- Cluster Operator가 배포되었습니다.
Kafka 클러스터가 실행 중입니다.
이 절차에서는 Kafka 클러스터가 Apache Kafka용 Streams를 사용하여 배포되었다고 가정합니다.
프로세스
배포 파일을 편집하여 연결 세부 정보를 구성합니다(필요한 경우).
examples/mirror-maker/kafka-mirror-maker-2.yaml에서 필요에 따라 다음 속성을 추가하거나 업데이트합니다.-
spec.clusters[].bootstrapServers는 소스 및 대상 클러스터의 Kafka 부트스트랩 주소를 지정합니다. -
spec.clusters[].alias: 각 클러스터의 고유 식별자를 지정합니다. -
spec.clusters[].authentication: 각 클러스터의 인증 유형을tls,scram-sha-256,scram-sha-512,plain또는oauth로 지정합니다.
구성 세부 정보는KafkaMirrorMaker2Spec스키마 속성을 참조하십시오. -
각 클러스터에 대한 TLS 인증서를 구성하기 위해
spec.clusters[].tls.trustedCertificates
[](빈 어레이)를 사용하여 기본 Java CA를 신뢰하거나 신뢰할 수 있는 인증서가 포함된 시크릿을 지정합니다.
구성 세부 정보는trustedCertificates속성을 참조하십시오.
-
여러 MirrorMaker 2 클러스터에 대한 배포를 구성합니다(필요한 경우).
동일한 환경에서 MirrorMaker 2 클러스터를 두 개 이상 실행하려면 각 인스턴스에서 고유한 내부 주제 이름과 고유한 그룹 ID를 사용해야 합니다.
kafka-mirror-maker-2.yaml에서spec.clusters[].config속성을 업데이트하여 기본값을 바꿉니다.자세한 내용은 여러 미러 메이커 2 클러스터 구성 을 참조하십시오.
Kafka MirrorMaker를 OpenShift 클러스터에 배포합니다.
oc apply -f examples/mirror-maker/kafka-mirror-maker-2.yaml배포 상태를 확인합니다.
oc get pods -n <my_cluster_operator_namespace>출력에 배포 이름 및 준비 상태 표시
NAME READY STATUS RESTARTS my-mm2-cluster-mirrormaker2-<pod_id> 1/1 Running 1이 예에서
my-mm2-cluster는 Kafka MirrorMaker 2 클러스터의 이름입니다. Pod ID는 생성된 각 Pod를 식별합니다. 기본적으로 배포는 단일 MirrorMaker 2 Pod를 생성합니다.READY는 ready 복제본과 예상된 복제본의 수를 표시합니다.STATUS가실행 중이면 배포가 성공적으로 수행됩니다.