Mail.ru ํด๋ผ์šฐ๋“œ ์†”๋ฃจ์…˜ ํ”Œ๋žซํผ์—์„œ ๋‚ด๊ฒฐํ•จ์„ฑ ์›น ์•„ํ‚คํ…์ฒ˜๊ฐ€ ๊ตฌํ˜„๋˜๋Š” ๋ฐฉ๋ฒ•

Mail.ru ํด๋ผ์šฐ๋“œ ์†”๋ฃจ์…˜ ํ”Œ๋žซํผ์—์„œ ๋‚ด๊ฒฐํ•จ์„ฑ ์›น ์•„ํ‚คํ…์ฒ˜๊ฐ€ ๊ตฌํ˜„๋˜๋Š” ๋ฐฉ๋ฒ•

์•ˆ๋…•ํ•˜์„ธ์š”, ํ•˜๋ธŒ๋ฅด! ์ €๋Š” ์‹œ์Šคํ…œ ๊ด€๋ฆฌํŒ€์žฅ์ธ Artem Karamyshev์ž…๋‹ˆ๋‹ค. Mail.Ru ํด๋ผ์šฐ๋“œ ์†”๋ฃจ์…˜(MCS). ์ง€๋‚œํ•ด์—๋Š” ๋งŽ์€ ์‹ ์ œํ’ˆ์ด ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” API ์„œ๋น„์Šค๊ฐ€ ์‰ฝ๊ฒŒ ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๊ณ , ๋‚ด๊ฒฐํ•จ์„ฑ์ด ์žˆ์œผ๋ฉฐ, ์‚ฌ์šฉ์ž ๋ถ€ํ•˜์˜ ๊ธ‰๊ฒฉํ•œ ์ฆ๊ฐ€์— ๋Œ€๋น„ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. ์ €ํฌ ํ”Œ๋žซํผ์€ OpenStack์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌํ˜„๋˜์—ˆ์œผ๋ฉฐ, ์žฅ์•  ํ—ˆ์šฉ ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•ด ์–ด๋–ค ๊ตฌ์„ฑ ์š”์†Œ์˜ ์žฅ์•  ํ—ˆ์šฉ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์•ผ ํ–ˆ๋Š”์ง€ ์•Œ๋ ค๋“œ๋ฆฌ๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. OpenStack์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ œํ’ˆ์„ ๊ฐœ๋ฐœํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ๋Š” ํฅ๋ฏธ๋กœ์šธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ํ”Œ๋žซํผ์˜ ์ „๋ฐ˜์ ์ธ ์žฅ์•  ํ—ˆ์šฉ๋„๋Š” ๊ตฌ์„ฑ ์š”์†Œ์˜ ์•ˆ์ •์„ฑ์— ๋”ฐ๋ผ ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๋Š” ์œ„ํ—˜์„ ์‹๋ณ„ํ•˜๊ณ  ์ข…์‹์‹œํ‚จ ๋ชจ๋“  ์ˆ˜์ค€์„ ์ ์ง„์ ์œผ๋กœ ์‚ดํŽด๋ณผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ์Šคํ† ๋ฆฌ์˜ ๋น„๋””์˜ค ๋ฒ„์ „์€ Uptime 4์ผ์ฐจ ์ปจํผ๋Ÿฐ์Šค์—์„œ ์กฐ์ง๋œ ํ”„๋ ˆ์  ํ…Œ์ด์…˜์˜ ์›๋ณธ ์†Œ์Šค์ž…๋‹ˆ๋‹ค. IT์ˆ˜๋งˆ, ๋‹น์‹ ์€ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค Uptime Community YouTube ์ฑ„๋„์—์„œ.

๋ฌผ๋ฆฌ์  ์•„ํ‚คํ…์ฒ˜ ๋‚ด๊ฒฐํ•จ์„ฑ

MCS ํด๋ผ์šฐ๋“œ์˜ ํผ๋ธ”๋ฆญ ๋ถ€๋ถ„์€ ํ˜„์žฌ 200๊ฐœ์˜ Tier III ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์— ๊ธฐ๋ฐ˜์„ ๋‘๊ณ  ์žˆ์œผ๋ฉฐ, ๋‘ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ ์‚ฌ์ด์—๋Š” ๋ฌผ๋ฆฌ์  ์ˆ˜์ค€์—์„œ ์„œ๋กœ ๋‹ค๋ฅธ ๊ฒฝ๋กœ๋กœ ์˜ˆ์•ฝ๋œ ํ”„๋ผ์ด๋น— ๋‹คํฌ ํŒŒ์ด๋ฒ„๊ฐ€ ์žˆ์œผ๋ฉฐ, ์ฒ˜๋ฆฌ๋Ÿ‰์€ XNUMXGbps์ž…๋‹ˆ๋‹ค. XNUMX๋‹จ๊ณ„ ์ˆ˜์ค€์€ ๋ฌผ๋ฆฌ์  ์ธํ”„๋ผ์— ํ•„์š”ํ•œ ์ˆ˜์ค€์˜ ๋‚ด๊ฒฐํ•จ์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๋‹คํฌ ํŒŒ์ด๋ฒ„๋Š” ๋ฌผ๋ฆฌ์  ์ˆ˜์ค€๊ณผ ๋…ผ๋ฆฌ์  ์ˆ˜์ค€ ๋ชจ๋‘์—์„œ ์˜ˆ์•ฝ๋ฉ๋‹ˆ๋‹ค. ์ฑ„๋„ ์˜ˆ์•ฝ ํ”„๋กœ์„ธ์Šค๋Š” ๋ฐ˜๋ณต์ ์ด์—ˆ์œผ๋ฉฐ, ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ๋„ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋ฐ์ดํ„ฐ ์„ผํ„ฐ ๊ฐ„ ์—ฐ๊ฒฐ์„ ์ง€์†์ ์œผ๋กœ ๊ฐœ์„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ์–ผ๋งˆ ์ „ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ ๊ทผ์ฒ˜์˜ ์šฐ๋ฌผ์—์„œ ์ž‘์—…ํ•˜๋˜ ์ค‘ ๊ตด์‚ญ๊ธฐ๊ฐ€ ํŒŒ์ดํ”„๋ฅผ ๋šซ์—ˆ๋Š”๋ฐ, ์ด ํŒŒ์ดํ”„ ์•ˆ์—์„œ ์ฃผ ๊ด‘์ผ€์ด๋ธ”๊ณผ ๋ฐฑ์—… ๊ด‘์ผ€์ด๋ธ”์ด ๋ชจ๋‘ ๋ฐœ๊ฒฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์™€์˜ ์•ˆ์ „์žฅ์น˜ ํ†ต์‹  ์ฑ„๋„์ด ์–ด๋А ์ˆœ๊ฐ„ ์šฐ๋ฌผ์—์„œ ์ทจ์•ฝํ•œ ๊ฒƒ์œผ๋กœ ๋“œ๋Ÿฌ๋‚ฌ์Šต๋‹ˆ๋‹ค. ๊ทธ ๊ฒฐ๊ณผ ์šฐ๋ฆฌ๋Š” ์ธํ”„๋ผ์˜ ์ผ๋ถ€๋ฅผ ์žƒ์—ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ฒฐ๋ก ์„ ๋‚ด๋ฆฌ๊ณ  ์ธ์ ‘ํ•œ ์šฐ๋ฌผ์„ ๋”ฐ๋ผ ์ถ”๊ฐ€ ๊ด‘ํ•™ ์žฅ์น˜๋ฅผ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์„ ํฌํ•จํ•œ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์กฐ์น˜๋ฅผ ์ทจํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ์„ผํ„ฐ์—๋Š” ํ†ต์‹  ์ œ๊ณต์ž์˜ ์ ‘์† ์ง€์ ์ด ์žˆ์œผ๋ฉฐ, ์šฐ๋ฆฌ๋Š” BGP๋ฅผ ํ†ตํ•ด ์ ‘๋‘์‚ฌ๋ฅผ ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ๋„คํŠธ์›Œํฌ ๋ฐฉํ–ฅ์— ๋Œ€ํ•ด ๊ฐ€์žฅ ์ ํ•ฉํ•œ ๋ฉ”ํŠธ๋ฆญ์ด ์„ ํƒ๋˜์–ด ๋‹ค์–‘ํ•œ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ตœ์ƒ์˜ ์—ฐ๊ฒฐ ํ’ˆ์งˆ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•œ ๊ณต๊ธ‰์—…์ฒด๋ฅผ ํ†ตํ•œ ์—ฐ๊ฒฐ์ด ๋Š์–ด์ง€๋ฉด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ณต๊ธ‰์—…์ฒด๋ฅผ ํ†ตํ•ด ๋ผ์šฐํŒ…์„ ์žฌ๊ตฌ์ถ•ํ•ฉ๋‹ˆ๋‹ค.

๊ณต๊ธ‰์ž๊ฐ€ ์‹คํŒจํ•  ๊ฒฝ์šฐ ์ž๋™์œผ๋กœ ๋‹ค์Œ ๊ณต๊ธ‰์ž๋กœ ์ „ํ™˜๋ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์„ผํ„ฐ ์ค‘ ํ•˜๋‚˜์— ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ, ๋‘ ๋ฒˆ์งธ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์— ์„œ๋น„์Šค์˜ ๋ฏธ๋Ÿฌ ์‚ฌ๋ณธ์„ ๋‘๊ณ  ์ „์ฒด ๋ถ€ํ•˜๋ฅผ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

Mail.ru ํด๋ผ์šฐ๋“œ ์†”๋ฃจ์…˜ ํ”Œ๋žซํผ์—์„œ ๋‚ด๊ฒฐํ•จ์„ฑ ์›น ์•„ํ‚คํ…์ฒ˜๊ฐ€ ๊ตฌํ˜„๋˜๋Š” ๋ฐฉ๋ฒ•
๋ฌผ๋ฆฌ์  ์ธํ”„๋ผ ๋ณต์›๋ ฅ

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ˆ˜์ค€ ๋‚ด๊ฒฐํ•จ์„ฑ์„ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ

๋‹น์‚ฌ์˜ ์„œ๋น„์Šค๋Š” ๋‹ค์–‘ํ•œ ์˜คํ”ˆ์†Œ์Šค ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์ถ•๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์—‘์‚ฌBGP โ€” BGP ๊ธฐ๋ฐ˜ ๋™์  ๋ผ์šฐํŒ… ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š” ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด๋ฅผ ๊ด‘๋ฒ”์œ„ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ API์— ์ ‘๊ทผํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” ํ™”์ดํŠธ IP ์ฃผ์†Œ๋ฅผ ๊ด‘๊ณ ํ•ฉ๋‹ˆ๋‹ค.

HAProxy โ€” OSI ๋ชจ๋ธ์˜ ๋‹ค์–‘ํ•œ ์ˆ˜์ค€์—์„œ ๋งค์šฐ ์œ ์—ฐํ•œ ํŠธ๋ž˜ํ”ฝ ๋ถ„์‚ฐ ๊ทœ์น™์„ โ€‹โ€‹๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๊ณ ๋ถ€ํ•˜ ๋ถ„์‚ฐ ์žฅ์น˜์ž…๋‹ˆ๋‹ค. HAProxy๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค, API ์„œ๋น„์Šค, ์›น ์„œ๋น„์Šค, ๋‚ด๋ถ€ ํ”„๋กœ์ ํŠธ ๋“ฑ ๋ชจ๋“  ์„œ๋น„์Šค์˜ ๋ถ€ํ•˜๋ฅผ ๋ถ„์‚ฐํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์ด HAProxy ๋’ค์— ์žˆ์Šต๋‹ˆ๋‹ค.

API ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ โ€” Python์œผ๋กœ ์ž‘์„ฑ๋œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ, ์‚ฌ์šฉ์ž๊ฐ€ ์ด๋ฅผ ํ†ตํ•ด ์ž์‹ ์˜ ์ธํ”„๋ผ์™€ ์„œ๋น„์Šค๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทผ๋กœ์ž ์‹ ์ฒญ (์ดํ•˜ ๊ฐ„๋‹จํžˆ ์›Œ์ปค๋ผ๊ณ  ํ•จ) - OpenStack ์„œ๋น„์Šค์—์„œ ์ด๊ฒƒ์€ API ๋ช…๋ น์ด ์ธํ”„๋ผ๋กœ ์ „์†ก๋  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์ธํ”„๋ผ ๋ฐ๋ชฌ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋””์Šคํฌ ์ƒ์„ฑ์€ ์ž‘์—…์ž์—์„œ ๋ฐœ์ƒํ•˜๊ณ , ์ƒ์„ฑ ์š”์ฒญ์€ API ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

OpenStack ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ‘œ์ค€ ์•„ํ‚คํ…์ฒ˜

OpenStack์„ ์œ„ํ•ด ๊ฐœ๋ฐœ๋œ ๋Œ€๋ถ€๋ถ„์˜ ์„œ๋น„์Šค๋Š” ๋‹จ์ผ ํŒจ๋Ÿฌ๋‹ค์ž„์„ ๋”ฐ๋ฅด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์„œ๋น„์Šค๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ API์™€ ์›Œ์ปค(๋ฐฑ์—”๋“œ ์ˆ˜ํ–‰์ž)์˜ ๋‘ ๋ถ€๋ถ„์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ API๋Š” Python์œผ๋กœ ์ž‘์„ฑ๋œ WSGI ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ, ๋…๋ฆฝ ์‹คํ–‰ํ˜• ํ”„๋กœ์„ธ์Šค(๋ฐ๋ชฌ)๋กœ ์‹คํ–‰๋˜๊ฑฐ๋‚˜ Nginx, Apache์™€ ๊ฐ™์€ ๊ธฐ์„ฑ ์›น ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. API๋Š” ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์ž‘์—…์ž ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์‹คํ–‰์„ ์œ„ํ•œ ์ถ”๊ฐ€ ์ง€์นจ์„ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ์ „์†ก์€ ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค(๋ณดํ†ต RabbitMQ)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฃจ์–ด์ง€๋ฉฐ, ๋‹ค๋ฅธ ๋ธŒ๋กœ์ปค๋Š” ์ง€์›์ด ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค. ๋ฉ”์‹œ์ง€๊ฐ€ ๋ธŒ๋กœ์ปค์— ๋„๋‹ฌํ•˜๋ฉด ์ž‘์—…์ž๊ฐ€ ์ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ , ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์ด ํŒจ๋Ÿฌ๋‹ค์ž„์€ ์‹คํŒจ์˜ ๊ณตํ†ต๋œ ์ง€์ , ์ฆ‰ RabbitMQ์™€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ RabbitMQ๋Š” ํ•˜๋‚˜์˜ ์„œ๋น„์Šค ๋‚ด์— ๊ฒฉ๋ฆฌ๋˜์–ด ์žˆ์œผ๋ฉฐ, ์ด๋ก ์ ์œผ๋กœ๋Š” ๊ฐ ์„œ๋น„์Šค๋งˆ๋‹ค ๊ฐœ๋ณ„์ ์œผ๋กœ ์ ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ MCS์—์„œ๋Š” ์ด๋Ÿฌํ•œ ์„œ๋น„์Šค๋ฅผ ์ตœ๋Œ€ํ•œ ๋ถ„๋ฆฌํ•˜๊ณ , ๊ฐ ํ”„๋กœ์ ํŠธ๋งˆ๋‹ค ๋ณ„๋„์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ๋ณ„๋„์˜ RabbitMQ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ด๋Ÿฐ ์ ‘๊ทผ ๋ฐฉ์‹์ด ์ข‹์€ ์ด์œ ๋Š” ์ทจ์•ฝํ•œ ์ง€์ ์—์„œ ์‚ฌ๊ณ ๊ฐ€ ๋ฐœ์ƒํ•˜๋”๋ผ๋„ ์„œ๋น„์Šค ์ „์ฒด๊ฐ€ ์ค‘๋‹จ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ผ๋ถ€๋งŒ ์ค‘๋‹จ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์›Œ์ปค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ˆ˜์— ์ œํ•œ์ด ์—†์œผ๋ฏ€๋กœ API๋ฅผ ๋ฐธ๋Ÿฐ์„œ ๋’ค์—์„œ ์ˆ˜ํ‰์ ์œผ๋กœ ์‰ฝ๊ฒŒ ํ™•์žฅํ•˜์—ฌ ์„ฑ๋Šฅ๊ณผ ๋‚ด๊ฒฐํ•จ์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ผ๋ถ€ ์„œ๋น„์Šค์—๋Š” ์„œ๋น„์Šค ๋‚ด ์กฐ์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, API์™€ ์ž‘์—…์ž ๊ฐ„์— ๋ณต์žกํ•œ ์ˆœ์ฐจ์  ์ž‘์—…์ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ Redis, Memcache ๋“ฑ๊ณผ ๊ฐ™์€ ํด๋Ÿฌ์Šคํ„ฐ ์‹œ์Šคํ…œ์ธ ๋‹จ์ผ ์กฐ์ • ์„ผํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•œ ์ž‘์—…์ž๊ฐ€ ๋‹ค๋ฅธ ์ž‘์—…์ž์—๊ฒŒ ํ•ด๋‹น ์ž‘์—…์ด ์ž์‹ ์—๊ฒŒ ํ• ๋‹น๋˜์—ˆ์Œ์„ ์•Œ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค("์ œ๋ฐœ ๋งก์ง€ ๋งˆ์„ธ์š”"). ์šฐ๋ฆฌ๋Š” etcd๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๊ทผ๋กœ์ž๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์ ๊ทน์ ์œผ๋กœ ์†Œํ†ตํ•˜๊ณ , ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ •๋ณด๋ฅผ ์“ฐ๊ณ  ์ฝ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ๋Š” ๋ฉ€ํ‹ฐ ๋งˆ์Šคํ„ฐ ํด๋Ÿฌ์Šคํ„ฐ์— ์žˆ๋Š” mariadb๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๊ณ ์ „์ ์ธ ๋‹จ์ผ ์„œ๋น„์Šค๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ˆ˜์šฉ๋˜๋Š” OpenStack ๋ฐฉ์‹์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ํ™•์žฅ์„ฑ๊ณผ ๋‚ด๊ฒฐํ•จ์„ฑ ๋ฐฉ๋ฒ•์ด ๋งค์šฐ ๋ช…ํ™•ํ•œ ํ์‡„ ์‹œ์Šคํ…œ์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, API ์žฅ์•  ํ—ˆ์šฉ์„ฑ์„ ๋ณด์žฅํ•˜๋ ค๋ฉด API ์•ž์— ๋ฐธ๋Ÿฐ์„œ๋ฅผ ์„ค์น˜ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๊ทผ๋กœ์ž ์ˆ˜๋ฅผ ๋Š˜๋ฆฌ๋ฉด ๊ทผ๋กœ์ž ๊ทœ๋ชจ๋„ ์ปค์ง„๋‹ค.

์ด ์ „์ฒด ์ฒด๊ณ„์˜ ์•ฝ์ ์€ RabbitMQ์™€ MariaDB์ž…๋‹ˆ๋‹ค. ์ด๋“ค์˜ ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•ด์„œ๋Š” ๋ณ„๋„์˜ ๊ธฐ์‚ฌ๋กœ ๋‹ค๋ฃฐ ๋งŒํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธ€์—์„œ๋Š” API ์žฅ์•  ํ—ˆ์šฉ์„ฑ์— ๋Œ€ํ•ด ์ค‘์ ์ ์œผ๋กœ ๋‹ค๋ฃจ๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.

Mail.ru ํด๋ผ์šฐ๋“œ ์†”๋ฃจ์…˜ ํ”Œ๋žซํผ์—์„œ ๋‚ด๊ฒฐํ•จ์„ฑ ์›น ์•„ํ‚คํ…์ฒ˜๊ฐ€ ๊ตฌํ˜„๋˜๋Š” ๋ฐฉ๋ฒ•
์˜คํ”ˆ์Šคํƒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์•„ํ‚คํ…์ฒ˜. ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ์˜ ๊ท ํ˜• ๋ฐ ์žฅ์•  ํ—ˆ์šฉ

ExaBGP๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ HAProxy ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ๋ฅผ ์žฅ์•  ํ—ˆ์šฉ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ค๊ธฐ

API๋ฅผ ํ™•์žฅ์„ฑ, ์†๋„, ๋‚ด๊ฒฐํ•จ์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด API ์•ž์— ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ๋ฅผ ๋ฐฐ์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” HAProxy๋ฅผ ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์ œ ์ƒ๊ฐ์—๋Š” ์ด ์†”๋ฃจ์…˜์€ ์—ฌ๋Ÿฌ OSI ๋ ˆ๋ฒจ์˜ ๊ท ํ˜• ์กฐ์ •, ๊ด€๋ฆฌ ์ธํ„ฐํŽ˜์ด์Šค, ์œ ์—ฐ์„ฑ ๋ฐ ํ™•์žฅ์„ฑ, ๋‹ค์–‘ํ•œ ๊ท ํ˜• ์กฐ์ • ๋ฐฉ๋ฒ•, ์„ธ์…˜ ํ…Œ์ด๋ธ” ์ง€์› ๋“ฑ ์ž‘์—…์— ํ•„์š”ํ•œ ๋ชจ๋“  ํŠน์„ฑ์„ ๊ฐ–์ถ”๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ€์žฅ ๋จผ์ € ํ•ด๊ฒฐํ•ด์•ผ ํ•  ๋ฌธ์ œ๋Š” ๋ฐธ๋Ÿฐ์„œ ์ž์ฒด์˜ ๋‚ด๊ฒฐํ•จ์„ฑ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฐธ๋Ÿฐ์„œ๋ฅผ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋„ ์žฅ์•  ์ง€์ ์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋ฐธ๋Ÿฐ์„œ๊ฐ€ ๊ณ ์žฅ๋‚˜๋ฉด ์„œ๋น„์Šค๊ฐ€ ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฐ ์ผ์ด ์ผ์–ด๋‚˜์ง€ ์•Š๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด ExaBGP์™€ ํ•จ๊ป˜ HAProxy๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

ExaBGP๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์„œ๋น„์Šค ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ HAProxy๊ฐ€ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ BGP์—์„œ HAProxy ์„œ๋น„์Šค๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค.

ExaBGP+HAProxy ๊ณ„ํš

  1. ์„ธ ๋Œ€์˜ ์„œ๋ฒ„์— ํ•„์š”ํ•œ ์†Œํ”„ํŠธ์›จ์–ด์ธ ExaBGP์™€ HAProxy๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.
  2. ๊ฐ ์„œ๋ฒ„์— ๋ฃจํ”„๋ฐฑ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  3. ์„ธ ์„œ๋ฒ„ ๋ชจ๋‘์—์„œ ์ด ์ธํ„ฐํŽ˜์ด์Šค์— ๋™์ผํ•œ ํฐ์ƒ‰ IP ์ฃผ์†Œ๋ฅผ ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค.
  4. ํฐ์ƒ‰ IP ์ฃผ์†Œ๋Š” ExaBGP๋ฅผ ํ†ตํ•ด ์ธํ„ฐ๋„ท์— ๊ณต๊ฐœ๋ฉ๋‹ˆ๋‹ค.

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

HAProxy ์ž‘์—…์ด๋‚˜ ์„œ๋ฒ„ ์žฅ์• ์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ ExaBGP๋Š” ๊ฒฝ๋กœ ๊ด‘๊ณ ๋ฅผ ์ค‘๋‹จํ•˜๊ณ  ํŠธ๋ž˜ํ”ฝ์ด ์›ํ™œํ•˜๊ฒŒ ๋‹ค๋ฅธ ์„œ๋ฒ„๋กœ ์ „ํ™˜๋ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๋ฐฉ์‹์œผ๋กœ ๋ฐธ๋Ÿฐ์„œ์˜ ๋‚ด๊ฒฐํ•จ์„ฑ์„ ๋‹ฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

Mail.ru ํด๋ผ์šฐ๋“œ ์†”๋ฃจ์…˜ ํ”Œ๋žซํผ์—์„œ ๋‚ด๊ฒฐํ•จ์„ฑ ์›น ์•„ํ‚คํ…์ฒ˜๊ฐ€ ๊ตฌํ˜„๋˜๋Š” ๋ฐฉ๋ฒ•
HAProxy ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ ์žฅ์•  ํ—ˆ์šฉ

์ด ๊ณ„ํš์€ ๋ถˆ์™„์ „ํ•œ ๊ฒƒ์œผ๋กœ ๋“œ๋Ÿฌ๋‚ฌ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” HAProxy๋ฅผ ์˜ˆ์•ฝํ•˜๋Š” ๋ฒ•์„ ๋ฐฐ์› ์ง€๋งŒ, ์„œ๋น„์Šค ๋‚ด์—์„œ ๋ถ€ํ•˜๋ฅผ ๋ถ„์‚ฐํ•˜๋Š” ๋ฒ•์„ ๋ฐฐ์šฐ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ์ด ๊ณ„ํš์„ ์กฐ๊ธˆ ํ™•์žฅํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํฐ์ƒ‰ IP ์ฃผ์†Œ ๊ฐ„์˜ ๊ท ํ˜•์„ ๋งž์ถ”๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ์ „ํ™˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

DNS ๊ธฐ๋ฐ˜ ๋ฐธ๋Ÿฐ์‹ฑ ๋ฐ BGP

HAProxy ์•ž์˜ ๋ถ€ํ•˜ ๋ถ„์‚ฐ ๋ฌธ์ œ๋Š” ์•„์ง ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ์ฒ˜๋Ÿผ ์•„์ฃผ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

3๊ฐœ์˜ ์„œ๋ฒ„๋ฅผ ๊ท ํ˜• ์žˆ๊ฒŒ ๊ด€๋ฆฌํ•˜๋ ค๋ฉด XNUMX๊ฐœ์˜ ํฐ์ƒ‰ IP ์ฃผ์†Œ์™€ ์˜ค๋ž˜๋œ DNS๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฐ ์ฃผ์†Œ๋Š” ๊ฐ HAProxy์˜ ๋ฃจํ”„๋ฐฑ ์ธํ„ฐํŽ˜์ด์Šค์—์„œ ์ •์˜๋˜๊ณ  ์ธํ„ฐ๋„ท์— ๊ณต๊ฐœ๋ฉ๋‹ˆ๋‹ค.

OpenStack์€ ์„œ๋น„์Šค ์นดํƒˆ๋กœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด ํŠน์ • ์„œ๋น„์Šค์˜ API ์—”๋“œํฌ์ธํŠธ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋””๋ ‰ํ† ๋ฆฌ์— ๋„๋ฉ”์ธ ์ด๋ฆ„์ธ public.infra.mail.ru๋ฅผ ๋“ฑ๋กํ•˜๋Š”๋ฐ, ์ด ์ด๋ฆ„์€ ์„ธ ๊ฐœ์˜ ์„œ๋กœ ๋‹ค๋ฅธ IP ์ฃผ์†Œ๋กœ DNS๋ฅผ ํ†ตํ•ด ํ™•์ธ๋ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ DNS๋ฅผ ํ†ตํ•ด ์„ธ ๊ฐœ์˜ ์ฃผ์†Œ ์‚ฌ์ด์— ๋ถ€ํ•˜๊ฐ€ ๋ถ„์‚ฐ๋ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ํ™”์ดํŠธ IP ์ฃผ์†Œ๋ฅผ ๋ฐœํ‘œํ•  ๋•Œ ์„œ๋ฒ„ ์„ ํƒ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ œ์–ดํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์•„์ง์€ ๊ท ํ˜•์ด ๋งž์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ IP ์ฃผ์†Œ์˜ ์„ ์ž„์„ฑ์— ๋”ฐ๋ผ ํ•˜๋‚˜์˜ ์„œ๋ฒ„๋งŒ ์„ ํƒ๋˜๊ณ , BGP์— ๋ฉ”ํŠธ๋ฆญ์ด ์ง€์ •๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‚˜๋จธ์ง€ ๋‘ ์„œ๋ฒ„๋Š” ์œ ํœด ์ƒํƒœ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๋‹ค์–‘ํ•œ ์ธก์ • ํ•ญ๋ชฉ์„ ์‚ฌ์šฉํ•˜์—ฌ ExaBGP๋ฅผ ํ†ตํ•ด ๊ฒฝ๋กœ๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ๋ฐธ๋Ÿฐ์„œ๋Š” ์„ธ ๊ฐœ์˜ ํฐ์ƒ‰ IP ์ฃผ์†Œ๋ฅผ ๋ชจ๋‘ ๋ฐœํ‘œํ•˜์ง€๋งŒ, ์ด ๋ฐธ๋Ÿฐ์„œ์˜ ์ฃผ์š” ์ฃผ์†Œ ์ค‘ ํ•˜๋‚˜๋Š” ์ตœ์†Œ ๋ฉ”ํŠธ๋ฆญ์œผ๋กœ ๋ฐœํ‘œ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์„ธ ๊ฐœ์˜ ๋ฐธ๋Ÿฐ์„œ๊ฐ€ ๋ชจ๋‘ ์ž‘๋™ํ•˜๋Š” ๋™์•ˆ ์ฒซ ๋ฒˆ์งธ IP ์ฃผ์†Œ์— ๋Œ€ํ•œ ์š”์ฒญ์€ ์ฒซ ๋ฒˆ์งธ ๋ฐธ๋Ÿฐ์„œ๋กœ ์ด๋™ํ•˜๊ณ , ๋‘ ๋ฒˆ์งธ IP ์ฃผ์†Œ์— ๋Œ€ํ•œ ์š”์ฒญ์€ ๋‘ ๋ฒˆ์งธ ๋ฐธ๋Ÿฐ์„œ๋กœ ์ด๋™ํ•˜๊ณ , ์„ธ ๋ฒˆ์งธ IP ์ฃผ์†Œ์— ๋Œ€ํ•œ ์š”์ฒญ์€ ์„ธ ๋ฒˆ์งธ ๋ฐธ๋Ÿฐ์„œ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

๋ฐธ๋Ÿฐ์„œ ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋‹ค์šด๋˜๋ฉด ์–ด๋–ป๊ฒŒ ๋˜๋‚˜์š”? ๋ฐธ๋Ÿฐ์„œ ์ค‘ ํ•˜๋‚˜์— ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ํ•ด๋‹น ๋ฐธ๋Ÿฐ์„œ์˜ ์ฃผ ์ฃผ์†Œ๊ฐ€ ๋‹ค๋ฅธ ๋‘ ๊ฐœ์— ๊ณ„์† ๊ด‘๊ณ ๋˜๊ณ , ํŠธ๋ž˜ํ”ฝ์€ ๋‘ ๋ฐธ๋Ÿฐ์„œ ๊ฐ„์— ์žฌ๋ถ„๋ฐฐ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๋Š” DNS๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž์—๊ฒŒ ์—ฌ๋Ÿฌ ๊ฐœ์˜ IP ์ฃผ์†Œ๋ฅผ ๋™์‹œ์— ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. DNS์™€ ๋‹ค์–‘ํ•œ ๋ฉ”ํŠธ๋ฆญ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ถ€ํ•˜๋ฅผ ๋ถ„์‚ฐํ•จ์œผ๋กœ์จ ์„ธ ๊ฐœ์˜ ๋ฐธ๋Ÿฐ์„œ ๋ชจ๋‘์— ๋ถ€ํ•˜๊ฐ€ ๊ท ๋“ฑํ•˜๊ฒŒ ๋ถ„์‚ฐ๋ฉ๋‹ˆ๋‹ค. ๋™์‹œ์— ์šฐ๋ฆฌ๋Š” ๋‚ด๊ฒฐํ•จ์„ฑ์„ ์žƒ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Mail.ru ํด๋ผ์šฐ๋“œ ์†”๋ฃจ์…˜ ํ”Œ๋žซํผ์—์„œ ๋‚ด๊ฒฐํ•จ์„ฑ ์›น ์•„ํ‚คํ…์ฒ˜๊ฐ€ ๊ตฌํ˜„๋˜๋Š” ๋ฐฉ๋ฒ•
DNS + BGP ๊ธฐ๋ฐ˜ HAProxy ๋ถ€ํ•˜ ๋ถ„์‚ฐ

ExaBGP์™€ HAProxy ๊ฐ„์˜ ์ƒํ˜ธ ์ž‘์šฉ

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

๋”ฐ๋ผ์„œ ์ด์ „ ๋ฐฉ์‹์„ ํ™•์žฅํ•˜์—ฌ ExaBGP์™€ HAProxy ๊ฐ„์˜ ํ•˜ํŠธ๋น„ํŠธ๋ฅผ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ExaBGP์™€ HAProxy ๊ฐ„์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ์†Œํ”„ํŠธ์›จ์–ด๋กœ ๊ตฌํ˜„ํ•œ ๊ฒƒ์œผ๋กœ, ExaBGP๋Š” ์‚ฌ์šฉ์ž ์ •์˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ƒํƒœ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด ExaBGP ๊ตฌ์„ฑ์—์„œ HAProxy ์ƒํƒœ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ ๊ฒ€์‚ฌ๊ธฐ๋ฅผ ๊ตฌ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ, HAProxy์—์„œ ์ƒํƒœ ๋ฐฑ์—”๋“œ๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ  ExaBGP ์ธก์—์„œ ๊ฐ„๋‹จํ•œ GET ์š”์ฒญ์œผ๋กœ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ๊ณต์ง€๊ฐ€ ๋” ์ด์ƒ ๋‚˜์˜ค์ง€ ์•Š๋Š”๋‹ค๋ฉด HAProxy๊ฐ€ ์‹คํ–‰๋˜์ง€ ์•Š์„ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์œผ๋ฏ€๋กœ ๊ณต์ง€ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

Mail.ru ํด๋ผ์šฐ๋“œ ์†”๋ฃจ์…˜ ํ”Œ๋žซํผ์—์„œ ๋‚ด๊ฒฐํ•จ์„ฑ ์›น ์•„ํ‚คํ…์ฒ˜๊ฐ€ ๊ตฌํ˜„๋˜๋Š” ๋ฐฉ๋ฒ•
HAProxy ์ƒํƒœ ์ ๊ฒ€

HAProxy ํ”ผ์–ด: ์„ธ์…˜ ๋™๊ธฐํ™”

๋‹ค์Œ์œผ๋กœ ํ•ด์•ผ ํ•  ์ผ์€ ์„ธ์…˜์„ ๋™๊ธฐํ™”ํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋ถ„์‚ฐ ๋ฐธ๋Ÿฐ์„œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํด๋ผ์ด์–ธํŠธ ์„ธ์…˜์— ๋Œ€ํ•œ ์ •๋ณด ์ €์žฅ์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์ด ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ HAProxy๋Š” Peers ๊ธฐ๋Šฅ ๋•๋ถ„์— ์ด๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ช‡ ์•ˆ ๋˜๋Š” ๋ฐธ๋Ÿฐ์„œ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. Peers ๊ธฐ๋Šฅ์ด๋ž€ ์„œ๋กœ ๋‹ค๋ฅธ HAProxy ํ”„๋กœ์„ธ์Šค ๊ฐ„์— ์„ธ์…˜ ํ…Œ์ด๋ธ”์„ ์ „์†กํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

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

HAProxy๋Š” ์ด ๋ฉ”์ปค๋‹ˆ์ฆ˜์˜ ํด๋ผ์ด์–ธํŠธ ์„ธ์…˜์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ์Šคํ‹ฑ ํ…Œ์ด๋ธ”์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋“ค์€ ํด๋ผ์ด์–ธํŠธ์˜ ์›๋ž˜ IP ์ฃผ์†Œ, ์„ ํƒ๋œ ๋Œ€์ƒ ์ฃผ์†Œ(๋ฐฑ์—”๋“œ) ๋ฐ ์ผ๋ถ€ ์„œ๋น„์Šค ์ •๋ณด๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์Šคํ‹ฑ ํ…Œ์ด๋ธ”์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์†Œ์Šค IP + ๋Œ€์ƒ IP ์Œ์„ ์ €์žฅํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋ฉฐ, ๋ผ์šด๋“œ ๋กœ๋นˆ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ ๋ชจ๋“œ์™€ ๊ฐ™์ด ๋‹ค๋ฅธ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ๋กœ ์ „ํ™˜ํ•  ๋•Œ ์‚ฌ์šฉ์ž ์„ธ์…˜ ์ปจํ…์ŠคํŠธ๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์—†๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ํŠนํžˆ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

์Šคํ‹ฑ ํ…Œ์ด๋ธ”์ด ์„œ๋กœ ๋‹ค๋ฅธ HAProxy ํ”„๋กœ์„ธ์Šค(๋ฐธ๋Ÿฐ์‹ฑ์ด ๋ฐœ์ƒํ•˜๋Š” ํ”„๋กœ์„ธ์Šค) ์‚ฌ์ด๋ฅผ ์ด๋™ํ•˜๋„๋ก ๊ฐ€๋ฅด์น˜๋ฉด ๋ฐธ๋Ÿฐ์„œ๊ฐ€ ๋‹จ์ผ ์Šคํ‹ฑ ํ…Œ์ด๋ธ” ํ’€๋กœ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ฐธ๋Ÿฐ์„œ ์ค‘ ํ•˜๋‚˜์— ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•ด๋„ ํด๋ผ์ด์–ธํŠธ ๋„คํŠธ์›Œํฌ๋ฅผ ์›ํ™œํ•˜๊ฒŒ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ ์„ธ์…˜ ์ž‘์—…์€ ์ด์ „์— ์„ ํƒํ•œ ๋™์ผํ•œ ๋ฐฑ์—”๋“œ์—์„œ ๊ณ„์† ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค.

์˜ฌ๋ฐ”๋ฅธ ์ž‘๋™์„ ์œ„ํ•ด์„œ๋Š” ์„ธ์…˜์ด ์„ค์ •๋œ ๋ฐธ๋Ÿฐ์„œ์˜ ์†Œ์Šค IP ์ฃผ์†Œ๋ฅผ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ, ์ด๋Š” ๋ฃจํ”„๋ฐฑ ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋™์  ์ฃผ์†Œ์ž…๋‹ˆ๋‹ค.

ํ”ผ์–ด์˜ ์˜ฌ๋ฐ”๋ฅธ ์ž‘๋™์€ ํŠน์ • ์กฐ๊ฑด ํ•˜์—์„œ๋งŒ ๋‹ฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, TCP ์„ธ์…˜์ด ๋Š์–ด์งˆ ์‹œ๊ฐ„์ด ์—†๋„๋ก TCP ํƒ€์ž„์•„์›ƒ์ด ์ถฉ๋ถ„ํžˆ ์ปค์•ผ ํ•˜๊ฑฐ๋‚˜ ์ „ํ™˜์ด ์ถฉ๋ถ„ํžˆ ๋นจ๋ผ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์›ํ™œํ•˜๊ฒŒ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๋™์ผํ•œ ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ์ถ•๋œ IaaS ์„œ๋น„์Šค๋ฅผ ๋ณด์œ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ OpenStack์„ ์œ„ํ•œ ์„œ๋น„์Šค๋กœ์„œ์˜ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ์˜ฅํƒ€๋น„์•„๋ผ๊ณ  ๋ถˆ๋ฆฝ๋‹ˆ๋‹ค. ์ด๋Š” ๋‘ ๊ฐœ์˜ HAProxy ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋ฉฐ ๊ธฐ๋ณธ ํ”ผ์–ด ์ง€์› ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ”๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ์ด ์„œ๋น„์Šค์—์„œ ๋งค์šฐ ๋›ฐ์–ด๋‚˜๋‹ค๋Š” ๊ฒƒ์„ ์ž…์ฆํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ทธ๋ฆผ์€ ์„ธ ๊ฐœ์˜ HAProxy ์ธ์Šคํ„ด์Šค ๊ฐ„ ํ”ผ์–ด ํ…Œ์ด๋ธ”์˜ ์ด๋™์„ ๊ฐœ๋žต์ ์œผ๋กœ ๋ณด์—ฌ์ฃผ๋ฉฐ, ์ด๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๊ตฌ์„ฑ์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

Mail.ru ํด๋ผ์šฐ๋“œ ์†”๋ฃจ์…˜ ํ”Œ๋žซํผ์—์„œ ๋‚ด๊ฒฐํ•จ์„ฑ ์›น ์•„ํ‚คํ…์ฒ˜๊ฐ€ ๊ตฌํ˜„๋˜๋Š” ๋ฐฉ๋ฒ•
HAProxy ํ”ผ์–ด(์„ธ์…˜ ๋™๊ธฐํ™”)

๋™์ผํ•œ ๋ฐฉ์‹์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒฝ์šฐ ์ž‘๋™ ๋ฐฉ์‹์„ ์ฃผ์˜ ๊นŠ๊ฒŒ ํ…Œ์ŠคํŠธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. 100%์˜ ๊ฒฝ์šฐ์— ๋™์ผํ•œ ํ˜•ํƒœ๋กœ ์ž‘๋™ํ•œ๋‹ค๋Š” ๊ฒƒ์€ ์‚ฌ์‹ค์ด ์•„๋‹™๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ ์–ด๋„ ํด๋ผ์ด์–ธํŠธ์˜ ์†Œ์Šค IP๋ฅผ ๊ธฐ์–ตํ•ด์•ผ ํ•  ๋•Œ ์Šคํ‹ฑ ํ…Œ์ด๋ธ”์„ ์žƒ์–ด๋ฒ„๋ฆฌ์ง€๋Š” ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋™์ผํ•œ ํด๋ผ์ด์–ธํŠธ์˜ ๋™์‹œ ์š”์ฒญ ์ˆ˜ ์ œํ•œ

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

์–ด๋–ค ์‹์œผ๋กœ๋“  ์ถ”๊ฐ€์ ์ธ ๋ณดํ˜ธ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ํ™•์‹คํ•œ ํ•ด๊ฒฐ์ฑ…์€ API์— ๋Œ€ํ•œ ์š”์ฒญ ์ˆ˜๋ฅผ ์ œํ•œํ•˜๊ณ  ์•…์„ฑ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ํ”„๋กœ์„ธ์„œ ์‹œ๊ฐ„์„ ๋‚ญ๋น„ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์ œํ•œ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์šฐ๋ฆฌ๋Š” ๋™์ผํ•œ ์Šคํ‹ฑ ํ…Œ์ด๋ธ”์„ ์‚ฌ์šฉํ•˜์—ฌ HAProxy๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์„ฑ๋œ ๋น„์œจ ์ œํ•œ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ œํ•œ์€ ๋งค์šฐ ๊ฐ„๋‹จํ•˜๊ฒŒ ์„ค์ •๋˜๋ฉฐ API์— ๋Œ€ํ•œ ์š”์ฒญ ์ˆ˜์— ๋”ฐ๋ผ ์‚ฌ์šฉ์ž๋ฅผ ์ œํ•œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์š”์ฒญ์ด ์ด๋ฃจ์–ด์ง€๋Š” ์†Œ์Šค IP๋ฅผ ๊ธฐ์–ตํ•˜๊ณ  ํ•œ ์‚ฌ์šฉ์ž์˜ ๋™์‹œ ์š”์ฒญ ์ˆ˜๋ฅผ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก , ์šฐ๋ฆฌ๋Š” ๊ฐ ์„œ๋น„์Šค์— ๋Œ€ํ•œ ํ‰๊ท  API ๋ถ€ํ•˜ ํ”„๋กœํ•„์„ ๊ณ„์‚ฐํ•˜๊ณ  ๊ทธ ๊ฐ’์˜ ์•ฝ 10๋ฐฐ๋กœ ํ•œ๋„๋ฅผ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ƒํ™ฉ์„ ๊ณ„์† ๋ฉด๋ฐ€ํžˆ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ์ตœ์‹  ๋™ํ–ฅ์„ ํŒŒ์•…ํ•ฉ๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ๋Š” ์–ด๋–ป๊ฒŒ ๋ณด์ผ๊นŒ์š”? ์ž๋™ ํ™•์žฅ์„ ์œ„ํ•ด ํ•ญ์ƒ ๋‹น์‚ฌ์˜ API๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ณ ๊ฐ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ์•„์นจ์— ๊ฐ€๊นŒ์›Œ์งˆ์ˆ˜๋ก 1000~XNUMX๊ฐœ์˜ ๊ฐ€์ƒ ๋จธ์‹ ์„ ๋งŒ๋“ค๊ณ  ์ €๋…์— ๊ฐ€๊นŒ์›Œ์งˆ์ˆ˜๋ก ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. OpenStack์˜ ๊ฒฝ์šฐ PaaS ์„œ๋น„์Šค๋ฅผ ํฌํ•จํ•œ ๊ฐ€์ƒ ๋จธ์‹ ์„ ๋งŒ๋“ค๋ ค๋ฉด ์ตœ์†Œ XNUMX๊ฐœ์˜ API ์š”์ฒญ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์„œ๋น„์Šค ๊ฐ„์˜ ์ƒํ˜ธ์ž‘์šฉ๋„ API๋ฅผ ํ†ตํ•ด ์ด๋ฃจ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฐ ์‹์œผ๋กœ ์—…๋ฌด๋ฅผ ๋ฐ”๊พธ๋Š” ๊ฒƒ์€ ์ƒ๋‹นํ•œ ์ŠคํŠธ๋ ˆ์Šค๋ฅผ ์œ ๋ฐœํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด ๋ถ€ํ•˜๋ฅผ ํ‰๊ฐ€ํ•˜๊ณ , ๋งค์ผ ์ตœ๋Œ€ ๋ถ€ํ•˜๋Ÿ‰์„ ์ˆ˜์ง‘ํ•˜์—ฌ 10๋ฐฐ๋กœ ๋Š˜๋ ธ๊ณ , ์ด๊ฒƒ์ด ์šฐ๋ฆฌ์˜ ์š”๊ธˆ ํ•œ๋„๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ํ•ญ์ƒ ์ตœ์‹  ๋™ํ–ฅ์„ ํŒŒ์•…ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ข…์ข… ๋ด‡๊ณผ ์Šค์บ๋„ˆ๊ฐ€ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ CGA ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋ ค๊ณ  ํ•˜๋Š” ๊ฒƒ์„ ๋ณด๊ณ , ์šฐ๋ฆฌ๋Š” ์ ๊ทน์ ์œผ๋กœ ์ด๋ฅผ ์ž˜๋ผ๋ƒ…๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž๊ฐ€ ๋ˆˆ์น˜์ฑ„์ง€ ๋ชปํ•˜๊ฒŒ ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐฉ๋ฒ•

๋˜ํ•œ ์ฝ”๋“œ ๋ฐฐํฌ ํ”„๋กœ์„ธ์Šค ์ˆ˜์ค€์—์„œ๋„ ์žฅ์•  ํ—ˆ์šฉ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ๋กค์•„์›ƒ ์ค‘์—๋Š” ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์„œ๋น„์Šค ๊ฐ€์šฉ์„ฑ์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์€ ์ตœ์†Œํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ €ํฌ๋Š” ์„œ๋น„์Šค๋ฅผ ์ง€์†์ ์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ์ฝ”๋“œ๋ฒ ์ด์Šค ์—…๋ฐ์ดํŠธ ๊ณผ์ •์ด ์‚ฌ์šฉ์ž์—๊ฒŒ ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๋„๋ก ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” HAProxy ๊ด€๋ฆฌ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๊ณ  ์„œ๋น„์Šค์— Graceful Shutdown์„ ๊ตฌํ˜„ํ•˜์—ฌ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ๋ฐธ๋Ÿฐ์„œ ๊ด€๋ฆฌ์™€ ์„œ๋น„์Šค์˜ "์˜ฌ๋ฐ”๋ฅธ" ์ข…๋ฃŒ๋ฅผ ๋ณด์žฅํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

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

์ด ๋‘ ๊ฐ€์ง€ ์  ๋•๋ถ„์— ์šฐ๋ฆฌ์˜ ์•ˆ์ „ํ•œ ๋ฐฐํฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. ๊ฐœ๋ฐœ์ž๋Š” ์ƒˆ๋กœ์šด ์ฝ”๋“œ ํŒจํ‚ค์ง€(์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ RPM)๋ฅผ ๋นŒ๋“œํ•˜๊ณ , ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ ํ…Œ์ŠคํŠธํ•˜๊ณ , ์Šคํ…Œ์ด์ง€ ํ™˜๊ฒฝ์—์„œ ํ…Œ์ŠคํŠธํ•œ ํ›„ ์Šคํ…Œ์ด์ง€ ์ €์žฅ์†Œ์— ๊ทธ๋Œ€๋กœ ๋‘ก๋‹ˆ๋‹ค.
  2. ๊ฐœ๋ฐœ์ž๋Š” "์•„ํ‹ฐํŒฉํŠธ"์— ๋Œ€ํ•œ ๊ฐ€์žฅ ์ž์„ธํ•œ ์„ค๋ช…๊ณผ ํ•จ๊ป˜ ๋ฐฐํฌ ์ž‘์—…์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ์ƒˆ ํŒจํ‚ค์ง€์˜ ๋ฒ„์ „, ์ƒˆ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์„ค๋ช…, ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋ฐฐํฌ์— ๋Œ€ํ•œ ๊ธฐํƒ€ ์„ธ๋ถ€ ์ •๋ณด๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.
  3. ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž๊ฐ€ ์—…๋ฐ์ดํŠธ๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. Ansible ํ”Œ๋ ˆ์ด๋ถ์„ ์‹คํ–‰ํ•˜๋ฉด ๋‹ค์Œ ์ž‘์—…์ด ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.
    • ์Šคํ…Œ์ด์ง€ ์ €์žฅ์†Œ์—์„œ ํŒจํ‚ค์ง€๋ฅผ ๊ฐ€์ ธ์™€์„œ ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ œํ’ˆ ์ €์žฅ์†Œ์˜ ํŒจํ‚ค์ง€ ๋ฒ„์ „์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.
    • ์—…๋ฐ์ดํŠธ๋˜๋Š” ์„œ๋น„์Šค์˜ ๋ฐฑ์—”๋“œ ๋ชฉ๋ก์„ ์ปดํŒŒ์ผํ•ฉ๋‹ˆ๋‹ค.
    • HAProxy์—์„œ ์—…๋ฐ์ดํŠธํ•  ์ฒซ ๋ฒˆ์งธ ์„œ๋น„์Šค๋ฅผ ์ข…๋ฃŒํ•˜๊ณ  ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰์„ ๋งˆ์น  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค. ์›ํ™œํ•œ ์„œ๋น„์Šค ์ข…๋ฃŒ ๋•๋ถ„์— ํ˜„์žฌ ๊ณ ๊ฐ ์š”์ฒญ์ด ๋ชจ๋‘ ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋  ๊ฒƒ์œผ๋กœ ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค.
    • API์™€ ์ž‘์—…์ž๊ฐ€ ์™„์ „ํžˆ ์ค‘์ง€๋˜๊ณ  HAProxy๊ฐ€ ์ข…๋ฃŒ๋œ ํ›„ ์ฝ”๋“œ๊ฐ€ ์—…๋ฐ์ดํŠธ๋ฉ๋‹ˆ๋‹ค.
    • Ansible์ด ์„œ๋น„์Šค๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
    • ๊ฐ ์„œ๋น„์Šค์— ๋Œ€ํ•ด ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์‚ฌ์ „ ์ •์˜๋œ ์ฃผ์š” ํ…Œ์ŠคํŠธ์— ๋Œ€ํ•œ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ํŠน์ • "ํ•ธ๋“ค"์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ์ฝ”๋“œ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ์ ์ธ ๊ฒ€์‚ฌ๊ฐ€ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.
    • ์ด์ „ ๋‹จ๊ณ„์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ๊ฒฌ๋˜์ง€ ์•Š์œผ๋ฉด ๋ฐฑ์—”๋“œ๊ฐ€ ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค.
    • ๋‹ค์Œ ๋ฐฑ์—”๋“œ๋กœ ๋„˜์–ด๊ฐ€๊ฒ ์Šต๋‹ˆ๋‹ค.
  4. ๋ชจ๋“  ๋ฐฑ์—”๋“œ๊ฐ€ ์—…๋ฐ์ดํŠธ๋œ ํ›„ ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ๊ธฐ๋Šฅ์ด ๋ˆ„๋ฝ๋œ ๊ฒฝ์šฐ ๊ฐœ๋ฐœ์ž๋Š” ์ž์‹ ์ด ๋งŒ๋“  ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค.

์ด๊ฒƒ์œผ๋กœ ๋ฐฐํฌ๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Mail.ru ํด๋ผ์šฐ๋“œ ์†”๋ฃจ์…˜ ํ”Œ๋žซํผ์—์„œ ๋‚ด๊ฒฐํ•จ์„ฑ ์›น ์•„ํ‚คํ…์ฒ˜๊ฐ€ ๊ตฌํ˜„๋˜๋Š” ๋ฐฉ๋ฒ•
์„œ๋น„์Šค ์—…๋ฐ์ดํŠธ ์ฃผ๊ธฐ

์ด ๊ณ„ํš์€ ๋‹จ ํ•˜๋‚˜์˜ ๊ทœ์น™๋„ ์—†๋‹ค๋ฉด ํšจ๊ณผ๊ฐ€ ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ „ํˆฌ์—์„œ ์ด์ „ ๋ฒ„์ „๊ณผ ์ƒˆ ๋ฒ„์ „์„ ๋ชจ๋‘ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ๋‹จ๊ณ„์—์„œ๋Š” ์„œ๋น„์Šค ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์žˆ์–ด๋„ ๊ธฐ์กด ์ฝ”๋“œ๋Š” ์†์ƒ๋˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๊ณ  ๋ฏธ๋ฆฌ ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ์ฝ”๋“œ๋ฒ ์ด์Šค๋Š” ์ ์ง„์ ์œผ๋กœ ์—…๋ฐ์ดํŠธ๋ฉ๋‹ˆ๋‹ค.

๊ฒฐ๋ก 

๋‚ด๊ฒฐํ•จ์„ฑ WEB ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•œ ๋‚˜๋งŒ์˜ ์ƒ๊ฐ์„ ๊ณต์œ ํ•˜๋ฉด์„œ, ๋‹ค์‹œ ํ•œ๋ฒˆ ํ•ต์‹ฌ ์‚ฌํ•ญ์„ ๊ฐ•์กฐํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

  • ๋ฌผ๋ฆฌ์  ๊ฒฐํ•จ ํ—ˆ์šฉ์„ฑ
  • ๋„คํŠธ์›Œํฌ ์žฅ์•  ํ—ˆ์šฉ(๋ฐธ๋Ÿฐ์„œ, BGP)
  • ์‚ฌ์šฉ ๋ฐ ๊ฐœ๋ฐœ๋œ ์†Œํ”„ํŠธ์›จ์–ด์˜ ๋‚ด๊ฒฐํ•จ์„ฑ.

๋ชจ๋‘๋“ค ์•ˆ์ •์ ์ธ ๊ฐ€๋™์‹œ๊ฐ„์„ ๋ณด๋‚ด์„ธ์š”!

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€