Yandex.Cloud์˜ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ ์žฅ์น˜ ์•„ํ‚คํ…์ฒ˜

Yandex.Cloud์˜ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ ์žฅ์น˜ ์•„ํ‚คํ…์ฒ˜
์•ˆ๋…•ํ•˜์„ธ์š”, ์ €๋Š” Sergey Elantsev์ž…๋‹ˆ๋‹ค. ์ €๋Š” ๊ฐœ๋ฐœ์„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋„คํŠธ์›Œํฌ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ Yandex.Cloud์—์„œ. ์ด์ „์— ์ €๋Š” Yandex ํฌํ„ธ์šฉ L7 ๋ฐธ๋Ÿฐ์„œ ๊ฐœ๋ฐœ์„ ์ด๋Œ์—ˆ์Šต๋‹ˆ๋‹ค. ๋™๋ฃŒ๋“ค์€ ์ œ๊ฐ€ ๋ฌด์—‡์„ ํ•˜๋“  ๋ฐธ๋Ÿฐ์„œ๊ฐ€ ๋œ๋‹ค๊ณ  ๋†๋‹ดํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” Habr ๋…์ž๋“ค์—๊ฒŒ ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ์—์„œ ๋กœ๋“œ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•, ์ด ๋ชฉํ‘œ๋ฅผ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ์ด์ƒ์ ์ธ ๋„๊ตฌ, ๊ทธ๋ฆฌ๊ณ  ์ด ๋„๊ตฌ๋ฅผ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•ด ์–ด๋–ป๊ฒŒ ๋‚˜์•„๊ฐ€๊ณ  ์žˆ๋Š”์ง€ ์•Œ๋ ค์ค„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋จผ์ € ๋ช‡ ๊ฐ€์ง€ ์šฉ์–ด๋ฅผ ์†Œ๊ฐœํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

  • VIP(๊ฐ€์ƒ IP) - ๋ฐธ๋Ÿฐ์„œ IP ์ฃผ์†Œ
  • ์„œ๋ฒ„, ๋ฐฑ์—”๋“œ, ์ธ์Šคํ„ด์Šค - ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜๋Š” ๊ฐ€์ƒ ๋จธ์‹ 
  • RIP(์‹ค์ œ IP) - ์„œ๋ฒ„ IP ์ฃผ์†Œ
  • ์ƒํƒœ ํ™•์ธ - ์„œ๋ฒ„ ์ค€๋น„ ์ƒํƒœ ํ™•์ธ
  • ๊ฐ€์šฉ ์˜์—ญ, AZ - ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์˜ ๊ฒฉ๋ฆฌ๋œ ์ธํ”„๋ผ
  • ์ง€์—ญ - ๋‹ค์–‘ํ•œ AZ์˜ ํ†ตํ•ฉ

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

๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ๋Š” ์‹คํ–‰๋˜๋Š” OSI ๋ชจ๋ธ์˜ ํ”„๋กœํ† ์ฝœ ๊ณ„์ธต์— ๋”ฐ๋ผ ๋ถ„๋ฅ˜๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. Cloud Balancer๋Š” ๋„ค ๋ฒˆ์งธ ๊ณ„์ธต์ธ L4์— ํ•ด๋‹นํ•˜๋Š” TCP ์ˆ˜์ค€์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

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

๋ฐ์ดํ„ฐ ํ”Œ๋ ˆ์ธ

ํŠธ๋ž˜ํ”ฝ์€ ๋ณด๋” ๋ผ์šฐํ„ฐ(Border Router)๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ๊ณ ๊ฐ€์˜ ์žฅ์น˜์—์„œ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฒฐํ•จ์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ ์žฅ์น˜๊ฐ€ ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์—์„œ ๋™์‹œ์— ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์œผ๋กœ ํŠธ๋ž˜ํ”ฝ์€ ํด๋ผ์ด์–ธํŠธ์šฉ BGP๋ฅผ ํ†ตํ•ด ๋ชจ๋“  AZ์— ์• ๋‹ˆ์บ์ŠคํŠธ IP ์ฃผ์†Œ๋ฅผ ์•Œ๋ฆฌ๋Š” ๋ฐธ๋Ÿฐ์„œ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. 

Yandex.Cloud์˜ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ ์žฅ์น˜ ์•„ํ‚คํ…์ฒ˜

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

๊ตฌ์„ฑ ํ‰๋ฉด

 
๊ตฌ์„ฑ ํ”Œ๋ ˆ์ธ์˜ ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ๋Š” ๋ฐธ๋Ÿฐ์„œ๋ฅผ ์‚ฌ์šฉํ•œ ๊ธฐ๋ณธ ์ž‘์—…(์ธ์Šคํ„ด์Šค ์ƒ์„ฑ, ์‚ญ์ œ, ๊ตฌ์„ฑ ๋ณ€๊ฒฝ, ์ƒํƒœ ํ™•์ธ ๊ฒฐ๊ณผ ๊ฐ€์ ธ์˜ค๊ธฐ ๋“ฑ)์ด ์ˆ˜ํ–‰๋˜๋Š” API์ž…๋‹ˆ๋‹ค. ํ•œํŽธ์œผ๋กœ ์ด๊ฒƒ์€ REST API์ด๊ณ  ๋‹ค๋ฅธ ํ•œํŽธ์œผ๋กœ๋Š” ๋‹ค๋ฅธ ํ•œํŽธ, ํด๋ผ์šฐ๋“œ์—์„œ๋Š” gRPC ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ REST๋ฅผ gRPC๋กœ "๋ณ€ํ™˜"ํ•œ ๋‹ค์Œ gRPC๋งŒ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ์š”์ฒญ์œผ๋กœ ์ธํ•ด Yandex.Cloud ์ž‘์—…์ž์˜ ๊ณตํ†ต ํ’€์—์„œ ์‹คํ–‰๋˜๋Š” ์ผ๋ จ์˜ ๋น„๋™๊ธฐ ๋ฉฑ๋“ฑ์„ฑ ์ž‘์—…์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ž‘์—…์€ ์–ธ์ œ๋“ ์ง€ ์ผ์‹œ ์ค‘์ง€ํ–ˆ๋‹ค๊ฐ€ ๋‹ค์‹œ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์‹์œผ๋กœ ์ž‘์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ํ™•์žฅ์„ฑ, ๋ฐ˜๋ณต์„ฑ ๋ฐ ์ž‘์—… ๋กœ๊น…์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

Yandex.Cloud์˜ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ ์žฅ์น˜ ์•„ํ‚คํ…์ฒ˜

๊ฒฐ๊ณผ์ ์œผ๋กœ API์˜ ์ž‘์—…์€ Go๋กœ ์ž‘์„ฑ๋œ ๋ฐธ๋Ÿฐ์„œ ์„œ๋น„์Šค ์ปจํŠธ๋กค๋Ÿฌ์— ์š”์ฒญ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ๋ฐธ๋Ÿฐ์„œ๋ฅผ ์ถ”๊ฐ€ ๋ฐ ์ œ๊ฑฐํ•˜๊ณ  ๋ฐฑ์—”๋“œ ๋ฐ ์„ค์ • ๊ตฌ์„ฑ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

Yandex.Cloud์˜ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ ์žฅ์น˜ ์•„ํ‚คํ…์ฒ˜

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

๋ฐธ๋Ÿฐ์„œ ์ปจํŠธ๋กค๋Ÿฌ๋กœ ๋Œ์•„๊ฐ€ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ž‘์—…์€ ๋ฐธ๋Ÿฐ์„œ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ณ  ์ƒํƒœ ํ™•์ธ ์ปจํŠธ๋กค๋Ÿฌ์— ๊ฐ€์ƒ ๋จธ์‹ ์˜ ์ค€๋น„ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๋Š” ์ž‘์—…์„ ๋ณด๋‚ด๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ƒํƒœ ํ™•์ธ ์ปจํŠธ๋กค๋Ÿฌ

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

Yandex.Cloud์˜ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ ์žฅ์น˜ ์•„ํ‚คํ…์ฒ˜

๊ฑด๊ฐ•๊ฒ€์ง„์— ๋Œ€ํ•ด ์ข€ ๋” ์ด์•ผ๊ธฐํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ํด๋ž˜์Šค๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌ์—๋Š” ๋‹ค์–‘ํ•œ ์„ฑ๊ณต ๊ธฐ์ค€์ด ์žˆ์Šต๋‹ˆ๋‹ค. TCP ๊ฒ€์‚ฌ๋Š” ๊ณ ์ •๋œ ์‹œ๊ฐ„ ๋‚ด์— ์„ฑ๊ณต์ ์œผ๋กœ ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. HTTP ๊ฒ€์‚ฌ์—๋Š” ์„ฑ๊ณต์ ์ธ ์—ฐ๊ฒฐ๊ณผ 200 ์ƒํƒœ ์ฝ”๋“œ์˜ ์‘๋‹ต์ด ๋ชจ๋‘ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

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

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

Yandex.Cloud์˜ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ ์žฅ์น˜ ์•„ํ‚คํ…์ฒ˜

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

์ฐจ์ด์ ์€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ VIP์— ์š”์ฒญํ•˜๋Š” ๋ฐ˜๋ฉด ์ƒํƒœ ํ™•์ธ์€ ๊ฐ ๊ฐœ๋ณ„ RIP์— ์š”์ฒญํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ํฅ๋ฏธ๋กœ์šด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ํšŒ์ƒ‰ IP ๋„คํŠธ์›Œํฌ์—์„œ ๋ฆฌ์†Œ์Šค๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐํšŒ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ฐธ๋Ÿฐ์„œ ๋’ค์— ์„œ๋น„์Šค๋ฅผ ์ˆจ๊ธด ๋‘ ๋ช…์˜ ์„œ๋กœ ๋‹ค๋ฅธ ํด๋ผ์šฐ๋“œ ์†Œ์œ ์ž๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฐ๊ฐ์€ ์ฃผ์†Œ๊ฐ€ ๋™์ผํ•œ 10.0.0.1/24 ์„œ๋ธŒ๋„ท์— ๋ฆฌ์†Œ์Šค๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์–ด๋–ป๊ฒŒ๋“  ๊ตฌ๋ณ„ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๋ฉฐ ์—ฌ๊ธฐ์„œ Yandex.Cloud ๊ฐ€์ƒ ๋„คํŠธ์›Œํฌ์˜ ๊ตฌ์กฐ๋ฅผ ์ž์„ธํžˆ ์‚ดํŽด๋ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์—์„œ ์•Œ์•„๋ณด์‹œ๋Š” ๊ฒƒ์ด ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค about:cloud ์ด๋ฒคํŠธ์˜ ๋™์˜์ƒ, ์ด์ œ ๋„คํŠธ์›Œํฌ๊ฐ€ ๋‹ค์ค‘ ๊ณ„์ธต์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๊ณ  ์„œ๋ธŒ๋„ท ID๋กœ ๊ตฌ๋ณ„ํ•  ์ˆ˜ ์žˆ๋Š” ํ„ฐ๋„์ด ์žˆ๋‹ค๋Š” ์ ์ด ์šฐ๋ฆฌ์—๊ฒŒ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

์ƒํƒœ ํ™•์ธ ๋…ธ๋“œ๋Š” ์†Œ์œ„ ์ค€IPv6 ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐธ๋Ÿฐ์„œ์— ์ ‘์†ํ•ฉ๋‹ˆ๋‹ค. ์ค€์ฃผ์†Œ๋Š” IPv6 ์ฃผ์†Œ์™€ ์‚ฌ์šฉ์ž ์„œ๋ธŒ๋„ท ID๊ฐ€ ๋‚ด๋ถ€์— ํฌํ•จ๋œ IPv4 ์ฃผ์†Œ์ž…๋‹ˆ๋‹ค. ํŠธ๋ž˜ํ”ฝ์€ ๋ฐธ๋Ÿฐ์„œ์— ๋„๋‹ฌํ•˜์—ฌ IPv4 ๋ฆฌ์†Œ์Šค ์ฃผ์†Œ๋ฅผ ์ถ”์ถœํ•˜๊ณ  IPv6๋ฅผ IPv4๋กœ ๋Œ€์ฒดํ•œ ํ›„ ํŒจํ‚ท์„ ์‚ฌ์šฉ์ž ๋„คํŠธ์›Œํฌ๋กœ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

์—ญ๋ฐฉํ–ฅ ํŠธ๋ž˜ํ”ฝ๋„ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค. ๋ฐธ๋Ÿฐ์„œ๋Š” ๋Œ€์ƒ์ด ์ƒํƒœ ๊ฒ€์‚ฌ๊ธฐ์˜ ํšŒ์ƒ‰ ๋„คํŠธ์›Œํฌ์ž„์„ ํ™•์ธํ•˜๊ณ  IPv4๋ฅผ IPv6๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

VPP - ๋ฐ์ดํ„ฐ ํ”Œ๋ ˆ์ธ์˜ ํ•ต์‹ฌ

๋ฐธ๋Ÿฐ์„œ๋Š” ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ ์ผ๊ด„ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ Cisco์˜ ํ”„๋ ˆ์ž„์›Œํฌ์ธ VPP(๋ฒกํ„ฐ ํŒจํ‚ท ์ฒ˜๋ฆฌ) ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์‚ฌ์šฉ์ž ๊ณต๊ฐ„ ๋„คํŠธ์›Œํฌ ์žฅ์น˜ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ธ DPDK(Data Plane Development Kit) ์œ„์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋†’์€ ํŒจํ‚ท ์ฒ˜๋ฆฌ ์„ฑ๋Šฅ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ์ปค๋„์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ํ›จ์”ฌ ์ ๊ณ  ์ปค๋„ ๊ณต๊ฐ„๊ณผ ์‚ฌ์šฉ์ž ๊ณต๊ฐ„ ์‚ฌ์ด์— ์ปจํ…์ŠคํŠธ ์ „ํ™˜์ด ์—†์Šต๋‹ˆ๋‹ค. 

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

์˜ˆ๋ฅผ ๋“ค์–ด, VPP์—์„œ IP ํŒจํ‚ท ์ฒ˜๋ฆฌ๋Š” ๋‹ค์Œ ์ˆœ์„œ๋กœ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋จผ์ € ํŒจํ‚ท ํ—ค๋”๊ฐ€ ๊ตฌ๋ฌธ ๋ถ„์„ ๋…ธ๋“œ์—์„œ ๊ตฌ๋ฌธ ๋ถ„์„๋œ ๋‹ค์Œ ๋…ธ๋“œ๋กœ ์ „์†ก๋˜๊ณ , ๋…ธ๋“œ๋Š” ๋ผ์šฐํŒ… ํ…Œ์ด๋ธ”์— ๋”ฐ๋ผ ํŒจํ‚ท์„ ์ถ”๊ฐ€๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

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

n_left_from = frame->n_vectors;
while (n_left_from > 0)
{
    vlib_get_next_frame (vm, node, next_index, to_next, n_left_to_next);
    // ...
    while (n_left_from >= 4 && n_left_to_next >= 2)
    {
        // processing multiple packets at once
        u32 next0 = SAMPLE_NEXT_INTERFACE_OUTPUT;
        u32 next1 = SAMPLE_NEXT_INTERFACE_OUTPUT;
        // ...
        /* Prefetch next iteration. */
        {
            vlib_buffer_t *p2, *p3;

            p2 = vlib_get_buffer (vm, from[2]);
            p3 = vlib_get_buffer (vm, from[3]);

            vlib_prefetch_buffer_header (p2, LOAD);
            vlib_prefetch_buffer_header (p3, LOAD);

            CLIB_PREFETCH (p2->data, CLIB_CACHE_LINE_BYTES, STORE);
            CLIB_PREFETCH (p3->data, CLIB_CACHE_LINE_BYTES, STORE);
        }
        // actually process data
        /* verify speculative enqueues, maybe switch current next frame */
        vlib_validate_buffer_enqueue_x2 (vm, node, next_index,
                to_next, n_left_to_next,
                bi0, bi1, next0, next1);
    }

    while (n_left_from > 0 && n_left_to_next > 0)
    {
        // processing packets by one
    }

    // processed batch
    vlib_put_next_frame (vm, node, next_index, n_left_to_next);
}

๋”ฐ๋ผ์„œ ์ƒํƒœ ํ™•์ธ์€ IPv6๋ฅผ ํ†ตํ•ด VPP์™€ ํ†ต์‹ ํ•˜์—ฌ VPP๋ฅผ IPv4๋กœ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ NAT๋ผ๊ณ  ํ•˜๋Š” ๊ทธ๋ž˜ํ”„์˜ ๋…ธ๋“œ์— ์˜ํ•ด ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ์—ญ๋ฐฉํ–ฅ ํŠธ๋ž˜ํ”ฝ(๋ฐ IPv6์—์„œ IPv4๋กœ์˜ ๋ณ€ํ™˜)์˜ ๊ฒฝ์šฐ ๋™์ผํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ NAT ๋…ธ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

Yandex.Cloud์˜ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ ์žฅ์น˜ ์•„ํ‚คํ…์ฒ˜

๋ฐธ๋Ÿฐ์„œ ํด๋ผ์ด์–ธํŠธ์˜ ์ง์ ‘ ํŠธ๋ž˜ํ”ฝ์€ ๋ฐธ๋Ÿฐ์‹ฑ ์ž์ฒด๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ทธ๋ž˜ํ”„ ๋…ธ๋“œ๋ฅผ ํ†ต๊ณผํ•ฉ๋‹ˆ๋‹ค. 

Yandex.Cloud์˜ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ ์žฅ์น˜ ์•„ํ‚คํ…์ฒ˜

์ฒซ ๋ฒˆ์งธ ๋…ธ๋“œ๋Š” ๊ณ ์ • ์„ธ์…˜์ž…๋‹ˆ๋‹ค. ํ•ด์‹œ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. 5ํŠœํ”Œ ์„ค์ •๋œ ์„ธ์…˜์˜ ๊ฒฝ์šฐ. 5-ํŠœํ”Œ์—๋Š” ์ •๋ณด๊ฐ€ ์ „์†ก๋˜๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์ฃผ์†Œ์™€ ํฌํŠธ, ํŠธ๋ž˜ํ”ฝ ์ˆ˜์‹ ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฆฌ์†Œ์Šค์˜ ์ฃผ์†Œ์™€ ํฌํŠธ, ๋„คํŠธ์›Œํฌ ํ”„๋กœํ† ์ฝœ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. 

5ํŠœํ”Œ ํ•ด์‹œ๋Š” ํ›„์† ์ผ๊ด€๋œ ํ•ด์‹ฑ ๋…ธ๋“œ์—์„œ ๋” ์ ์€ ๊ณ„์‚ฐ์„ ์ˆ˜ํ–‰ํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ฐธ๋Ÿฐ์„œ ๋’ค์—์„œ ๋ฆฌ์†Œ์Šค ๋ชฉ๋ก ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋” ์ž˜ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ์„ธ์…˜์ด ์—†๋Š” ํŒจํ‚ท์ด ๋ฐธ๋Ÿฐ์„œ์— ๋„์ฐฉํ•˜๋ฉด ์ผ๊ด€๋œ ํ•ด์‹ฑ ๋…ธ๋“œ๋กœ ์ „์†ก๋ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ์ผ๊ด€๋œ ํ•ด์‹ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ท ํ˜•์ด ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค. ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ "๋ผ์ด๋ธŒ" ๋ฆฌ์†Œ์Šค ๋ชฉ๋ก์—์„œ ๋ฆฌ์†Œ์Šค๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์œผ๋กœ, ํŒจํ‚ท์€ ์‹ค์ œ๋กœ ๋Œ€์ƒ ์ฃผ์†Œ๋ฅผ ๋Œ€์ฒดํ•˜๊ณ  ์ฒดํฌ์„ฌ์„ ๋‹ค์‹œ ๊ณ„์‚ฐํ•˜๋Š” NAT ๋…ธ๋“œ๋กœ ์ „์†ก๋ฉ๋‹ˆ๋‹ค. ๋ณด์‹œ๋‹ค์‹œํ”ผ, ์šฐ๋ฆฌ๋Š” ํ”„๋กœ์„ธ์„œ ์บ์‹œ์˜ ํšจ์œจ์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ๋น„์Šทํ•œ ๊ณ„์‚ฐ์„ ๊ทธ๋ฃนํ™”ํ•˜๋Š” '์ข‹์•„์š”'์™€ ๊ฐ™์€ VPP ๊ทœ์น™์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

์ผ๊ด€๋œ ํ•ด์‹ฑ

์šฐ๋ฆฌ๋Š” ์™œ ๊ทธ๊ฒƒ์„ ์„ ํƒํ–ˆ์œผ๋ฉฐ ๊ทธ๊ฒƒ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๋จผ์ €, ๋ชฉ๋ก์—์„œ ๋ฆฌ์†Œ์Šค๋ฅผ ์„ ํƒํ•˜๋Š” ์ด์ „ ์ž‘์—…์„ ๊ณ ๋ คํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. 

Yandex.Cloud์˜ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ ์žฅ์น˜ ์•„ํ‚คํ…์ฒ˜

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

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

Yandex.Cloud์˜ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ ์žฅ์น˜ ์•„ํ‚คํ…์ฒ˜

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

์šฐ๋ฆฌ๋Š” ๋ฐธ๋Ÿฐ์„œ์™€ ๋ฆฌ์†Œ์Šค ๊ฐ„์˜ ์ง์ ‘์ ์ธ ํŠธ๋ž˜ํ”ฝ์— ์–ด๋–ค ์ผ์ด ์ผ์–ด๋‚˜๋Š”์ง€ ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ด์ œ ๋ฐ˜ํ™˜ ํŠธ๋ž˜ํ”ฝ์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ํŠธ๋ž˜ํ”ฝ ํ™•์ธ๊ณผ ๋™์ผํ•œ ํŒจํ„ด์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. ์ฆ‰, ์•Œ๊ณ ๋ฆฌ์ฆ˜ NAT๋ฅผ ํ†ตํ•ด, ์ฆ‰ ํด๋ผ์ด์–ธํŠธ ํŠธ๋ž˜ํ”ฝ์˜ ๊ฒฝ์šฐ ์—ญ๋ฐฉํ–ฅ NAT 44๋ฅผ ํ†ตํ•ด, ์ƒํƒœ ํ™•์ธ ํŠธ๋ž˜ํ”ฝ์˜ ๊ฒฝ์šฐ NAT 46์„ ํ†ตํ•ด ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ž์ฒด ๊ณ„ํš์„ ๊ณ ์ˆ˜ํ•ฉ๋‹ˆ๋‹ค. ์ƒํƒœ ํ™•์ธ ํŠธ๋ž˜ํ”ฝ๊ณผ ์‹ค์ œ ์‚ฌ์šฉ์ž ํŠธ๋ž˜ํ”ฝ์„ ํ†ตํ•ฉํ•ฉ๋‹ˆ๋‹ค.

๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ ๋…ธ๋“œ ๋ฐ ์กฐ๋ฆฝ๋œ ๊ตฌ์„ฑ์š”์†Œ

VPP์˜ ๋ฐธ๋Ÿฐ์„œ ๋ฐ ๋ฆฌ์†Œ์Šค ๊ตฌ์„ฑ์€ ๋กœ์ปฌ ์„œ๋น„์Šค์ธ loadbalancer-node์— ์˜ํ•ด ๋ณด๊ณ ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ-์ปจํŠธ๋กค๋Ÿฌ์˜ ์ด๋ฒคํŠธ ์ŠคํŠธ๋ฆผ์„ ๊ตฌ๋…ํ•˜๊ณ  ํ˜„์žฌ VPP ์ƒํƒœ์™€ ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ์ˆ˜์‹ ํ•œ ๋Œ€์ƒ ์ƒํƒœ ๊ฐ„์˜ ์ฐจ์ด๋ฅผ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ํ์‡„ํ˜• ์‹œ์Šคํ…œ์„ ์–ป์Šต๋‹ˆ๋‹ค. API์˜ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐธ๋Ÿฐ์„œ ์ปจํŠธ๋กค๋Ÿฌ๋กœ ์ „๋‹ฌ๋˜์–ด ๋ฆฌ์†Œ์Šค์˜ "ํ™œ์„ฑ"์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์ƒํƒœ ํ™•์ธ ์ปจํŠธ๋กค๋Ÿฌ์— ์ž‘์—…์„ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ healthcheck ๋…ธ๋“œ์— ์ž‘์—…์„ ํ• ๋‹นํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ์ง‘๊ณ„ํ•œ ํ›„ ๋‹ค์‹œ ๋ฐธ๋Ÿฐ์„œ ์ปจํŠธ๋กค๋Ÿฌ๋กœ ๋ณด๋ƒ…๋‹ˆ๋‹ค. Loadbalancer-node๋Š” ์ปจํŠธ๋กค๋Ÿฌ์˜ ์ด๋ฒคํŠธ๋ฅผ ๊ตฌ๋…ํ•˜๊ณ  VPP์˜ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์‹œ์Šคํ…œ์—์„œ ๊ฐ ์„œ๋น„์Šค๋Š” ์ธ์ ‘ ์„œ๋น„์Šค์— ๋Œ€ํ•ด ํ•„์š”ํ•œ ๊ฒƒ๋งŒ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฐ๊ฒฐ ์ˆ˜๋Š” ์ œํ•œ๋˜์–ด ์žˆ์œผ๋ฉฐ ๋‹ค์–‘ํ•œ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๋…๋ฆฝ์ ์œผ๋กœ ์šด์˜ํ•˜๊ณ  ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Yandex.Cloud์˜ ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ถ„์‚ฐ ์žฅ์น˜ ์•„ํ‚คํ…์ฒ˜

์–ด๋–ค ๋ฌธ์ œ๋ฅผ ํ”ผํ•  ์ˆ˜ ์žˆ์—ˆ๋‚˜์š”?

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

๋ฌธ์ œ ๋ฐ ํ•ด๊ฒฐ์ฑ…

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

๋˜ํ•œ Go๋Š” ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ์— ๊ฐ€์žฅ ์ ํ•ฉํ•œ ์„ ํƒ์ด ์•„๋‹ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋งค์šฐ ์žฅํ™ฉํ•˜๋ฉฐ "CI์˜ ๋ชจ๋“  ๊ฒƒ์„ ์ผ๊ด„ ์‹คํ–‰"ํ•˜๋Š” ํ‘œ์ค€ ์ ‘๊ทผ ๋ฐฉ์‹์€ ๊ทธ๋‹ค์ง€ ์ ํ•ฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‚ฌ์‹ค ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ๋” ๋งŽ์ด ์š”๊ตฌํ•˜๊ณ  ์‹ค์ œ ์‹œ๊ฐ„ ์ดˆ๊ณผ๋ฅผ ์œ ๋ฐœํ•ฉ๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด CPU๊ฐ€ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋กœ ๋ฐ”์˜๊ธฐ ๋•Œ๋ฌธ์— ํ…Œ์ŠคํŠธ๊ฐ€ ์‹คํŒจํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฒฐ๋ก : ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ๋‹จ์œ„ ํ…Œ์ŠคํŠธ์™€ ๋ณ„๋„๋กœ "๋ฌด๊ฑฐ์šด" ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜์‹ญ์‹œ์˜ค. 

๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์ด๋ฒคํŠธ ์•„ํ‚คํ…์ฒ˜๋Š” ๋ชจ๋†€๋ฆฌ์Šค๋ณด๋‹ค ๋” ๋ณต์žกํ•ฉ๋‹ˆ๋‹ค. ์ˆ˜์‹ญ ๊ฐœ์˜ ์„œ๋กœ ๋‹ค๋ฅธ ์‹œ์Šคํ…œ์—์„œ ๋กœ๊ทธ๋ฅผ ์ˆ˜์ง‘ํ•˜๋Š” ๊ฒƒ์€ ๊ทธ๋‹ค์ง€ ํŽธ๋ฆฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฒฐ๋ก : ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ ๋‹ค๋ฉด ์ฆ‰์‹œ ์ถ”์ ์— ๋Œ€ํ•ด ์ƒ๊ฐํ•ด ๋ณด์„ธ์š”.

์šฐ๋ฆฌ์˜ ๊ณ„ํš

์šฐ๋ฆฌ๋Š” ๋‚ด๋ถ€ ๋ฐธ๋Ÿฐ์„œ์ธ IPv6 ๋ฐธ๋Ÿฐ์„œ๋ฅผ ์ถœ์‹œํ•˜๊ณ , Kubernetes ์Šคํฌ๋ฆฝํŠธ์— ๋Œ€ํ•œ ์ง€์›์„ ์ถ”๊ฐ€ํ•˜๊ณ , ์„œ๋น„์Šค๋ฅผ ๊ณ„์† ์ƒค๋”ฉํ•˜๊ณ (ํ˜„์žฌ healthcheck-node ๋ฐ healthcheck-ctrl๋งŒ ์ƒค๋”ฉ๋จ), ์ƒˆ๋กœ์šด ์ƒํƒœ ํ™•์ธ์„ ์ถ”๊ฐ€ํ•˜๊ณ , ๊ฒ€์‚ฌ์˜ ์Šค๋งˆํŠธ ์ง‘๊ณ„๋„ ๊ตฌํ˜„ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์„œ๋น„์Šค๊ฐ€ ์„œ๋กœ ์ง์ ‘์ ์œผ๋กœ ํ†ต์‹ ํ•˜์ง€ ์•Š๊ณ  ๋ฉ”์‹œ์ง€ ๋Œ€๊ธฐ์—ด์„ ์‚ฌ์šฉํ•˜์—ฌ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„œ๋น„์Šค๋ฅผ ๋”์šฑ ๋…๋ฆฝ์ ์œผ๋กœ ๋งŒ๋“ค ๊ฐ€๋Šฅ์„ฑ์„ ๊ณ ๋ คํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. SQS ํ˜ธํ™˜ ์„œ๋น„์Šค๊ฐ€ ์ตœ๊ทผ ํด๋ผ์šฐ๋“œ์— ๋“ฑ์žฅํ–ˆ์Šต๋‹ˆ๋‹ค. Yandex ๋ฉ”์‹œ์ง€ ๋Œ€๊ธฐ์—ด.

์ตœ๊ทผ Yandex Load Balancer๊ฐ€ ๊ณต๊ฐœ ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํƒ๊ตฌํ•˜๋‹ค ๋ฌธ์„œ ์„œ๋น„์Šค์— ํŽธ๋ฆฌํ•œ ๋ฐฉ์‹์œผ๋กœ ๋ฐธ๋Ÿฐ์„œ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ํ”„๋กœ์ ํŠธ์˜ ๋‚ด๊ฒฐํ•จ์„ฑ์„ ๋†’์ด์‹ญ์‹œ์˜ค!

์ถœ์ฒ˜ : habr.com

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