9.6. 전용 모드에서 MirrorMaker 2 실행
구성을 통해 Kafka 클러스터 간에 데이터를 동기화하려면 MirrorMaker 2를 사용합니다. 다음 절차에서는 전용 단일 노드 MirrorMaker 2 클러스터를 구성하고 실행하는 방법을 보여줍니다. 전용 클러스터는 Kafka Connect 작업자 노드를 사용하여 Kafka 클러스터 간에 데이터를 미러링합니다.
분산 모드에서 MirrorMaker 2를 실행할 수도 있습니다. MirrorMaker 2는 전용 모드 및 분산 모드에서 커넥터로 작동합니다. 전용 MirrorMaker 클러스터를 실행할 때 커넥터는 Kafka Connect 클러스터에 구성됩니다. 결과적으로 Kafka Connect 클러스터에 직접 액세스하고 추가 커넥터를 실행하고 REST API를 사용할 수 있습니다. 자세한 내용은 Apache Kafka 설명서를 참조하십시오.
구성은 다음을 지정해야 합니다.
- 각 Kafka 클러스터
- TLS 인증을 포함하여 각 클러스터에 대한 연결 정보
복제 흐름 및 방향
- 클러스터 간 클러스터
- 주제 주제
- 복제 규칙
- 커밋된 오프셋 추적 간격
다음 절차에서는 속성 파일에서 구성을 만든 다음 MirrorMaker 스크립트 파일을 사용하여 연결을 설정할 때 속성을 전달하여 MirrorMaker 2를 구현하는 방법을 설명합니다.
소스 클러스터에서 복제할 주제 및 소비자 그룹을 지정할 수 있습니다. 소스 및 대상 클러스터의 이름을 지정한 다음 복제할 주제 및 소비자 그룹을 지정합니다.
다음 예에서 클러스터 1에서 2까지의 복제를 위해 주제 및 소비자 그룹이 지정됩니다.
특정 주제 및 소비자 그룹을 복제하는 구성의 예
clusters=cluster-1,cluster-2
cluster-1->cluster-2.topics = topic-1, topic-2
cluster-1->cluster-2.groups = group-1, group-2
이름 목록을 제공하거나 정규식을 사용할 수 있습니다. 이러한 속성을 설정하지 않으면 기본적으로 모든 주제 및 소비자 그룹이 복제됩니다. 정규식으로 .* 를 사용하여 모든 주제 및 소비자 그룹을 복제할 수도 있습니다. 그러나 클러스터에 불필요한 추가 로드를 유발하지 않도록 하는 데 필요한 주제 및 소비자 그룹만 지정합니다.
사전 준비 사항
샘플 구성 속성 파일은 ./config/connect-mirror-maker.properties 로 제공됩니다.
사전 요구 사항
- Apache Kafka의 스트림 은 각 호스트에 설치되고 구성 파일을 사용할 수 있습니다.
프로세스
텍스트 편집기에서 샘플 속성 파일을 열거나 새 파일을 생성하고 각 Kafka 클러스터의 연결 정보 및 복제 흐름을 포함하도록 파일을 편집합니다.
다음 예제에서는 두 클러스터, cluster-1 및 cluster-2 를 양방향으로 연결하는 구성을 보여줍니다. 클러스터 이름은 클러스터 속성을 통해 구성할
수있습니다.MirrorMaker 2 구성의 예
clusters=cluster-1,cluster-21 cluster-1.bootstrap.servers=<cluster_name>-kafka-bootstrap-<project_name_one>:4432 cluster-1.security.protocol=SSL3 cluster-1.ssl.truststore.password=<truststore_name> cluster-1.ssl.truststore.location=<path_to_truststore>/truststore.cluster-1.jks_ cluster-1.ssl.keystore.password=<keystore_name> cluster-1.ssl.keystore.location=<path_to_keystore>/user.cluster-1.p12 cluster-2.bootstrap.servers=<cluster_name>-kafka-bootstrap-<project_name_two>:4434 cluster-2.security.protocol=SSL5 cluster-2.ssl.truststore.password=<truststore_name> cluster-2.ssl.truststore.location=<path_to_truststore>/truststore.cluster-2.jks_ cluster-2.ssl.keystore.password=<keystore_name> cluster-2.ssl.keystore.location=<path_to_keystore>/user.cluster-2.p12 cluster-1->cluster-2.enabled=true6 cluster-2->cluster-1.enabled=true7 cluster-1->cluster-2.topics=.*8 cluster-2->cluster-1.topics=topic-1, topic-29 cluster-1->cluster-2.groups=.*10 cluster-2->cluster-1.groups=group-1, group-211 replication.policy.separator=-12 sync.topic.acls.enabled=false13 refresh.topics.interval.seconds=6014 refresh.groups.interval.seconds=6015 - 1
- 각 Kafka 클러스터는 별칭으로 식별됩니다.
- 2
- 부트스트랩 주소 와 포트 443 을 사용하는 cluster-1 에 대한 연결 정보입니다. 두 클러스터 모두 포트 443 을 사용하여 OpenShift 경로를 사용하여 Kafka에 연결합니다.
- 3
ssl.속성은 cluster-1 에 대한 TLS 구성을 정의합니다.- 4
- cluster-2 에 대한 연결 정보입니다.
- 5
ssl.속성은 cluster-2 에 대한 TLS 구성을 정의합니다.- 6
- cluster-1 에서 cluster-2 로 복제 흐름이 활성화됩니다.
- 7
- cluster-2 에서 cluster-1 로 복제 흐름이 활성화됩니다.
- 8
- cluster-1 에서 cluster-2 로 모든 주제를 복제합니다. 소스 커넥터는 지정된 항목을 복제합니다. 체크포인트 커넥터는 지정된 항목에 대한 오프셋을 추적합니다.
- 9
- cluster-2 에서 cluster-1 로 특정 주제의 복제.
- 10
- cluster-1 에서 cluster-2 로 모든 소비자 그룹을 복제합니다. 체크포인트 커넥터는 지정된 소비자 그룹을 복제합니다.
- 11
- cluster-2 에서 cluster-1 로 특정 소비자 그룹의 복제.
- 12
- 원격 주제의 이름 변경에 사용되는 구분자를 정의합니다.
- 13
- 활성화하면 ACL이 동기화된 항목에 적용됩니다. 기본값은
false입니다. - 14
- 새 주제를 동기화할지 확인하는 기간입니다.
- 15
- 새 소비자 그룹이 동기화되는지 확인하는 기간입니다.
OPTION: 필요한 경우 원격 주제의 자동 이름을 재정의하는 정책을 추가합니다. 소스 클러스터 이름이 있는 이름을 보류하는 대신 주제는 원래 이름을 유지합니다.
이 선택적 설정은 활성/수동 백업 및 데이터 마이그레이션에 사용됩니다.
replication.policy.class=org.apache.kafka.connect.mirror.IdentityReplicationPolicyOPTION: 소비자 그룹 오프셋을 동기화하려면 구성을 추가하여 동기화를 활성화하고 관리합니다.
refresh.groups.interval.seconds=60 sync.group.offsets.enabled=true1 sync.group.offsets.interval.seconds=602 emit.checkpoints.interval.seconds=603 대상 클러스터에서 Kafka를 시작합니다.
/opt/kafka/bin/kafka-server-start.sh -daemon \ /opt/kafka/config/kraft/server.properties속성 파일에 정의된 클러스터 연결 구성 및 복제 정책으로 MirrorMaker를 시작합니다.
/opt/kafka/bin/connect-mirror-maker.sh \ /opt/kafka/config/connect-mirror-maker.propertiesMirrorMaker는 클러스터 간 연결을 설정합니다.
각 대상 클러스터에서 주제가 복제되고 있는지 확인합니다.
/opt/kafka/bin/kafka-topics.sh --bootstrap-server <broker_host>:<port> --list