8.2. 클러스터 구성
MirrorMaker 2.0을 활성/패시브 또는 활성 / 활성 클러스터 구성에서 사용할 수 있습니다.
- 활성/활성 구성에서 두 클러스터 모두 활성 상태이며 동일한 데이터를 동시에 제공하므로 다른 지리적 위치에서 로컬로 동일한 데이터를 사용할 수 있도록 하려는 경우 유용합니다.
- 활성/수동 구성에서 활성 클러스터의 데이터는 시스템 장애 시 데이터 복구와 같이 대기 상태로 유지되는 패시브 클러스터에 복제됩니다.
생산자와 소비자는 활성 클러스터에만 연결할 것으로 예상됩니다.
각 대상 대상에 MirrorMaker 2.0 클러스터가 필요합니다.
8.2.1. 양방향 복제(활성/활성)
MirrorMaker 2.0 아키텍처는 활성/활성 클러스터 구성에서 양방향 복제를 지원합니다.
각 클러스터는 소스 및 원격 주제의 개념을 사용하여 다른 클러스터의 데이터를 복제합니다. 각 클러스터에 동일한 항목이 저장되므로 원격 주제는 MirrorMaker 2.0으로 이름이 자동으로 변경되어 소스 클러스터를 나타냅니다. 원래 클러스터의 이름 앞에 주제 이름 앞에 추가됩니다.
그림 8.2. 주제 이름 변경

원래 클러스터에 플래그를 지정하면 주제가 해당 클러스터로 다시 복제되지 않습니다.
원격 주제를 통한 복제 개념은 데이터 집계가 필요한 아키텍처를 구성할 때 유용합니다. 소비자는 별도의 집계 클러스터 없이도 동일한 클러스터 내의 소스 및 원격 주제를 구독할 수 있습니다.
8.2.2. Unidirectional replication (active/passive)
MirrorMaker 2.0 아키텍처는 활성/수동 클러스터 구성에서 비방향 복제를 지원합니다.
활성/수동 클러스터 구성을 사용하여 백업을 수행하거나 데이터를 다른 클러스터로 마이그레이션할 수 있습니다. 이 경우 원격 주제의 자동 이름 변경을 원하지 않을 수 있습니다.
소스 커넥터 구성에 IdentityReplicationPolicy
를 추가하여 자동 이름 변경을 덮어쓸 수 있습니다. 이 구성을 적용하면 주제는 원래 이름을 유지합니다.
8.2.3. 주제 구성 동기화
주제 구성은 소스 클러스터와 대상 클러스터 간에 자동으로 동기화됩니다. 구성 속성을 동기화하면 재조정 필요성이 줄어듭니다.
8.2.4. 데이터 무결성
MirrorMaker 2.0은 소스 주제를 모니터링하고 구성 변경 사항을 원격 주제로 전파하여 누락된 파티션을 확인 및 생성합니다. MirrorMaker 2.0만 원격 항목에 쓸 수 있습니다.
8.2.5. 오프셋 추적
MirrorMaker 2.0은 내부 주제를 사용하여 소비자 그룹의 오프셋을 추적합니다.
-
offset-syncs
주제는 레코드 메타데이터에서 복제된 주제 파티션의 소스 및 대상 오프셋을 매핑합니다. -
Checkpoints
주제는 각 소비자 그룹의 복제된 주제 파티션에 대해 소스 및 대상 클러스터에 마지막으로 커밋된 오프셋을 매핑합니다.
MirrorCheckpointConnector
는 오프셋 추적을 위한 체크포인트 를 내보냅니다. 체크포인트
항목에 대한 오프셋은 구성을 통해 미리 정해진 간격으로 추적됩니다. 두 항목 모두 장애 조치의 올바른 오프셋 위치에서 복제를 완전히 복원할 수 있습니다.
offset-syncs
주제의 위치는 기본적으로 소스
클러스터입니다. offset-syncs.topic.location
커넥터 구성을 사용하여 이를 대상
클러스터로 변경할 수 있습니다. 주제가 포함된 클러스터에 대한 읽기/쓰기 액세스 권한이 필요합니다. 대상 클러스터를 offset-syncs
주제의 위치로 사용하면 소스 클러스터에 대한 읽기 권한만 있는 경우에도 MirrorMaker 2.0을 사용할 수 있습니다.
8.2.6. 소비자 그룹 오프셋 동기화
__consumer_offsets
주제는 각 소비자 그룹에 대해 커밋된 오프셋에 대한 정보를 저장합니다. 오프셋 동기화는 소스 클러스터의 소비자 그룹에 대한 소비자 오프셋을 대상 클러스터의 소비자 오프셋 주제로 주기적으로 전송합니다.
오프셋 동기화는 특히 활성/수동 구성에서 유용합니다. 활성 클러스터가 다운되면 소비자 애플리케이션은 패시브(standby) 클러스터로 전환하고 마지막으로 전송된 오프셋 위치에서 선택할 수 있습니다.
주제 오프셋 동기화를 사용하려면 체크포인트 커넥터 구성에 sync.group.offsets.enabled
를 추가하고 속성을 true
로 설정하여 동기화를 활성화합니다. 동기화는 기본적으로 비활성화되어 있습니다.
소스 커넥터에서 IdentityReplicationPolicy
를 사용하는 경우 Checkpoint 커넥터 구성에서도 구성해야 합니다. 이렇게 하면 미러링된 소비자 오프셋이 올바른 항목에 적용됩니다.
소비자 오프셋은 대상 클러스터에서 활성 상태가 아닌 소비자 그룹에 대해서만 동기화됩니다. 소비자 그룹이 대상 클러스터에 있는 경우 동기화를 수행할 수 없으며 UNKNOWN_MEMBER_ID
오류가 반환됩니다.
활성화하면 소스 클러스터의 오프셋 동기화가 주기적으로 수행됩니다. checkpoint 커넥터 구성에 sync.group.offsets.interval.seconds
및 emit.checkpoints.interval.seconds
를 추가하여 빈도를 변경할 수 있습니다. 속성은 소비자 그룹 오프셋이 동기화되는 빈도(초)와 오프셋 추적을 위해 내보낸 체크포인트의 빈도를 지정합니다. 두 속성의 기본값은 60초입니다. 기본적으로 10분마다 수행되는 refresh.groups.interval.seconds
속성을 사용하여 새 소비자 그룹의 점검 빈도를 변경할 수도 있습니다.
동기화는 시간 기반이므로 소비자가 수동 클러스터로 전환하면 메시지가 중복될 수 있습니다.
8.2.7. 연결 검사
MirrorHeartbeatConnector
는 클러스터 간 연결을 확인하기 위해 하트비트 를 내보냅니다.
내부 하트비트
주제는 소스 클러스터에서 복제됩니다. 대상 클러스터는 하트비트
주제를 사용하여 다음을 확인합니다.
- 클러스터 간 연결을 관리하는 커넥터가 실행 중입니다.
- 소스 클러스터를 사용할 수 있음