9.2. MirrorMaker 2 커넥터 구성
Kafka 클러스터 간 데이터 동기화를 오케스트레이션하는 내부 커넥터에 대해 MirrorMaker 2 커넥터 구성을 사용합니다.
MirrorMaker 2는 다음 커넥터로 구성됩니다.
MirrorSourceConnector
-
소스 커넥터는 소스 클러스터에서 대상 클러스터로 주제를 복제합니다. 또한 ACL을 복제하고
MirrorCheckpointConnector
를 실행하는 데 필요합니다. MirrorCheckpointConnector
- 체크포인트 커넥터는 주기적으로 오프셋을 추적합니다. 활성화하면 소스 클러스터와 대상 클러스터 간에 소비자 그룹 오프셋도 동기화합니다.
MirrorHeartbeatConnector
- 하트비트 커넥터는 소스 클러스터와 대상 클러스터 간의 연결을 주기적으로 확인합니다.
다음 표에서는 커넥터 속성과 이를 사용하도록 구성된 커넥터에 대해 설명합니다.
속성 | sourceConnector | checkpointConnector | heartbeatConnector |
---|---|---|---|
| ✓ | ✓ | ✓ |
| ✓ | ✓ | ✓ |
| ✓ | ✓ | ✓ |
| ✓ | ✓ | |
| ✓ | ✓ | |
| ✓ | ✓ | |
| ✓ | ||
| ✓ | ||
| ✓ | ||
| ✓ | ||
| ✓ | ||
| ✓ | ||
| ✓ | ||
| ✓ | ||
| ✓ | ||
| ✓ | ||
| ✓ | ||
| ✓ | ||
| ✓ | ||
| ✓ | ||
| ✓ | ||
| ✓ | ||
| ✓ | ||
| ✓ | ||
| ✓ | ||
| ✓ | ||
| ✓ | ||
| ✓ |
9.2.1. 소비자 그룹 오프셋 주제의 위치 변경
MirrorMaker 2는 내부 주제를 사용하여 소비자 그룹의 오프셋을 추적합니다.
offset-syncs
주제-
offset-syncs
주제는 레코드 메타데이터에서 복제된 주제 파티션의 소스 및 대상 오프셋을 매핑합니다. Checkpoints
주제-
Checkpoints
주제는 각 소비자 그룹의 복제된 주제 파티션에 대해 소스 및 대상 클러스터에 마지막으로 커밋된 오프셋을 매핑합니다.
MirrorMaker 2에서 내부적으로 사용하므로 이러한 주제와 직접 상호 작용하지 않습니다.
MirrorCheckpointConnector
는 오프셋 추적을 위한 체크포인트 를 내보냅니다. 체크포인트
항목에 대한 오프셋은 구성을 통해 미리 정해진 간격으로 추적됩니다. 두 항목 모두 장애 조치의 올바른 오프셋 위치에서 복제를 완전히 복원할 수 있습니다.
offset-syncs
주제의 위치는 기본적으로 소스
클러스터입니다. offset-syncs.topic.location
커넥터 구성을 사용하여 이를 대상
클러스터로 변경할 수 있습니다. 주제가 포함된 클러스터에 대한 읽기/쓰기 액세스 권한이 필요합니다. 대상 클러스터를 offset-syncs
주제의 위치로 사용하면 소스 클러스터에 대한 읽기 권한만 있는 경우에도 MirrorMaker 2를 사용할 수 있습니다.
9.2.2. 소비자 그룹 오프셋 동기화
__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
속성을 사용하여 새 소비자 그룹의 점검 빈도를 변경할 수도 있습니다.
동기화는 시간 기반이므로 소비자가 수동 클러스터로 전환하면 메시지가 중복될 수 있습니다.
Java로 작성된 애플리케이션이 있는 경우 RemoteClusterUtils.java
유틸리티를 사용하여 애플리케이션을 통해 오프셋을 동기화할 수 있습니다. 유틸리티는 체크포인트
항목에서 소비자 그룹의 원격 오프셋을 가져옵니다.
9.2.3. 하트비트 커넥터 사용 시기 결정
하트비트 커넥터는 하트비트를 내보내 소스와 대상 Kafka 클러스터 간의 연결을 확인합니다. 내부 하트비트
주제는 소스 클러스터에서 복제되므로 하트비트 커넥터를 소스 클러스터에 연결해야 합니다. 하트비트
주제는 대상 클러스터에 있으며 이를 통해 다음을 수행할 수 있습니다.
- 데이터를 미러링하고 있는 모든 소스 클러스터 식별
- 미러링 프로세스의 활성 및 대기 시간 확인
이로 인해 프로세스가 중단되거나 어떤 이유로든 중지되었는지 확인하는 데 도움이 됩니다. 하트비트 커넥터는 Kafka 클러스터 간의 미러링 프로세스를 모니터링하는 데 중요한 도구가 될 수 있지만 항상 사용할 필요는 없습니다. 예를 들어 배포에 네트워크 대기 시간이 짧고 또는 적은 수의 주제가 있는 경우 로그 메시지 또는 기타 모니터링 툴을 사용하여 미러링 프로세스를 모니터링하는 것이 좋습니다. 하트비트 커넥터를 사용하지 않으려면 MirrorMaker 2 구성에서 생략하면 됩니다.
9.2.4. MirrorMaker 2 커넥터 구성 조정
MirrorMaker 2 커넥터가 제대로 작동하도록 하려면 커넥터 간에 특정 구성 설정을 조정해야 합니다. 특히 다음 속성이 모든 적용 가능한 커넥터에서 동일한 값을 갖도록 합니다.
-
replication.policy.class
-
replication.policy.separator
-
offset-syncs.topic.location
-
topic.filter.class
예를 들어 replication.policy.class
의 값은 source, checkpoint, heartbeat 커넥터에 대해 동일해야 합니다. 설정이 일치하지 않거나 누락되면 데이터 복제 또는 오프셋 동기화에 문제가 발생하므로 동일한 설정으로 구성된 모든 관련 커넥터를 유지해야 합니다.