Kafka-backup: ์†Œ๋น„์ž ์˜คํ”„์…‹

์— ๋งŒ๋“  2019๋…„ 06์›” 13์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: itadventurer/kafka-backup

@azapps ์šฐ์„  ์ด ๋ฉ‹์ง„ ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ์˜๊ตฌ ์ปจํ…Œ์ด๋„ˆ ์—ฐ๊ฒฐ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋‹ค๋ฅธ ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ OpenEBS๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Kubernetes ํ™˜๊ฒฝ์—์„œ Kafka ์ฃผ์ œ์˜ ๋ฐฑ์—… ๋ฐ ๋ณต์›์— ๋Œ€ํ•œ ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์„ ์ž‘์„ฑ ์ค‘์ž…๋‹ˆ๋‹ค.

์ง€๊ธˆ์€ Spredfast์˜ S3 ์ปค๋„ฅํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์ง€๋งŒ ๋‚ด ์นœ๊ตฌ Arash Kaffamanesh๊ฐ€ ๋‹น์‹ ์˜ ์ž‘์—…์„ ์•Œ๋ ค์คฌ์Šต๋‹ˆ๋‹ค. ๋ช‡ ๊ฐ€์ง€ ์งˆ๋ฌธ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๋ณต์›ํ•  ๋•Œ ์†Œ๋น„์ž์—๊ฒŒ ์–ด๋””์„œ๋ถ€ํ„ฐ ์†Œ๋น„๋ฅผ ์‹œ์ž‘ํ•ด์•ผ ํ•˜๋Š”์ง€ ์–ด๋–ป๊ฒŒ ์•Œ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
spredfast์˜ ์ปค๋„ฅํ„ฐ์™€ ์ถ”๊ฐ€ ์ฐจ์ด์ ์„ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋‚ด Kafka ํ™˜๊ฒฝ์€ Kubernetes์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์ด์ƒ์ ์œผ๋กœ๋Š” ์žฅ์•  ๋ฐœ์ƒ ์‹œ ๋ณต๊ตฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํด๋Ÿฌ์Šคํ„ฐ ์™ธ๋ถ€์˜ ๋ฐฑ์—…/๋ณต์› ์Šคํ† ๋ฆฌ์ง€ ์œ„์น˜๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค.

๋ฐฑ์—… ์œ„์น˜๋Š” target.dir ์— ์˜ํ•ด ๊ฒฐ์ •๋˜๋ฉฐ, ํ™˜๊ฒฝ์ด Kubernetes์ธ ๊ฒฝ์šฐ ๋…ธ๋“œ์—์„œ ๊ฒฝ๋กœ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์–ด๋ ค์›Œ์ง‘๋‹ˆ๋‹ค.

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์•ˆ๋…•ํ•˜์„ธ์š” ์ž„๋ž€์ž…๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ์˜๊ตฌ ์ปจํ…Œ์ด๋„ˆ ์—ฐ๊ฒฐ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋‹ค๋ฅธ ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ OpenEBS๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Kubernetes ํ™˜๊ฒฝ์—์„œ Kafka ์ฃผ์ œ์˜ ๋ฐฑ์—… ๋ฐ ๋ณต์›์— ๋Œ€ํ•œ ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์„ ์ž‘์„ฑ ์ค‘์ž…๋‹ˆ๋‹ค.

ํŒŒ์ผ ์‹œ์Šคํ…œ ์Šค๋ƒ…์ƒท์„ ์‚ฌ์šฉํ•˜์—ฌ Kafka๋ฅผ ๋ฐฑ์—…ํ•˜๋Š” ๊ฒƒ์€ ๊ทธ๋ฆฌ ์‰ฌ์šด ์ผ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ https://github.com/azapps/kafka-backup/blob/master/docs/Comparing_Kafka_Backup_Solutions.md ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์ง€๊ธˆ์€ Spredfast์˜ S3 ์ปค๋„ฅํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์ง€๋งŒ ๋‚ด ์นœ๊ตฌ Arash Kaffamanesh๊ฐ€ ๋‹น์‹ ์˜ ์ž‘์—…์„ ์•Œ๋ ค์คฌ์Šต๋‹ˆ๋‹ค. ๋ช‡ ๊ฐ€์ง€ ์งˆ๋ฌธ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์†Œ๋น„์ž ์˜คํ”„์…‹์„ ๋ณต์›ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค๋ฉด S3 ์ปค๋„ฅํ„ฐ๊ฐ€ ์™„๋ฒฝํ•ด ๋ณด์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” S3 ์ปค๋„ฅํ„ฐ์˜ ์†Œ์Šค ์ฝ”๋“œ์— ๋Œ€ํ•ด ๊นŠ์ด ํŒŒ๊ณ ๋“ค์—ˆ๋‹ค. S3 ์ปค๋„ฅํ„ฐ๋Š” ์ค‘์š”ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์ง€ ์•Š๊ณ  ๊ทธ ๊ฒฝ์šฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ํ™•์žฅํ•˜๊ธฐ ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ ๋ฌธ์ œ์— ๋Œ€ํ•œ ์†”๋ฃจ์…˜์œผ๋กœ ์ด๋ฅผ ์ผ์ถ•ํ–ˆ๋‹ค.

๋ณต์›ํ•  ๋•Œ ์†Œ๋น„์ž์—๊ฒŒ ์–ด๋””์„œ๋ถ€ํ„ฐ ์†Œ๋น„๋ฅผ ์‹œ์ž‘ํ•ด์•ผ ํ•˜๋Š”์ง€ ์–ด๋–ป๊ฒŒ ์•Œ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

ํ˜„์žฌ ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์€ ๋ณต์›ํ•ด์„œ๋Š” ์•ˆ ๋˜๋Š” ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์‚ญ์ œํ•˜๊ณ  ์ธ๋ฑ์Šค๋ฅผ ๋‹ค์‹œ ๋งŒ๋“œ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ๋‹ฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์ •๋ณด๊ฐ€ ๊ณง ์ œ๊ณต๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋งค์šฐ ํŠน์ •ํ•œ ์˜คํ”„์…‹์—์„œ ๋ณต์›์„ ์‹œ์ž‘ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ๋ฌธ์ œ๋ฅผ ์—ฌ์‹ญ์‹œ์˜ค. ๊ตฌํ˜„ํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

spredfast์˜ ์ปค๋„ฅํ„ฐ์™€ ์ถ”๊ฐ€ ์ฐจ์ด์ ์„ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ, S3 ์ปค๋„ฅํ„ฐ๋Š” ๋ณต์› ์ค‘์— ์†Œ๋น„์ž ์˜คํ”„์…‹์„ ๋™๊ธฐํ™”ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์‚ฌ์‹ค, ํ˜„์žฌ Kafka ๋ฒ„์ „์—์„œ๋Š” ์•ˆ์ •์ ์œผ๋กœ ๊ทธ๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๋‹ค. Mirror Maker 2 ์— ๋Œ€ํ•œ @ryannedolan ์ž‘์—… ๋•๋ถ„์— ๊ณง ๊ทธ๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์ƒ๊ฒจ kafka-backup ์—์„œ ํ•ด๋‹น API๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์šด ์ข‹๊ฒŒ๋„ ์ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ์ด์ „ ๋ฒ„์ „๊ณผ๋„ ํ˜ธํ™˜๋˜๋ฉฐ ๊ณง kafka-backup ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋ฌธ์„œ๊ฐ€ ์ œ๊ณต๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ S3 ์ปค๋„ฅํ„ฐ๋Š” S3๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ kafka-backup ๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ์œผ๋กœ์˜ ๋ฐฑ์—…๋งŒ ์ง€์›ํ•˜๋ฉฐ ์›ํ•˜๋Š” ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ตœ์ข… ๋Œ€์ƒ์œผ๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋” ๋งŽ์€ ์Šคํ† ๋ฆฌ์ง€ ๋ฐฑ์—”๋“œ์— ๋Œ€ํ•œ ์ง€์›์„ ์ถ”๊ฐ€ํ•  ๊ณ„ํš์ž…๋‹ˆ๋‹ค.

๊ทธ ์™ธ์—๋„ ๋‘ ํ”„๋กœ์ ํŠธ๋Š” ๊ตฌ์กฐ์ ์œผ๋กœ ๋งค์šฐ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค(์‹ค์ œ๋กœ S3 ์ปค๋„ฅํ„ฐ์™€ Mirror Maker 2๋Š” kafka-backup ์— ์˜๊ฐ์„ ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค)

๋‚ด Kafka ํ™˜๊ฒฝ์€ Kubernetes์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์ด์ƒ์ ์œผ๋กœ๋Š” ์žฅ์•  ๋ฐœ์ƒ ์‹œ ๋ณต๊ตฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํด๋Ÿฌ์Šคํ„ฐ ์™ธ๋ถ€์˜ ๋ฐฑ์—…/๋ณต์› ์Šคํ† ๋ฆฌ์ง€ ์œ„์น˜๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค.

๋‹น์‹ ์ด Strimzi๋„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•„๋Š” ํ•œ, ์šฐ๋ฆฌ๋Š” ๋™์ผํ•œ ๋ฐฑ์—…์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Kubernetes ๋ฐ Strimzi์—์„œ Kafka์™€ Zookeeper์˜ ์ „์ฒด ๋ฐฑ์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๊ณง ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์„ ์ž‘์„ฑํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ฐฑ์—… ์œ„์น˜๋Š” target.dir์— ์˜ํ•ด ๊ฒฐ์ •๋˜๋ฉฐ, ํ™˜๊ฒฝ์ด Kubernetes์ธ ๊ฒฝ์šฐ ๋…ธ๋“œ์—์„œ ๊ฒฝ๋กœ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์–ด๋ ค์›Œ์ง‘๋‹ˆ๋‹ค.

ํ•ญ์ƒ ๊ทธ๋ ‡๋“ฏ์ด ์˜๊ตฌ ๋ณผ๋ฅจ์„ ๋งˆ์šดํŠธํ•˜์‹ญ์‹œ์˜ค. ์‚ฌ์ด๋“œ์นด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ตœ์ข… ๋ชฉ์ ์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋ž˜๋œ ์„ธ๊ทธ๋จผํŠธ์™€ ํ•ด๋‹น ์ธ๋ฑ์Šค๊ฐ€ ์™„๋ฃŒ๋˜๋Š” ์ฆ‰์‹œ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์˜๊ตฌ ๋ณผ๋ฅจ์„ ๋น„๊ต์  ์ž‘๊ฒŒ ์œ ์ง€ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. (๋ฌธ์„œ๊ฐ€ ์˜จ๋‹ค)

๋ฉฐ์น  ๋” ๊ธฐ๋‹ค๋ฆฌ๋ฉด ๊ท€ํ•˜์˜ ์ฃผ์ œ ์ค‘ ์ผ๋ถ€๋ฅผ ๋‹ค๋ฃจ๋Š” ์†Œ๊ฐœ ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์„ ๊ฒŒ์‹œํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ €์—๊ฒŒ ์ด๋ฉ”์ผ์„ ์“ฐ๊ฑฐ๋‚˜ @arashkaffamanesh ์—๊ฒŒ ์ดˆ์•ˆ์„ ์š”์ฒญํ•˜์„ธ์š”.wink:

๋ชจ๋“  3 ๋Œ“๊ธ€

์•ˆ๋…•ํ•˜์„ธ์š” ์ž„๋ž€์ž…๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ์˜๊ตฌ ์ปจํ…Œ์ด๋„ˆ ์—ฐ๊ฒฐ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋‹ค๋ฅธ ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ OpenEBS๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Kubernetes ํ™˜๊ฒฝ์—์„œ Kafka ์ฃผ์ œ์˜ ๋ฐฑ์—… ๋ฐ ๋ณต์›์— ๋Œ€ํ•œ ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์„ ์ž‘์„ฑ ์ค‘์ž…๋‹ˆ๋‹ค.

ํŒŒ์ผ ์‹œ์Šคํ…œ ์Šค๋ƒ…์ƒท์„ ์‚ฌ์šฉํ•˜์—ฌ Kafka๋ฅผ ๋ฐฑ์—…ํ•˜๋Š” ๊ฒƒ์€ ๊ทธ๋ฆฌ ์‰ฌ์šด ์ผ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ https://github.com/azapps/kafka-backup/blob/master/docs/Comparing_Kafka_Backup_Solutions.md ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์ง€๊ธˆ์€ Spredfast์˜ S3 ์ปค๋„ฅํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์ง€๋งŒ ๋‚ด ์นœ๊ตฌ Arash Kaffamanesh๊ฐ€ ๋‹น์‹ ์˜ ์ž‘์—…์„ ์•Œ๋ ค์คฌ์Šต๋‹ˆ๋‹ค. ๋ช‡ ๊ฐ€์ง€ ์งˆ๋ฌธ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์†Œ๋น„์ž ์˜คํ”„์…‹์„ ๋ณต์›ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค๋ฉด S3 ์ปค๋„ฅํ„ฐ๊ฐ€ ์™„๋ฒฝํ•ด ๋ณด์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” S3 ์ปค๋„ฅํ„ฐ์˜ ์†Œ์Šค ์ฝ”๋“œ์— ๋Œ€ํ•ด ๊นŠ์ด ํŒŒ๊ณ ๋“ค์—ˆ๋‹ค. S3 ์ปค๋„ฅํ„ฐ๋Š” ์ค‘์š”ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์ง€ ์•Š๊ณ  ๊ทธ ๊ฒฝ์šฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ํ™•์žฅํ•˜๊ธฐ ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ ๋ฌธ์ œ์— ๋Œ€ํ•œ ์†”๋ฃจ์…˜์œผ๋กœ ์ด๋ฅผ ์ผ์ถ•ํ–ˆ๋‹ค.

๋ณต์›ํ•  ๋•Œ ์†Œ๋น„์ž์—๊ฒŒ ์–ด๋””์„œ๋ถ€ํ„ฐ ์†Œ๋น„๋ฅผ ์‹œ์ž‘ํ•ด์•ผ ํ•˜๋Š”์ง€ ์–ด๋–ป๊ฒŒ ์•Œ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

ํ˜„์žฌ ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์€ ๋ณต์›ํ•ด์„œ๋Š” ์•ˆ ๋˜๋Š” ์„ธ๊ทธ๋จผํŠธ๋ฅผ ์‚ญ์ œํ•˜๊ณ  ์ธ๋ฑ์Šค๋ฅผ ๋‹ค์‹œ ๋งŒ๋“œ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ๋‹ฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์ •๋ณด๊ฐ€ ๊ณง ์ œ๊ณต๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋งค์šฐ ํŠน์ •ํ•œ ์˜คํ”„์…‹์—์„œ ๋ณต์›์„ ์‹œ์ž‘ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ๋ฌธ์ œ๋ฅผ ์—ฌ์‹ญ์‹œ์˜ค. ๊ตฌํ˜„ํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

spredfast์˜ ์ปค๋„ฅํ„ฐ์™€ ์ถ”๊ฐ€ ์ฐจ์ด์ ์„ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ, S3 ์ปค๋„ฅํ„ฐ๋Š” ๋ณต์› ์ค‘์— ์†Œ๋น„์ž ์˜คํ”„์…‹์„ ๋™๊ธฐํ™”ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์‚ฌ์‹ค, ํ˜„์žฌ Kafka ๋ฒ„์ „์—์„œ๋Š” ์•ˆ์ •์ ์œผ๋กœ ๊ทธ๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๋‹ค. Mirror Maker 2 ์— ๋Œ€ํ•œ @ryannedolan ์ž‘์—… ๋•๋ถ„์— ๊ณง ๊ทธ๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์ƒ๊ฒจ kafka-backup ์—์„œ ํ•ด๋‹น API๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์šด ์ข‹๊ฒŒ๋„ ์ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ์ด์ „ ๋ฒ„์ „๊ณผ๋„ ํ˜ธํ™˜๋˜๋ฉฐ ๊ณง kafka-backup ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋ฌธ์„œ๊ฐ€ ์ œ๊ณต๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ S3 ์ปค๋„ฅํ„ฐ๋Š” S3๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ kafka-backup ๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ์œผ๋กœ์˜ ๋ฐฑ์—…๋งŒ ์ง€์›ํ•˜๋ฉฐ ์›ํ•˜๋Š” ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ตœ์ข… ๋Œ€์ƒ์œผ๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋” ๋งŽ์€ ์Šคํ† ๋ฆฌ์ง€ ๋ฐฑ์—”๋“œ์— ๋Œ€ํ•œ ์ง€์›์„ ์ถ”๊ฐ€ํ•  ๊ณ„ํš์ž…๋‹ˆ๋‹ค.

๊ทธ ์™ธ์—๋„ ๋‘ ํ”„๋กœ์ ํŠธ๋Š” ๊ตฌ์กฐ์ ์œผ๋กœ ๋งค์šฐ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค(์‹ค์ œ๋กœ S3 ์ปค๋„ฅํ„ฐ์™€ Mirror Maker 2๋Š” kafka-backup ์— ์˜๊ฐ์„ ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค)

๋‚ด Kafka ํ™˜๊ฒฝ์€ Kubernetes์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์ด์ƒ์ ์œผ๋กœ๋Š” ์žฅ์•  ๋ฐœ์ƒ ์‹œ ๋ณต๊ตฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํด๋Ÿฌ์Šคํ„ฐ ์™ธ๋ถ€์˜ ๋ฐฑ์—…/๋ณต์› ์Šคํ† ๋ฆฌ์ง€ ์œ„์น˜๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค.

๋‹น์‹ ์ด Strimzi๋„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•„๋Š” ํ•œ, ์šฐ๋ฆฌ๋Š” ๋™์ผํ•œ ๋ฐฑ์—…์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Kubernetes ๋ฐ Strimzi์—์„œ Kafka์™€ Zookeeper์˜ ์ „์ฒด ๋ฐฑ์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๊ณง ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์„ ์ž‘์„ฑํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ฐฑ์—… ์œ„์น˜๋Š” target.dir์— ์˜ํ•ด ๊ฒฐ์ •๋˜๋ฉฐ, ํ™˜๊ฒฝ์ด Kubernetes์ธ ๊ฒฝ์šฐ ๋…ธ๋“œ์—์„œ ๊ฒฝ๋กœ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์–ด๋ ค์›Œ์ง‘๋‹ˆ๋‹ค.

ํ•ญ์ƒ ๊ทธ๋ ‡๋“ฏ์ด ์˜๊ตฌ ๋ณผ๋ฅจ์„ ๋งˆ์šดํŠธํ•˜์‹ญ์‹œ์˜ค. ์‚ฌ์ด๋“œ์นด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ตœ์ข… ๋ชฉ์ ์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋ž˜๋œ ์„ธ๊ทธ๋จผํŠธ์™€ ํ•ด๋‹น ์ธ๋ฑ์Šค๊ฐ€ ์™„๋ฃŒ๋˜๋Š” ์ฆ‰์‹œ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์˜๊ตฌ ๋ณผ๋ฅจ์„ ๋น„๊ต์  ์ž‘๊ฒŒ ์œ ์ง€ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. (๋ฌธ์„œ๊ฐ€ ์˜จ๋‹ค)

๋ฉฐ์น  ๋” ๊ธฐ๋‹ค๋ฆฌ๋ฉด ๊ท€ํ•˜์˜ ์ฃผ์ œ ์ค‘ ์ผ๋ถ€๋ฅผ ๋‹ค๋ฃจ๋Š” ์†Œ๊ฐœ ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์„ ๊ฒŒ์‹œํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ €์—๊ฒŒ ์ด๋ฉ”์ผ์„ ์“ฐ๊ฑฐ๋‚˜ @arashkaffamanesh ์—๊ฒŒ ์ดˆ์•ˆ์„ ์š”์ฒญํ•˜์„ธ์š”.wink:

@azapps ' ๊ธฐ์—ฌ๋Š” ๋…ํŠนํ•˜๊ณ  ๊ต‰์žฅํ•ฉ๋‹ˆ๋‹ค. ์ €๋Š” ์ „์ฒด ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ @azapps ๊ฐ€ ์ œ์•ˆํ•˜๊ณ  ๊ตฌํ˜„ํ•œ Kafka Backup์ด Kafka ์ƒํƒœ๊ณ„์˜ ํ‘œ์ค€ํ™”๋œ ๋ถ€๋ถ„์ด ๋˜๋„๋ก ๋„์™€์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค!

์™„๋ฒฝํ•œ ๊ฒƒ์€ ์—†์ง€๋งŒ @azapps ์˜ ์ด ๊ตฌํ˜„์€ ํ›Œ๋ฅญํ•ฉ๋‹ˆ๋‹ค!

๊ธฐ๋ก์„ ์œ„ํ•ด: ์—ฌ๊ธฐ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค: https://medium.com/@anatolyz/introducing -kafka-backup-9dc0677ea7ee

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰