๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Kafka

๋ฉ”์‹œ์ง€ ๋กœ๊ทธ ์„ธ๊ทธ๋จผํŠธ, ๋กœ๊ทธ ์„ธ๊ทธ๋จผํŠธ

by Soono991 2023. 5. 7.
๐Ÿ’ก ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ๋ฉ”์‹œ์ง€ ๋กœ๊ทธ ์„ธ๊ทธ๋จผํŠธ์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

์นดํ”„์นด์˜ ํ† ํ”ฝ์œผ๋กœ ์ „์†ก๋˜๋Š” ๋ฉ”์‹œ์ง€๋Š” ๊ฐ ํŒŒํ‹ฐ์…˜์— ์„ธ๊ทธ๋จผํŠธ, ๋˜๋Š” ๋กœ๊ทธ ์„ธ๊ทธ๋จผํŠธ๋ผ๋Š” ํŒŒ์ผ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

 

๋กœ๊ทธ ์„ธ๊ทธ๋จผํŠธ์—๋Š” ๋ฉ”์‹œ์ง€์˜ ๋‚ด์šฉ๊ณผ ๋ฉ”์‹œ์ง€์˜ ํ‚ค, ๊ฐ’, ์˜คํ”„์…‹, ๋ฉ”์‹œ์ง€ ํฌ๊ธฐ ๊ฐ™์€ ์ •๋ณด๊ฐ€ ํ•จ๊ป˜ ์ €์žฅ๋˜๋ฉฐ, ๋ธŒ๋กœ์ปค์˜ ๋กœ์ปฌ ๋””์Šคํฌ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

 

ํ•˜๋‚˜์˜ ๋กœ๊ทธ ์„ธ๊ทธ๋จผํŠธ ํฌ๊ธฐ๊ฐ€ ๋„ˆ๋ฌด ์ปค์ง€๋ฉด ํŒŒ์ผ์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์–ด๋ ค์›Œ์ง€๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ๋ณธ์ ์œผ๋กœ๋Š” ์ตœ๋Œ€ 1GB ํฌ๊ธฐ๋กœ ์„ค์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋งŒ์•ฝ ์„ค์ •๋œ ํฌ๊ธฐ๋ณด๋‹ค ์ปค์ง€๋Š” ๊ฒฝ์šฐ์— ๊ธฐ๋ณธ์ ์œผ๋กœ ๋กค๋ง(Rolling) ์ „๋žต์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ํŒŒํ‹ฐ์…˜์€ ํ•˜๋‚˜ ์ด์ƒ์˜ ์„ธ๊ทธ๋จผํŠธ๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ, ๊ฐ ์„ธ๊ทธ๋จผํŠธ๋Š” ์ผ์ • ์‹œ๊ฐ„์ด ์ง€๋‚˜๊ฑฐ๋‚˜ ์šฉ๋Ÿ‰์ด ์ดˆ๊ณผ๋  ๊ฒฝ์šฐ ๊ธฐ์กด์˜ ์„ธ๊ทธ๋จผํŠธ๋Š” close ํ•˜๊ณ  ์ƒˆ๋กœ์šด ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

 

 

๋กœ๊ทธ ์„ธ๊ทธ๋จผํŠธ์— ์˜ํ–ฅ์„ ์ฃผ๋Š” ์„ค์ •์€ log.segment.bytes์™€ log.roll.hours(ms) ์ž…๋‹ˆ๋‹ค.

log.segment.bytes
ใ†๊ฐœ๋ณ„ ์„ธ๊ทธ๋จผํŠธ์˜ ์ตœ๋Œ€ ํฌ๊ธฐ์ด๋ฉฐ ๊ธฐ๋ณธ๊ฐ’์€ 1GB์ž…๋‹ˆ๋‹ค.
ใ†์ง€์ •๋œ ํฌ๊ธฐ๋ฅผ ๋„˜๊ธฐ๋ฉด ํ•ด๋‹น ์„ธ๊ทธ๋จผํŠธ๋Š” ๋” ์ด์ƒ active ์ƒํƒœ๊ฐ€ ์•„๋‹ˆ๋ฉฐ close ๋ฉ๋‹ˆ๋‹ค. (์˜ค์ง ์ฝ๊ธฐ๋งŒ ๊ฐ€๋Šฅ)
ใ†ํ† ํ”ฝ์˜ ์„ค์ •์€ segment.bytes์ด๋ฉฐ ๊ธฐ๋ณธ๊ฐ’์€ log.segment.bytes์˜ ์„ค์ •์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

log.roll.hours(ms)
ใ†๊ฐœ๋ณ„ ์„ธ๊ทธ๋จผํŠธ๊ฐ€ ์œ ์ง€๋˜๋Š” ์ตœ๋Œ€ ์‹œ๊ฐ„์ด๋ฉฐ ๊ธฐ๋ณธ๊ฐ’์€ 7์ผ์ž…๋‹ˆ๋‹ค.
ใ†์ง€์ •๋œ ์‹œ๊ฐ„์„ ๋„˜๊ธฐ๋ฉด ํ•ด๋‹น ์„ธ๊ทธ๋จผํŠธ๋Š” ๋” ์ด์ƒ active ์ƒํƒœ๊ฐ€ ์•„๋‹ˆ๋ฉฐ close ๋ฉ๋‹ˆ๋‹ค. (์˜ค์ง ์ฝ๊ธฐ๋งŒ ๊ฐ€๋Šฅ)
ใ†log.segment.bytes์— ์ง€์ •๋œ ํฌ๊ธฐ๋งŒํผ ์ฐจ์ง€ ์•Š์•„๋„ log.roll.hours(ms) ๋งŒํผ์˜ ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด ํ•ด๋‹น ์„ธ๊ทธ๋จผํŠธ๋ฅผ close ํ•ฉ๋‹ˆ๋‹ค.
ใ†ํ† ํ”ฝ ์„ค์ •์€ segment.ms์ด๋ฉฐ ๊ธฐ๋ณธ๊ฐ’์€ log.roll.hours ์„ค์ •์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.
๐Ÿ’ก log.segment.bytes, log.roll.hours ์„ค์ •์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ๊ฐ ๋ธŒ๋กœ์ปค๋งˆ๋‹ค ์„ค์ •์„ ์ ์šฉํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋งŒ์•ฝ ์ „์—ญ์œผ๋กœ ์„ค์ •์„ ์ ์šฉํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ์—๋Š” ํ† ํ”ฝ ์„ค์ •์œผ๋กœ ์ ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

segment.bytes, segment.ms

 

์œ„์™€ ๊ฐ™์ด ์ผ์ • ์‹œ๊ฐ„, ์šฉ๋Ÿ‰ ์ดˆ๊ณผ ์‹œ ์ƒˆ๋กœ์šด ์„ธ๊ทธ๋จผํŠธ๊ฐ€ ์ƒ์„ฑ๋˜๋Š”๋ฐ ์ด๋•Œ ํŒŒ์ผ๋ช…์€ ์˜คํ”„์…‹๋ฒˆํ˜ธ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์ฆ‰ 00000000000000000000.log ๋Š” 0~41๋ฒˆ ์˜คํ”„์…‹์˜ ๋ฉ”์‹œ์ง€๊ฐ€ ๋“ค์–ด์žˆ๊ณ , 00000000000000000042.log๋Š” 42~83๋ฒˆ ์˜คํ”„์…‹์˜ ๋ฉ”์‹œ์ง€๊ฐ€ ๋“ค์–ด์žˆ์œผ๋ฉฐ 00000000000000000084.log๋Š” 84๋ฒˆ ์˜คํ”„์…‹ ๋ฉ”์‹œ์ง€๋ถ€ํ„ฐ ๊ณ„์† ์ €์žฅ ์ค‘์ธ ์ƒํƒœ์ž„์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

 

๋กœ๊ทธ ์„ธ๊ทธ๋จผํŠธ ํ™•์ธํ•˜๊ธฐ

๋กœ๊ทธ ์„ธ๊ทธ๋จผํŠธ ์•ˆ์˜ ๋‚ด์šฉ์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” kafka-dump-log ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์ด์— ๊ด€๋ จํ•ด์„œ๋Š” ์ •๋ฆฌํ•ด ๋‘” ํฌ์ŠคํŒ…์ด ์žˆ์œผ๋‹ˆ ์ฐธ๊ณ ํ•˜์‹œ๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

 

kafka CLI ์‚ฌ์šฉํ•˜๊ธฐ - kafka-dump-log

๐Ÿ’ก ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” kafka-dump-log์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. kafka-dump-log ์„ค๋ช…์„ ๋ณด๋ฉด ๋กœ๊ทธ ํŒŒ์ผ์„ ํŒŒ์‹ฑ ํ•˜์—ฌ ๊ทธ ๋‚ด์šฉ์„ ์ฝ˜์†”์— ๋คํ”„ ํ•˜๋„๋ก ๋„์™€์ฃผ๋ฉฐ, ์†์ƒ๋œ ๋กœ๊ทธ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๋””๋ฒ„๊น…ํ•˜๋Š”

soono-991.tistory.com

 

.index, .timeindex ํŒŒ์ผ

ํŒŒํ‹ฐ์…˜ ์•ˆ์— ์ƒ์„ฑ๋˜๋Š” ํŒŒ์ผ๋“ค์„ ๋ณด๋ฉด ๋ฉ”์‹œ์ง€์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๋Š” log ์„ธ๊ทธ๋จผํŠธ ์™ธ์— index ์„ธ๊ทธ๋จผํŠธ์™€ timeindex ์„ธ๊ทธ๋จผํŠธ ํŒŒ์ผ์ด ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

index ์„ธ๊ทธ๋จผํŠธ๋Š” ์˜คํ”„์…‹ ๋ณ„๋กœ byte position ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋กœ๊ทธ ์„ธ๊ทธ๋จผํŠธ๋Š” ํŒŒ์ผ ๊ธฐ๋ฐ˜์ด๊ธฐ ๋•Œ๋ฌธ์— ํŠน์ • ์˜คํ”„์…‹์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํŒŒ์ผ์—์„œ ์ฝ๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ•ด๋‹น ์˜คํ”„์…‹์ด File Pointer์—์„œ ์–ผ๋งˆ๋งŒํผ์˜ byte์— ์œ„์น˜ํ•ด ์žˆ๋Š”์ง€ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด๋•Œ index ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์˜คํ”„์…‹ ์ •๋ณด๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

 

timeindex ์„ธ๊ทธ๋จผํŠธ๋Š” ๋ฉ”์‹œ์ง€์˜ ํƒ€์ž„์Šคํƒฌํ”„ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

์„ธ๊ทธ๋จผํŠธ ํŒŒ์ผ ์ƒ๋ช… ์ฃผ๊ธฐ

์„ธ๊ทธ๋จผํŠธ ํŒŒ์ผ์€ active → closed → deleted | compacted ๋‹จ๊ณ„๋กœ ๊ด€๋ฆฌ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

์„ธ๊ทธ๋จผํŠธ ํŒŒ์ผ์€ log cleanup ์ •์ฑ…์— ๋”ฐ๋ผ ์ง€์ •๋œ ํŠน์ • ์‹œ๊ฐ„์ด๋‚˜ ํŒŒ์ผ ํฌ๊ธฐ์— ๋”ฐ๋ผ ์‚ญ์ œ๋˜๊ฑฐ๋‚˜ compact ํ˜•ํƒœ๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

 

๋”ฐ๋ผ์„œ log cleanup ์ •์ฑ…์„ ์„ค์ •ํ•ด์„œ ๋กœ๊ทธ๊ฐ€ ์‚ญ์ œ๋˜๋“ ์ง€ compact(์••์ถ•)๋˜๋˜์ง€๋ฅผ ๊ฒฐ์ •ํ•ด์•ผ ํ•˜๋Š”๋ฐ ๊ธฐ๋ณธ๊ฐ’์€ delete๋กœ ์ ์šฉ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

log cleanup ์ •์ฑ…์— ์˜ํ•ด ๋กœ๊ทธ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์‚ญ์ œํ•˜๊ฒŒ ๋˜๋ฉด ๋กœ๊ทธ ์„ธ๊ทธ๋จผํŠธ๋Š” ๋‹ค์‹œ 00000000000000000001๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฐ๊ฐ์˜ ์„ธ๊ทธ๋จผํŠธ ํŒŒ์ผ๋“ค์„ ์ƒˆ๋กœ ์ƒ์„ฑํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

log.cleanup.policy = delete
→ ์„ธ๊ทธ๋จผํŠธ๋ฅผ log.retention.hours, log.retention.bytes ์„ค์ • ๊ฐ’์— ๋”ฐ๋ผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

log.cleanup.policy = compact
→ ์„ธ๊ทธ๋จผํŠธ๋ฅผ key ๊ฐ’ ๋ ˆ๋ฒจ๋กœ ๊ฐ€์žฅ ์ตœ์‹ ์˜ ๋ฉ”์‹œ์ง€๋งŒ ์œ ์ง€ํ•˜๋„๋ก ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์žฌ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

log.cleanup.policy = [delete, compact]
→ ๋‘˜ ๋‹ค ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

 

log.cleanup.policy ์„ค์ • ํŒŒ๋ผ๋ฏธํ„ฐ

config ์„ค๋ช…
log.retention.hours(ms) ๊ฐœ๋ณ„ ์„ธ๊ทธ๋จผํŠธ๊ฐ€ ์‚ญ์ œ๋˜๊ธฐ์ „ ์œ ์ง€ํ•˜๋Š” ์‹œ๊ฐ„์ด๋ฉฐ ๊ธฐ๋ณธ๊ฐ’์€ 7์ผ์ž…๋‹ˆ๋‹ค.
ํ† ํ”ฝ ๊ตฌ์„ฑ์€ retention.ms์ด๋ฉฐ ๊ธฐ๋ณธ๊ฐ’์€ log.retention.hours์˜ ์„ค์ •๊ฐ’์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.
log.retention.bytes ์„ธ๊ทธ๋จผํŠธ ์‚ญ์ œ ์กฐ๊ฑด์ด ๋˜๋Š” ํŒŒํ‹ฐ์…˜ ๋‹จ์œ„์˜ ์ „์ฒด ํŒŒ์ผ์˜ ํฌ๊ธฐ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ -1๋กœ ๋ฌดํ•œ๋Œ€์ž…๋‹ˆ๋‹ค.
ํ† ํ”ฝ ๊ตฌ์„ฑ์€ retention.bytes์ด๋ฉฐ ๊ธฐ๋ณธ๊ฐ’์€ log.retention.bytes์˜ ์„ค์ •๊ฐ’์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.
log.retention.check.interval.ms ๋ธŒ๋กœ์ปค๊ฐ€ background๋กœ ์„ธ๊ทธ๋จผํŠธ ์‚ญ์ œ ๋Œ€์ƒ์„ ์ฐพ๊ธฐ ์œ„ํ•œ ms ๋‹จ์œ„์˜ ์ฃผ๊ธฐ์ž…๋‹ˆ๋‹ค.

 

 

 

์ฐธ๊ณ  ์ž๋ฃŒ

'Kafka' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

๋กœ๊ทธ ์ปดํŒฉ์…˜  (1) 2023.05.07
์ปจํŠธ๋กค๋Ÿฌ  (0) 2023.05.01
๋ฆฌ๋”์—ํฌํฌ & ๋ณต๊ตฌ  (0) 2023.05.01
ISR(In Sync Replica)  (0) 2023.05.01
Replication  (0) 2023.05.01

๋Œ“๊ธ€