적격 리더 복제본
적격 리더 복제본 (Eligible Leader Replicas)
이 페이지는 Apache Kafka 4.0부터 도입된 적격 리더 복제본(ELR) 기능을 설명해요. 하드코어한 복제 내부 동작이지만, 리더 선출이 어떻게 개선되는지 이해하면 'ISR 밖의 복제본도 리더가 될 수 있다'는 개념이 잡혀요.
출처: 문서
본문
개요 (Overview)
Apache Kafka 4.0부터 사용자는 적격 리더 복제본(Eligible Leader Replicas, KIP-966 Part 1) 기능으로 Kafka 복제를 개선할 수 있습니다(ELR은 4.1부터 새 클러스터에서 기본 활성화). "엄격한 최소 ISR" 규칙이 일반적으로 적용되어 왔습니다. 즉, ISR의 크기가 min ISR(min.insync.replicas)보다 작으면 데이터 파티션의 하이 워터마크가 진행될 수 없으므로, ISR에 없는 일부 복제본이 리더가 되어도 안전하게 만들 수 있게 됩니다. KRaft 컨트롤러는 이러한 복제본을 PartitionRecord의 Eligible Leader Replicas라는 필드에 저장합니다. 리더 선출 중 컨트롤러는 다음 순서로 리더를 선택합니다.
- ISR이 비어 있지 않으면 그중 하나를 선택.
- ELR이 비어 있지 않으면 펜싱(fenced)되지 않은 하나를 선택.
- 펜싱되지 않은 마지막으로 알려진 리더를 선택. 이는 4.0 이전에 모든 복제본이 오프라인일 때의 동작과 유사.
업그레이드와 다운그레이드 (Upgrade & Downgrade)
ELR은 4.0에서 기본 활성화되지 않습니다. 서버에서 새 프로토콜을 활성화하려면 eligible.leader.replicas.version=1로 설정하세요. 업그레이드 후 KRaft 컨트롤러가 ELR 추적을 시작합니다.
eligible.leader.replicas.version=0으로 설정하면 다운그레이드도 안전하게 수행할 수 있습니다.
도구 (Tool)
ELR 필드는 API DescribeTopicPartitions를 통해 확인할 수 있습니다. admin 클라이언트는 토픽을 describe해 ELR 정보를 가져올 수 있습니다.
ELR 기능이 활성화되면 다음에 유의하세요.
- 클러스터 수준의
min.insync.replicas설정이 없으면 추가됩니다. 값은 활성 컨트롤러의 정적 구성과 같습니다. - 클러스터 수준에서
min.insync.replicas구성의 제거는 허용되지 않습니다. - 클러스터 수준의
min.insync.replicas가 값이 같더라도 업데이트되면 모든 ELR 상태가 정리(clean)됩니다. - 이전에 브로커 수준 구성에서 설정된
min.insync.replicas값은 제거됩니다. 필요하면 클러스터 수준에서 설정하세요. - 브로커 수준에서
min.insync.replicas구성 변경은 허용되지 않습니다. - 토픽에 대해
min.insync.replicas가 업데이트되면 ELR 상태가 정리됩니다.
더 알아보기 (Learn more)
- ELR 덕분에 ISR 밖의 안전한 복제본도 리더가 될 수 있어서 가용성이 높아져요.
min.insync.replicas관리가 클러스터 수준으로 이동한다는 점을 운영 설계에 반영하세요.- KRaft 컨트롤러와 리더 선출은 KRaft 문서에서 더 자세히 다뤄요.