ISR (In Sync Replica)

2024. 11. 27. 20:27DATA/Kafka

반응형

ISR (In Sync Replica)는 카프카에서 메시지의 복제 상태를 추적하고, 메시지가 복제되고 있는 상태에서 리더 파티션(Leader Partition)과 팔로워 파티션(Follower Partition) 사이의 동기화를 관리하는 개념이다. ISR은 카프카의 데이터 가용성내구성을 보장하는 중요한 요소로, 리더 파티션에 메시지가 쓰여질 때 팔로워 파티션이 이를 정확하게 복제하는 과정을 추적한다.

ISR의 동작 원리

  1. Leader와 Follower
    • 카프카의 파티션은 리더(Leader)와 하나 이상의 팔로워(Follower)로 구성된다.
    • 리더 파티션은 메시지를 받는 주체로, 클라이언트로부터 데이터를 수신하여 해당 데이터를 처리하고 다른 팔로워 파티션에 복제한다.
    • 팔로워 파티션은 리더의 데이터를 복제하는 역할을 하며, 리더의 상태를 따라가도록 동기화된다.
  2. 메시지 쓰기
    • , 리더 파티션에 메시지 0이 도착하면, 해당 메시지는 리더에 기록된다.
    • 이때, 팔로워들은 리더에서 메시지 0을 복제하여 자신들의 파티션에 기록한다.
  3. ISR(동기화된 복제본)
    • ISR (In Sync Replica)는 리더 파티션에 저장된 메시지가 모든 팔로워 파티션에 동기화된 상태임을 나타낸다.
    • 메시지 0이 리더에 기록되고 팔로워들이 이 메시지를 성공적으로 복제하면, 해당 팔로워들은 ISR 목록에 포함된다. 이때 팔로워는 리더와 "동기화된 상태"로 간주된다.
  4. ISR의 중요성
    • 카프카는 리더와 팔로워 간의 동기화 상태를 관리하여 데이터 손실을 방지한다.
    • ISR에 포함된 복제본이 일정 수 이상이어야만 카프카는 데이터를 안정적으로 보관한다고 판단한다. 이 최소 개수를 Replication Factor라고 하며, 일반적으로 Replication Factor는 2개 이상으로 설정된다.
    • 리더가 장애를 겪을 경우, ISR 목록에 포함된 팔로워 중 하나가 새로운 리더가 된다. 이로 인해 시스템의 고가용성을 보장할 수 있다.
  5. ISR의 동기화
    • 팔로워가 리더의 메시지를 복제하지 못하는 경우(예: 네트워크 문제나 시스템 장애로 인해), 해당 팔로워는 ISR에서 제외된다.
    • 이때, 카프카는 ISR에 포함된 복제본이 1개 이상인 경우에만 메시지를 리더에서 "커밋(commit)" 상태로 인정하며, 시스템의 가용성을 유지한다.

ISR 관련 키 포인트

  • 메시지가 리더에 쓰여지고 복제본이 팔로워에 저장되며 동기화됨
  • ISR 목록동기화된 복제본의 집합을 나타냄
  • 리더 파티션에 대한 메시지 쓰기 후, 팔로워가 메시지를 복제하면 ISR에 포함됨
  • 팔로워가 메시지를 복제하지 못할 경우 ISR에서 제외됨
  • Replication Factor 이상으로 동기화된 복제본이 있어야만 데이터 안정성이 보장됨
  • 리더 파티션에 장애가 발생할 경우 ISR 목록의 팔로워 중 하나가 새로운 리더가 됨

ISR 예시

  • 메시지 0이 리더 파티션에 기록됨
  • 팔로워 1과 팔로워 2가 메시지 0을 복제
  • 리더, 팔로워 1, 팔로워 2가 모두 동기화된 상태에 있어 ISR 목록에 포함

ISR 예시 (상황 설명)

  • Leader: 메시지 0을 수신하고 기록
  • Follower 1: 메시지 0을 리더에서 복제
  • Follower 2: 메시지 0을 리더에서 복제

이 경우, Leader, Follower 1, Follower 2 모두 ISR 목록에 포함되어 있으며, 이 상태에서 카프카는 메시지가 안전하게 복제되었다고 판단한다.

ISR 목록에 포함된 복제본이 최소한의 수 이상일 때 데이터의 내구성과 가용성이 보장된다.

 

 

 

 

ISR(In Sync Replica)는 카프카에서 데이터의 복제 및 내구성을 보장하는 중요한 개념이다. ISR에 포함된 파티션만이 리더의 자격을 가지며, 리더 파티션의 장애 시 ISR에 포함된 파티션 중 하나가 리더로 승격되는 구조로 동작한다. 또한, 리더는 주기적으로 팔로워가 데이터를 잘 동기화하고 있는지 확인하고, 문제가 있는 팔로워는 ISR에서 제외시킨다.

ISR의 동작 원리

  1. 리더와 팔로워의 역할
    • 리더 파티션은 메시지를 받아서 처리하는 주체로, 클라이언트로부터의 모든 쓰기 요청을 처리한다.
    • 팔로워 파티션은 리더의 데이터를 복제하는 역할을 하며, 리더와 동기화된 상태를 유지해야 한다.
  2. 리더의 역할
    • 리더 파티션은 주기적으로 팔로워들이 데이터를 동기화하고 있는지 체크한다.
    • 카프카는 replica.lag.time.max.ms라는 설정을 통해 팔로워의 동기화 상태를 확인한다. 이 값은 팔로워가 데이터를 동기화하는 주기를 의미하며, 주어진 시간 안에 데이터를 동기화하지 않으면 리더는 해당 팔로워가 문제가 있음을 감지한다.
  3. 팔로워 상태 체크
    • 리더는 각 팔로워가 데이터 동기화 상태를 모니터링한다. 팔로워가 일정 시간 이상 데이터를 동기화하지 않으면, 해당 팔로워는 ISR에서 제외된다.
    • 만약 팔로워가 ISR에서 제외되면, 해당 팔로워는 리더로 승격될 수 없으므로, 리더의 역할을 대체할 수 없다.
  4. 리더 장애 및 승격
    • 리더 파티션에 장애가 발생하거나 제대로 기능을 하지 못할 경우, ISR에 포함된 팔로워 중 하나가 리더로 승격된다.
    • ISR에 포함된 팔로워는 리더의 자격을 가질 수 있으며, 이 팔로워가 새로운 리더로 승격되어 메시지 처리와 데이터 쓰기 요청을 맡게 된다.
  5. 팔로워의 동기화 실패 시 처리
    • 만약 팔로워가 일정 시간 동안 동기화를 하지 못하거나 장애가 발생한 경우, 리더는 해당 팔로워를 ISR에서 제외한다.
    • 이 팔로워는 복구가 되지 않으면 리더로 승격될 수 없으며, 복구된 후 다시 ISR에 포함되어야만 새로운 리더로 승격될 자격을 가질 수 있다.

ISR 관련 주요 설정

  • replica.lag.time.max.ms: 팔로워가 리더와 동기화되지 않는 최대 시간을 설정하는 옵션이다. 이 시간이 지나면 리더는 팔로워의 동기화 상태를 이상하게 감지하고 해당 팔로워를 ISR에서 제외시킨다.

ISR 흐름 예시

  1. 메시지 전송 및 복제
    • 리더 파티션에 메시지가 들어오면, 이 메시지는 ISR에 포함된 팔로워들에게 복제된다.
  2. 팔로워 동기화 확인
    • 리더는 주기적으로 팔로워들이 메시지를 동기화했는지 확인한다.
    • 설정된 시간(replica.lag.time.max.ms) 내에 동기화가 이루어지지 않으면, 해당 팔로워를 ISR에서 제외시킨다.
  3. 팔로워가 ISR에서 제외되면
    • 팔로워가 일정 시간 이상 동기화되지 않으면 ISR에서 제외되고, 리더로 승격될 수 없게 된다.
  4. 리더 장애 시 승격
    • 리더가 장애가 발생하면, ISR에 포함된 팔로워 중 하나가 새로운 리더로 승격된다.

ISR의 중요성

  • 가용성 보장: 리더 파티션에 장애가 발생하더라도 ISR에 포함된 팔로워가 리더로 승격되어 시스템의 가용성을 유지한다.
  • 데이터 안전성: ISR에 포함된 복제본이 동기화 상태를 유지하기 때문에, 데이터 손실을 방지하고 메시지를 안전하게 저장할 수 있다.
  • 리더 승격: 리더가 장애를 겪을 경우, ISR에 포함된 팔로워 중 하나가 새로운 리더로 승격된다.

ISR 예시

  • 리더 파티션에서 메시지 0이 들어오면:
    • Follower 1Follower 2가 이를 복제하고 ISR에 포함된다.
    • 리더는 주기적으로 팔로워들이 데이터를 동기화하고 있는지 체크한다.
    • 만약 Follower 2가 일정 시간 동안 동기화를 하지 않으면, ISR에서 제외된다.
    • 리더가 장애를 겪을 경우, Follower 1이 새로운 리더로 승격된다.
반응형