@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:
@azapps ' ๊ธฐ์ฌ๋ ๋ ํนํ๊ณ ๊ต์ฅํฉ๋๋ค. ์ ๋ ์ ์ฒด ์ปค๋ฎค๋ํฐ๊ฐ @azapps ๊ฐ ์ ์ํ๊ณ ๊ตฌํํ Kafka Backup์ด Kafka ์ํ๊ณ์ ํ์คํ๋ ๋ถ๋ถ์ด ๋๋๋ก ๋์์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค!
์๋ฒฝํ ๊ฒ์ ์์ง๋ง @azapps ์ ์ด ๊ตฌํ์ ํ๋ฅญํฉ๋๋ค!
๊ธฐ๋ก์ ์ํด: ์ฌ๊ธฐ๋ก ์ด๋ํฉ๋๋ค: https://medium.com/@anatolyz/introducing -kafka-backup-9dc0677ea7ee
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์๋ ํ์ธ์ ์๋์ ๋๋ค.
ํ์ผ ์์คํ ์ค๋ ์ท์ ์ฌ์ฉํ์ฌ Kafka๋ฅผ ๋ฐฑ์ ํ๋ ๊ฒ์ ๊ทธ๋ฆฌ ์ฌ์ด ์ผ์ด ์๋๋๋ค. ์ด์ ๋ํ ์์ธํ ๋ด์ฉ์ https://github.com/azapps/kafka-backup/blob/master/docs/Comparing_Kafka_Backup_Solutions.md ๋ฅผ ์ฐธ์กฐํ์ธ์.
์๋น์ ์คํ์ ์ ๋ณต์ํ ํ์๊ฐ ์๋ค๋ฉด S3 ์ปค๋ฅํฐ๊ฐ ์๋ฒฝํด ๋ณด์ ๋๋ค. ๋๋ S3 ์ปค๋ฅํฐ์ ์์ค ์ฝ๋์ ๋ํด ๊น์ด ํ๊ณ ๋ค์๋ค. S3 ์ปค๋ฅํฐ๋ ์ค์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ง ์๊ณ ๊ทธ ๊ฒฝ์ฐ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ํ์ฅํ๊ธฐ ์ด๋ ต๊ธฐ ๋๋ฌธ์ ์ฐ๋ฆฌ ๋ฌธ์ ์ ๋ํ ์๋ฃจ์ ์ผ๋ก ์ด๋ฅผ ์ผ์ถํ๋ค.
ํ์ฌ ์ ์ผํ ๋ฐฉ๋ฒ์ ๋ณต์ํด์๋ ์ ๋๋ ์ธ๊ทธ๋จผํธ๋ฅผ ์ญ์ ํ๊ณ ์ธ๋ฑ์ค๋ฅผ ๋ค์ ๋ง๋๋ ๊ฒ์ ๋๋ค. ์ด๋ฅผ ๋ฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ธํ ์ ๋ณด๊ฐ ๊ณง ์ ๊ณต๋ ๊ฒ์ ๋๋ค. ๋งค์ฐ ํน์ ํ ์คํ์ ์์ ๋ณต์์ ์์ํด์ผ ํ๋ ๊ฒฝ์ฐ ๋ฌธ์ ๋ฅผ ์ฌ์ญ์์ค. ๊ตฌํํ๊ธฐ๊ฐ ์ด๋ ต์ง ์์์ผ ํฉ๋๋ค.
๋ค์ ๋งํ์ง๋ง, S3 ์ปค๋ฅํฐ๋ ๋ณต์ ์ค์ ์๋น์ ์คํ์ ์ ๋๊ธฐํํ ์ ์์ต๋๋ค. ์ฌ์ค, ํ์ฌ Kafka ๋ฒ์ ์์๋ ์์ ์ ์ผ๋ก ๊ทธ๋ ๊ฒ ํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. Mirror Maker 2 ์ ๋ํ @ryannedolan ์์ ๋๋ถ์ ๊ณง ๊ทธ๋ ๊ฒ ํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์๊ฒจ
kafka-backup
์์ ํด๋น API๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด ์ข๊ฒ๋ ์ด ๋ณ๊ฒฝ ์ฌํญ์ ์ด์ ๋ฒ์ ๊ณผ๋ ํธํ๋๋ฉฐ ๊ณงkafka-backup
์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๋ฌธ์๊ฐ ์ ๊ณต๋ ๊ฒ์ ๋๋ค.๋ํ S3 ์ปค๋ฅํฐ๋ S3๋ง ์ง์ํฉ๋๋ค. ํ์ฌ
kafka-backup
๋ ํ์ผ ์์คํ ์ผ๋ก์ ๋ฐฑ์ ๋ง ์ง์ํ๋ฉฐ ์ํ๋ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ต์ข ๋์์ผ๋ก ์ด๋ํ ์ ์์ต๋๋ค. ํ์ํ ๊ฒฝ์ฐ ๋ ๋ง์ ์คํ ๋ฆฌ์ง ๋ฐฑ์๋์ ๋ํ ์ง์์ ์ถ๊ฐํ ๊ณํ์ ๋๋ค.๊ทธ ์ธ์๋ ๋ ํ๋ก์ ํธ๋ ๊ตฌ์กฐ์ ์ผ๋ก ๋งค์ฐ ์ ์ฌํฉ๋๋ค(์ค์ ๋ก S3 ์ปค๋ฅํฐ์ Mirror Maker 2๋
kafka-backup
์ ์๊ฐ์ ์ฃผ์์ต๋๋ค)๋น์ ์ด Strimzi๋ ์ฌ์ฉํ๊ณ ์๋ค๋ ๊ฒ์ ์๋ ํ, ์ฐ๋ฆฌ๋ ๋์ผํ ๋ฐฑ์ ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. Kubernetes ๋ฐ Strimzi์์ Kafka์ Zookeeper์ ์ ์ฒด ๋ฐฑ์ ์ ์ํํ๋ ๋ฐฉ๋ฒ์ ๋ํด ๊ณง ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ์ ์์ฑํ ๊ฒ์ ๋๋ค.
ํญ์ ๊ทธ๋ ๋ฏ์ด ์๊ตฌ ๋ณผ๋ฅจ์ ๋ง์ดํธํ์ญ์์ค. ์ฌ์ด๋์นด ์ปจํ ์ด๋๋ฅผ ์ฌ์ฉํ์ฌ ์ต์ข ๋ชฉ์ ์ง๋ก ์ด๋ํฉ๋๋ค. ์ค๋๋ ์ธ๊ทธ๋จผํธ์ ํด๋น ์ธ๋ฑ์ค๊ฐ ์๋ฃ๋๋ ์ฆ์ ์ญ์ ํ ์ ์์ผ๋ฏ๋ก ์๊ตฌ ๋ณผ๋ฅจ์ ๋น๊ต์ ์๊ฒ ์ ์งํ ์๋ ์์ต๋๋ค. (๋ฌธ์๊ฐ ์จ๋ค)
๋ฉฐ์น ๋ ๊ธฐ๋ค๋ฆฌ๋ฉด ๊ทํ์ ์ฃผ์ ์ค ์ผ๋ถ๋ฅผ ๋ค๋ฃจ๋ ์๊ฐ ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ์ ๊ฒ์ํ๊ฒ ์ต๋๋ค. ์ ์๊ฒ ์ด๋ฉ์ผ์ ์ฐ๊ฑฐ๋ @arashkaffamanesh ์๊ฒ ์ด์์ ์์ฒญํ์ธ์.wink: