DB & AWS Knowledge
Kafka 기본 요소들에 대한 추가 이해 - 2 본문
이 페이지에서는 Kafka 를 공부하기 위해 주로 사용되는 용어들에 대해서 이전 게시글에 이어 추가 이해를 위하여 추가한다.
[1] 2025.05.12 - [Kafka, MSK, Kinesis/아키텍처 및 내부 구조] - Kafka 를 공부하기 위해 필요한 기본 용어들
[2] 2025.05.21 - [Kafka, MSK, Kinesis/아키텍처 및 내부 구조] - Kafka 기본 요소들에 대한 추가 이해 - 1
또한, 이 게시글은 도서 O'REILLY 의 '카프카 핵심 가이드' 의 내용들을 심화 이해하기 위하여 작성하는 글이다.
이 페이지는 perplexity 를 통해 필자가 어떤 prompt 를 작성하여 공부하는지를 공유한다. ([] 로 표기)
또한, 검색이외에 추가로 덧붙일 내용은 ※ 로 추가한다.
AI 를 통해 관련된 자료를 검색하다보면 이전 게시글과 중복된 사항도 있으나 이는 복습 및 상기 차원에서 그대로 기재 되도록 한다.
또한, 이 게시글 부터는 Perplexity 의 강점중 하나인 출처 표기또한 동시에 표기한다.
[Kafka 의 Broker, Cluster, Controller, Partition Leader, Follower 개념을 알려줘]
Kafka의 Broker, Cluster, Controller, Partition Leader, Follower 개념을 아래와 같이 정리한다.
Broker
- Broker는 Kafka 서버 한 대를 의미한다.
- Producer(생산자)로부터 메시지를 받아 저장하고, Consumer(소비자)의 요청에 따라 메시지를 제공한다.
- 여러 대의 Broker가 모여 하나의 Kafka 클러스터를 구성한다. 각 Broker는 고유한 ID를 가진다15810.
Cluster
- Cluster는 여러 개의 Broker가 모여 구성된 집합이다.
- 클러스터는 데이터의 분산 저장, 복제, 장애 대응, 확장성 등을 제공한다.
- 클러스터 내에서는 데이터가 여러 Broker에 분산되어 저장되고, 고가용성과 내구성을 보장한다1358.
Controller
- Controller는 클러스터 내 Broker 중 하나가 선출되어 담당하는 특별한 역할이다.
- Controller는 파티션의 리더 할당, 파티션의 리더 교체, 브로커의 상태 감시 등 클러스터의 메타데이터 관리와 조율을 담당한다.
- Controller가 장애가 나면, 다른 Broker가 자동으로 새로운 Controller가 된다26811.
Partition Leader
- Partition Leader는 각 파티션(Partition)의 대표 역할을 하는 리플리카(복제본)이다.
- Producer와 Consumer는 반드시 해당 파티션의 Leader를 통해서만 데이터를 쓰고 읽는다.
- 파티션의 Leader는 클러스터 내 여러 Broker 중 하나에 할당되며, Controller가 이를 결정한다3467911.
Follower
- Follower는 파티션의 리더가 아닌 나머지 복제본을 의미한다.
- Follower는 Leader의 데이터를 실시간으로 복제하며, Leader에 장애가 발생하면 Follower 중 하나가 새로운 Leader로 승격된다.
- Follower가 정상적으로 동기화되어 있으면 ISR(In-Sync Replica) 그룹에 포함되고, 이 그룹의 Follower만이 Leader가 될 자격이 있다47911.
※ Controller 의 존재 개념은 MySQL MHA Manager 구성 개념을 연상하고, Partition Leader 는 Aurora Cluster 의 Writer, Reader 개념을 연상하면 이해하기 쉽다.
요약 표
용어 | 설명 |
Broker | Kafka 서버 한 대, 메시지 저장과 제공 담당 |
Cluster | 여러 Broker의 집합, 데이터 분산과 고가용성 제공 |
Controller | 클러스터 내 Broker 중 하나, 파티션 리더 할당 및 클러스터 조율 담당 |
Partition Leader | 파티션의 대표 리플리카, 읽기/쓰기의 중심 |
Follower | 리더가 아닌 파티션 복제본, 리더 장애 시 승격 가능, 데이터 동기화 담당 |
이 개념들은 Kafka의 안정성, 확장성, 장애 대응 능력을 뒷받침하는 핵심 구조다.
Citations:
- https://kylo8.tistory.com/entry/Kafka-Kafka-%EA%B0%9C%EB%85%90-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-Producer-Consumer-Broker
- https://westlife0615.tistory.com/600
- https://westlife0615.tistory.com/526
- https://colevelup.tistory.com/19
- https://todayproject.tistory.com/entry/13
- https://any-ting.tistory.com/165
- https://notypie.dev/kafka-%ED%8C%8C%ED%97%A4%EC%B9%98%EA%B8%B0-1-%EA%B0%9C%EB%85%90%ED%8E%B8/
- https://charming-kyu.tistory.com/69
- https://velog.io/@sunwupark/Kafka-Kafka-Definition
- https://velog.io/@jollypyun/Kafka-%EA%B0%9C%EC%9A%94
- https://simsim231.tistory.com/290
- https://any-ting.tistory.com/162
- https://hyunseo-fullstackdiary.tistory.com/418
- https://velog.io/@mw310/Kafka-%EC%B9%B4%ED%94%84%EC%B9%B4%EB%9E%80-%EC%A3%BC%EC%9A%94-%EA%B0%9C%EB%85%90-%EC%A0%95%EB%A6%AC
- https://velog.io/@jwpark06/Kafka-%EC%8B%9C%EC%8A%A4%ED%85%9C-%EA%B5%AC%EC%A1%B0-%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B0
- https://www.geuni.tech/kafka/kafka_introduce_install_cluster
- https://unit-15.tistory.com/136
- https://willseungh0.tistory.com/173
- https://curiousjinan.tistory.com/entry/kafka-cluster-broker-understand
- https://suminn0.tistory.com/130
- https://sjh9708.tistory.com/151
- https://wildeveloperetrain.tistory.com/225
- https://clairdelunes.tistory.com/129
- https://blog.naver.com/pjt3591oo/222984745300
- https://zeroco.tistory.com/105
- https://velog.io/@ddongh1122/Kafka-%EC%9D%B4%ED%95%B4-%EC%B9%B4%ED%94%84%EC%B9%B4-%EA%B8%B0%EB%B3%B8-%EA%B0%9C%EB%85%90-3
- https://motti.tistory.com/entry/%EC%B9%B4%ED%94%84%EC%B9%B4Kakfa%EB%9E%80-%EA%B0%9C%EB%85%9012
- https://data-engineer-tech.tistory.com/18
- https://curiousjinan.tistory.com/entry/understand-kafka-partitions
- https://studyandwrite.tistory.com/575
- https://xonmin.tistory.com/80
- https://sjparkk-dev1og.tistory.com/207
- https://junuuu.tistory.com/811
- https://devfunny.tistory.com/823
[위의 내용과 관련된 message 보존기간 설정에 대해서 알려줘]
Kafka에서 메시지 보존기간(메시지 보관 주기)은 Broker나 Topic 단위로 설정할 수 있으며, 메시지가 저장된 후 얼마 동안 Kafka에 남아있을지 결정하는 중요한 설정이다.
이 보존기간이 지나면 메시지는 자동으로 삭제되어 디스크 공간이 확보된다2378.
메시지 보존기간 설정 방법
1. 시간 단위 설정
- 메시지를 특정 시간 동안만 보관하고 싶을 때 사용한다.
- Broker 전체에 적용하려면 server.properties 파일에서 아래와 같이 설정한다.
log.retention.hours=168 # 168시간 = 7일(기본값)
log.retention.minutes=60 # 60분
log.retention.ms=3600000 # 1시간(밀리초 단위)
- Topic별로 별도 설정도 가능하다.
kafka-topics.sh --bootstrap-server localhost:9092 --create --topic my_topic \
--partitions 1 --replication-factor 1 \
--config retention.ms=3600000
2. 용량 단위 설정
- 토픽의 전체 메시지 크기가 특정 용량을 초과하면 오래된 메시지부터 삭제한다.
- Broker 전체에 적용할 때:
log.retention.bytes=1073741824 # 1GB
- Topic별로 적용할 때:
kafka-topics.sh --bootstrap-server localhost:9092 --create --topic my_topic \
--config retention.bytes=10485760 # 10MB
3. 동작 방식
- 시간 기준과 용량 기준 중 하나라도 초과하면 메시지가 삭제된다(OR 조건)478.
- 메시지 삭제는 segment(세그먼트) 단위로 이루어지며, 주기적으로 retention 정책에 따라 정리된다.
- retention 기간을 -1로 설정하면 메시지가 영구 보관된다.
참고 사항
- Kafka의 기본 메시지 보존기간은 7일이다37.
- retention 정책은 Broker 단위와 Topic 단위 모두에서 설정 및 변경이 가능하다.
- 보존기간이 지난 메시지는 자동으로 삭제되므로, Consumer가 메시지를 늦게 읽을 경우 데이터 유실에 주의해야 한다.
Kafka의 Broker, Cluster, Partition 등 구조와 무관하게, 메시지 보존기간은 위와 같이 설정하여 관리할 수 있다.
운영 환경에 맞게 적절한 보존기간과 용량을 설정하는 것이 중요하다.
Citations:
- https://deep-dive-dev.tistory.com/63
- https://recordsoflife.tistory.com/270
- https://www.baeldung.com/linux/kafka-view-topic-retention
- https://blog.metafor.kr/253
- https://devfoxstar.github.io/mq/kafka-retention-ms/
- https://syk531.tistory.com/137
- https://log-laboratory.tistory.com/232
- https://developnote-blog.tistory.com/197
- https://dydwnsekd.tistory.com/66
- https://learn.conduktor.io/kafka/kafka-topic-configuration-log-retention/
[Kafka 다중 클러스터 개념 및 이게 필요한 이유, 그리고 이거와 연관된 mirror maker 에 대해서 알려줘]
Kafka 다중 클러스터 개념 및 필요성
다중 클러스터는 여러 Kafka 클러스터를 논리적/물리적으로 연결해 데이터를 복제하거나 분산 처리하는 아키텍처를 의미한다. 이는 다음과 같은 이유로 필요하다:
필요성
- 재해 복구(Disaster Recovery)
- 데이터 주권 및 규정 준수
- 워크로드 격리
- 하이브리드/멀티 클라우드 전략
- 확장성
MirrorMaker 2.0: 다중 클러스터 데이터 복제 도구
**MirrorMaker 2.0(MM2)**은 Kafka 클러스터 간 데이터 복제를 위한 공식 도구로, Kafka Connect 프레임워크 기반으로 동작한다269.
핵심 구성 요소
MirrorSourceConnector | 소스 클러스터에서 토픽, ACL, 구성을 복제하고 오프셋 동기화 정보 생성36. |
MirrorSinkConnector | 타겟 클러스터로 데이터 전송36. |
MirrorCheckpointConnector | 소비자 그룹 오프셋을 동기화해 장애 조치 지원38. |
MirrorHeartbeatConnector | 클러스터 간 연결 상태 모니터링36. |
동작 방식
- 토픽 복제
- 오프셋 동기화
- ACL 및 구성 동기화
MirrorMaker 2.0 설정 예시
# mm2.properties
clusters = source, target
source.bootstrap.servers = kafka-source:9092
target.bootstrap.servers = kafka-target:9092
# 복제 규칙
source->target.enabled = true
source->target.topics = orders-.*
groups = .*
# 고급 설정
sync.topic.configs.enabled = true
sync.topic.acls.enabled = true
replication.factor = 3
확장된 클러스터 vs 연결된 클러스터
복제 방식 | 동기식 | 비동기식 |
일관성 | 강력한 일관성 | 최종 일관성 |
사용 사례 | 단일 리전 내 고가용성 | 멀티 리전/하이브리드 클라우드 |
관리 복잡도 | 높음 (쿼럼 유지 필요) | 낮음 (독립 운영 가능) |
확장된 클러스터: 물리적 클러스터를 논리적으로 통합해 애플리케이션에 단일 클러스터처럼 노출1.
연결된 클러스터: MM2를 사용해 독립적 클러스터 간 데이터 복제36.
활용 사례
- 재해 복구: 주 클러스터 장애 시 미러링된 클러스터로 전환36.
- 데이터 마이그레이션: 기존 클러스터에서 신규 클러스터로 데이터 이동59.
- 글로벌 서비스: 지역별 클러스터에 데이터 복제해 지연 시간 최소화13.
Kafka 다중 클러스터 전략은 MM2를 통해 유연한 데이터 관리와 안정성을 제공하며, 클라우드 네이티브 환경에서 필수적인 아키텍처로 자리잡고 있다369.
Citations:
- https://hackernoon.com/lang/ko/Kafka%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC-%EB%8B%A4%EC%A4%91-%ED%81%B4%EB%9F%AC%EC%8A%A4%ED%84%B0-%EB%B0%B0%ED%8F%AC-%EB%B0%8F-%EB%B3%B5%EC%A0%9C-%EB%A7%88%EC%8A%A4%ED%84%B0%ED%95%98%EA%B8%B0
- https://docs.redhat.com/ko/documentation/red_hat_streams_for_apache_kafka/2.0/html/using_amq_streams_on_rhel/proc-mirrormaker-replication-str
- https://learn.microsoft.com/ko-kr/azure/hdinsight/kafka/kafka-mirrormaker-2-0-guide
- https://velog.io/@smpaaark-tech/Apache-Kafka%EC%9D%98-MirrorMaker-%EB%8C%80%EA%B7%9C%EB%AA%A8-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B3%B5%EC%A0%9C%EB%A5%BC-%EC%9C%84%ED%95%9C-%EA%B0%95%EB%A0%A5%ED%95%9C-%EB%8F%84%EA%B5%AC
- https://idea9329.tistory.com/571
- https://docs.redhat.com/ko/documentation/red_hat_streams_for_apache_kafka/2.3/html/configuring_amq_streams_on_openshift/assembly-mirrormaker-str
- https://moongzeee.tistory.com/3
- https://toss.tech/article/kafka-distribution-3
- https://learn.microsoft.com/ko-kr/azure/event-hubs/event-hubs-kafka-mirrormaker-2-tutorial
- https://velog.io/@ggm0805/Kafka-Multi-Node
- https://dkswnkk.tistory.com/758
- https://sjh9708.tistory.com/151
- https://clairdelunes.tistory.com/129
- https://ghouse2020.tistory.com/91
- https://toss.tech/article/kafka-distribution-1
- https://blog.naver.com/data_flow/222660303510
- https://curiousjinan.tistory.com/entry/kafka-cluster-broker-understand
- https://madep.tistory.com/14
- https://knight76.tistory.com/entry/%EC%B9%B4%ED%94%84%EC%B9%B4%EC%9D%98-MirroMaker-%EA%B0%84%EB%8B%A8-%EC%86%8C%EA%B0%9C
- https://learn.microsoft.com/ko-kr/azure/event-hubs/event-hubs-kafka-mirror-maker-tutorial
'Kafka, MSK, Kinesis > 아키텍처 및 내부 구조' 카테고리의 다른 글
Zookeeper 개요 (0) | 2025.05.24 |
---|---|
Kafka 기본 요소들에 대한 추가 이해 - 1 (0) | 2025.05.21 |
Kafka 데이터 예시 (0) | 2025.05.15 |
Kafka 를 공부하기 위해 필요한 기본 용어들 (0) | 2025.05.12 |
Kafka 개요 (0) | 2025.04.29 |