λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
Kafka

ISR(In Sync Replica)

by Soono991 2023. 5. 1.
πŸ’‘ 이번 ν¬μŠ€νŒ…μ—μ„œλŠ” ISR(In Sync Replica)에 λŒ€ν•΄ 정리해 보도둝 ν•˜κ² μŠ΅λ‹ˆλ‹€.

 

이전에 ν¬μŠ€νŒ…ν–ˆλ˜ Replicationμ—μ„œ 리더와 νŒ”λ‘œμ›Œ νŒŒν‹°μ…˜λ“€μ€ ν•˜λ‚˜μ˜ 논리적 그룹으둜 λ¬Άμ—¬μžˆλŠ”λ° 이λ₯Ό ISR(In Sync Replication)이라고 ν•©λ‹ˆλ‹€.

 

좜처: https://damdam-kim.tistory.com/17

ISR은 리더 νŒŒν‹°μ…˜κ³Ό μ •μƒμ μœΌλ‘œ 동기화가 이루어진 νŒ”λ‘œμ›Œ νŒŒν‹°μ…˜λ“€λ‘œ κ΅¬μ„±λ˜λ©°, λ§Œμ•½ νŒ”λ‘œμ›Œ νŒŒν‹°μ…˜μ— λ¬Έμ œκ°€ 생겨 리더 νŒŒν‹°μ…˜μ˜ λ©”μ‹œμ§€λ₯Ό κ°€μ Έμ˜€μ§€ λͺ»ν•˜κ±°λ‚˜ λ’€μ³μ§ˆ 경우 ν•΄λ‹Ή νŒ”λ‘œμ›Œ νŒŒν‹°μ…˜μ€ ISRμ—μ„œ μ œμ™Έλ©λ‹ˆλ‹€.

 

πŸ“’ ISR을 주기적으둜 ν™•μΈν•˜λŠ” μ˜΅μ…˜μ€ λ‹€μŒ 두가지 μ˜΅μ…˜μ΄ μžˆμŠ΅λ‹ˆλ‹€.
zookeeper.session.timeout.ms
default: 6초
max: 18초

→ λΈŒλ‘œμ»€κ°€ 주킀퍼에 μ—°κ²°λ˜μ–΄ μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€. μœ„ μ˜΅μ…˜μ— μ„€μ •λœ μ‹œκ°„ 내에 Heartbeatλ₯Ό μ§€μ†μ μœΌλ‘œ 주킀퍼에 보내야 ν•©λ‹ˆλ‹€.

replica.lag.time.max.ms
default: 10초
max: 30초

→ νŒ”λ‘œμ›Œ νŒŒν‹°μ…˜μ— ν•΄λ‹Ήν•˜λŠ” μ˜΅μ…˜μœΌλ‘œ, νŒ”λ‘œμ›Œ νŒŒν‹°μ…˜μ€ 리더 νŒŒν‹°μ…˜μœΌλ‘œλΆ€ν„° μœ„ μ˜΅μ…˜μ— μ„€μ •λœ μ‹œκ°„ 내에 λ©”μ‹œμ§€λ₯Ό μ§€μ†μ μœΌλ‘œ 가져와야 ν•©λ‹ˆλ‹€.

 

그리고 ISRλ‚΄μ˜ νŒ”λ‘œμ›Œ νŒŒν‹°μ…˜λ“€μ€ λͺ¨λ‘ 리더 νŒŒν‹°μ…˜μ΄ 될 수 μžˆμŠ΅λ‹ˆλ‹€.

 

좜처: https://damdam-kim.tistory.com/17

 

λ§Œμ•½ μœ„μ™€ 같이 broker 4에 λ¬Έμ œκ°€ 생겨 ν•΄λ‹Ή νŒŒν‹°μ…˜λ“€μ΄ ISRμ—μ„œ μ œμ™Έλœλ‹€λ©΄ 이후 broker 4에 μžˆλŠ” νŒŒν‹°μ…˜λ“€μ€ 리더 νŒŒν‹°μ…˜μ΄ 될 수 μ—†κ³ , broker 4에 리더 νŒŒν‹°μ…˜μ΄ μžˆμ—ˆλ‹€κ³  ν•œλ‹€λ©΄ ISR λ‚΄μ—μ„œ μƒˆλ‘œμš΄ 리더 νŒŒν‹°μ…˜μ„ μ„ μΆœν•˜λ©°, 더 이상 broker 4의 νŒŒν‹°μ…˜λ“€μ€ 리더 νŒŒν‹°μ…˜μ˜ λ©”μ‹œμ§€λ₯Ό κ°€μ Έμ˜¬ 수 μ—†μŠ΅λ‹ˆλ‹€.

 

이전 λ©€ν‹° λ…Έλ“œ μΉ΄ν”„μΉ΄ ν¬μŠ€νŒ…μ—μ„œ μ‹€μŠ΅ν–ˆλ˜ ν† ν”½μœΌλ‘œ ν™•μΈν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

브둜컀 3개, νŒŒν‹°μ…˜ 3개 그리고 Replication도 3개둜 κ΅¬μ„±λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

ν˜„μž¬κΉŒμ§„ ISR이 각각의 νŒŒν‹°μ…˜ 3개 λͺ¨λ‘ μ„€μ •λ˜μ–΄ μžˆλŠ”λ° broker 3을 shutdown ν•œ ν›„ λ‹€μ‹œ 토픽을 μ‘°νšŒν•˜λ©΄ broker 3에 μžˆμ—ˆλ˜ 3번 νŒŒν‹°μ…˜μ΄ ISRμ—μ„œ μ œμ™Έλœ 것을 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

그리고 λ‹€μ‹œ broker 3λ₯Ό μ‹€ν–‰ν•˜λ©΄ λ‹€μ‹œ broker 3의 νŒŒν‹°μ…˜μ΄ ISR에 μΆ”κ°€λœ 것을 확인할 수 있고, broker 1κ³Ό broker 2에 broker 3의 νŒŒν‹°μ…˜μ΄ μΆ”κ°€λ˜μ—ˆλ‹€λŠ” λ‘œκ·Έκ°€ 좜λ ₯λ˜λŠ” κ²ƒκΉŒμ§€ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

 

broker 1

 

broker 2

 

min.insync.replicas

ν•΄λ‹Ή μ˜΅μ…˜μ€ 브둜컀의 μ„€μ •κ°’μœΌλ‘œ ν”„λ‘œλ“€μ„œκ°€ acks=all둜 μ„±κ³΅μ μœΌλ‘œ λ©”μ‹œμ§€λ₯Ό 보낼 수 μžˆλŠ” μ΅œμ†Œν•œμ˜ ISR 브둜컀 개수λ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€.

ν•΄λ‹Ή λ‚΄μš©μ€ 이전 ν”„λ‘œλ“€μ„œ ν¬μŠ€νŒ…μ—λ„ μ •λ¦¬ν•΄λ‘μ—ˆμœΌλ‹ˆ μ°Έκ³ ν•˜μ‹œλ©΄ 쒋을 것 κ°™μŠ΅λ‹ˆλ‹€.

 

 

μœ„ μ΄λ―Έμ§€μ²˜λŸΌ replication-factorκ°€ 3이기 λ•Œλ¬Έμ— 리더, νŒ”λ‘œμ›Œ νŒŒν‹°μ…˜μ€ 총 3개 μƒμ„±λ˜μ—ˆμŠ΅λ‹ˆλ‹€. μ—¬κΈ°μ„œ acks=allκ³Ό min.insync.replicas=2둜 μ„€μ •ν•˜κ²Œ 되면 λ©”μ‹œμ§€λ₯Ό λ³΅μ œν•΄μ•Όν•  μ΅œμ†Œ 브둜컀(νŒŒν‹°μ…˜)의 κ°œμˆ˜κ°€ 2κ°œμ—¬μ•Ό λ©”μ‹œμ§€ 전솑에 μ„±κ³΅ν–ˆλ‹€κ³  νŒλ‹¨ν•©λ‹ˆλ‹€.

λ”°λΌμ„œ broker 3이 μž₯μ• κ°€ λ°œμƒν•΄λ„ broker 1(리더), broker 2(νŒ”λ‘œμ›Œ)에 각각 λ©”μ‹œμ§€κ°€ μ €μž₯λ˜μ—ˆκΈ° λ•Œλ¬Έμ— 이 κ²½μš°μ—λŠ” μ •μƒμ μœΌλ‘œ λ©”μ‹œμ§€κ°€ μ €μž₯λ˜μ—ˆλ‹€κ³  νŒλ‹¨ν•©λ‹ˆλ‹€.

 

ν•˜μ§€λ§Œ μœ„μ™€ 같이 νŒ”λ‘œμ›Œ νŒŒν‹°μ…˜ 2κ°œκ°€ λͺ¨λ‘ μž₯μ• κ°€ λ°œμƒν–ˆμ„ 경우 λ©”μ‹œμ§€λ₯Ό μ €μž₯ν•˜λŠ” 것이 리더 νŒŒν‹°μ…˜ ν•˜λ‚˜μ΄κΈ° λ•Œλ¬Έμ— μΉ΄ν”„μΉ΄λŠ” μ—λŸ¬λ‘œ νŒλ‹¨ν•˜κ³  λ‹€μŒ λ©”μ‹œμ§€λ₯Ό 보낼 수 μ—†κ²Œ λ©λ‹ˆλ‹€.

 

 

참고 자료

'Kafka' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

컨트둀러  (0) 2023.05.01
리더에포크 & 볡ꡬ  (0) 2023.05.01
Replication  (0) 2023.05.01
λ©€ν‹° λ…Έλ“œ μΉ΄ν”„μΉ΄ - 2  (0) 2023.05.01
λ©€ν‹° λ…Έλ“œ μΉ΄ν”„μΉ΄ - 1  (0) 2023.05.01

λŒ“κΈ€