Load Balancer(ELB)

์ •๋ฏผ๊ตยท2024๋…„ 5์›” 18์ผ
0

aws

๋ชฉ๋ก ๋ณด๊ธฐ
12/12
post-thumbnail

๐Ÿ“’๋ชฉํ‘œ

๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ๊ฐ€ ํ•˜๋Š” ์ผ๊ณผ ๊ณ ๊ฐ€์šฉ์„ฑ, ํ™•์žฅ์„ฑ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ธฐ

๐Ÿ“’ํ™•์žฅ์„ฑ

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋” ๋งŽ์€ ์–‘์˜ ํŠธ๋ž˜ํ”ฝ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๋‘ ๊ฐ€์ง€ ์ข…๋ฅ˜์˜ ํ™•์žฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

โœ”๏ธ์ˆ˜์ง ํ™•์žฅ์„ฑ

์„œ๋ฒ„์˜ ํฌ๊ธฐ๋ฅผ ํ™•์žฅ์‹œํ‚ค๋Š” ๊ฒƒ์„ ์ˆ˜์ง ํ™•์ž‘์„ฑ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค๋ฉด,

aws์—์„œ ์ธ์Šคํ„ด์Šค์˜ ํฌ๊ธฐ๋ฅผ ํ™•์žฅํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๊ณ , ์˜จ ํ”„๋ ˆ๋ฏธ์Šค ํ™˜๊ฒฝ์ด๋ผ๋ฉด ๋ง ๊ทธ๋Œ€๋กœ ๋” ์ข‹์€ ์„ฑ๋Šฅ์˜ ์„œ๋ฒ„๋กœ ๋ฐ”๊พธ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๋ฌผ๋ก  DB๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋” ์ข‹์€ ์ธ์Šคํ„ด์Šค๋กœ ๊ต์ฒดํ•˜๊ฑฐ๋‚˜, ์˜จ ํ”„๋ ˆ๋ฏธ์Šค ํ™˜๊ฒฝ์—์„œ ๋” ์ข‹์€ ์„ฑ๋Šฅ์˜ DB ์„œ๋ฒ„๋กœ ๊ต์ฒดํ•˜๋Š” ๊ฒƒ์˜ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

โœ”๏ธ์ˆ˜ํ‰ ํ™•์žฅ์„ฑ

์„œ๋ฒ„์˜ ๊ฐฏ์ˆ˜๋ฅผ ๋Š˜๋ฆฌ๋Š” ๊ฑฐ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ํŽธํ•ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ์˜ ์•ฑ์ด ๋™์ž‘ํ•˜๋Š” ec2 ์ธ์Šคํ„ด์Šค์˜ ๊ฐฏ์ˆ˜๋ฅผ ๋Š˜๋ฆฌ๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค.

์˜จ ํ”„๋ ˆ๋ฏธ์Šค ํ™˜๊ฒฝ์ด๋ผ๋ฉด, ์ƒˆ๋กœ์šด ์ปดํ“จํ„ฐ๋ฅผ ์‚ฌ์„œ ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ์„ ํ•˜๊ณ  ์šฐ๋ฆฌ ์„œ๋ฒ„ ์•ฑ์„ ๋ฐฐํฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์—์„œ๋Š” ์ˆ˜ํ‰ ํ™•์žฅ์„ฑ์ด ์ด์ ์ด ๋„๋“œ๋ผ์ง€๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๐Ÿ“’๊ณ ๊ฐ€์šฉ์„ฑ

๊ณ ๊ฐ€์šฉ์„ฑ์€ ์ˆ˜ํ‰ ํ™•์žฅ๊ณผ ์—ฐ๊ด€๋œ ๊ฐœ๋…์ž…๋‹ˆ๋‹ค.

๊ณ ๊ฐ€์šฉ์„ฑ์„ ์‰ฝ๊ฒŒ ์ด์•ผ๊ธฐํ•ด์„œ ๋‘˜ ์ด์ƒ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„๋ฅผ ๋‘๊ณ , ํ•˜๋‚˜์˜ ์„œ๋ฒ„๊ฐ€ ๋ฉˆ์ถฐ๋„ ๊ณ„์† ์ž‘๋™์ด ๊ฐ€๋Šฅํ•˜๊ฒŒ๋” ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“’๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ

๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ๊ฐ€ ์„œ๋ฒ„๋กœ ๋“ค์–ด์˜ค๋Š” ํŠธ๋ž˜ํ”ฝ์„ ์—ฌ๋Ÿฌ ์„œ๋ฒ„๋กœ ๋ถ„์‚ฐ์‹œ์ผœ์ฃผ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋ถ€ํ•˜๋ฅผ ๋‹ค์ˆ˜์˜ ๋‹ค์šด์ŠคํŠธ๋ฆผ ์ธ์Šคํ„ด์Šค๋กœ ๋ถ„์‚ฐํ•ด์ค๋‹ˆ๋‹ค.

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

์ด๋Š” ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ๊ฐ€ ํ—ฌ์Šค์ฒดํฌ๋ฅผ ํ†ตํ•ด ์–ด๋–ค ์ธ์Šคํ„ด์Šค๊ฐ€ ํŠธ๋ž˜ํ”ฝ์„ ๋ฐ›์„ ์ˆ˜ ์—†๋Š”์ง€ ๋งค๋ฒˆ ํ™•์ธ(์ธ์Šคํ„ด์Šค์˜ ์ƒํƒœ ํ™•์ธ)ํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

โœ”๏ธ๊ด€๋ฆฌํ˜• ์„œ๋น„์Šค

์—˜๋ผ์Šคํ‹ฑ ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ๋Š” ๊ด€๋ฆฌํ˜• ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ๋กœ์„œ, aws์—์„œ ์ด๋ฅผ ๊ด€๋ฆฌํ•˜๋ฉฐ ์–ด๋–ค ์ƒํ™ฉ์—์„œ๋„ ์ž‘๋™ํ•  ๊ฒƒ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

aws์—์„œ ์—…๊ทธ๋ ˆ์ด๋“œ, ์œ ์ง€๊ด€๋ฆฌ, ๊ณ ๊ฐ€์šฉ์„ฑ์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๊ด€๋ฆฌํ˜• ์„œ๋น„์Šค์ด์ง€๋งŒ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ์˜ ๋™์ž‘์„ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ ๊ตฌ์„ฑ ์˜ต์…˜ ๋˜ํ•œ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์€ ์ด์œ ๋Š”, ์ž์ฒด ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ๋ฅผ ๊ตฌ์ถ•ํ•˜์—ฌ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ํŽธ๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ๋Š” EC2, EC2 ์˜คํ†  ์Šค์ผ€์ผ๋ง ๊ทธ๋ฃน, Amazon ECS, AWS Certificate Manager(ACM), CloudWatch, Route 53, Global Accelerator ๋“ฑ๋“ฑ ๋งŽ์€ aws ์„œ๋น„์Šค์™€ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

โœ”๏ธํ—ฌ์Šค ์ฒดํฌ

ํ—ฌ์Šค ์ฒดํฌ๋Š” ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ๊ฐ€ ec2์˜ ์ธ์Šคํ„ด์Šค ์‚ด์•„์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ํŠธ๋ž˜ํ”ฝ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋Š”์ง€ ์—†๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

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

โœ”๏ธ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ ์ข…๋ฅ˜

์ „์ฒด์ ์œผ๋กœ๋Š” ๋” ๋งŽ์€ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ์‹ ์„ธ๋Œ€ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

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

๐Ÿ“ŒALB

2016๋…„์— ์ถœ์‹œ๋œ ์ƒˆ๋กœ์šด ์„ธ๋Œ€์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ(ALB)๊ฐ€ ์žˆ์œผ๋ฉฐ, ์ด๋Š” HTTP, HTTPS ๋ฐ WebSocket ํ”„๋กœํ† ์ฝœ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“ŒNLB

2017๋…„์— ์ถœ์‹œ๋œ ๋„คํŠธ์›Œํฌ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ(NLB)๊ฐ€ ์žˆ์œผ๋ฉฐ, ์ด๋Š” TCP, TLS, ๋ณด์•ˆ TCP ๋ฐ UDP ํ”„๋กœํ† ์ฝœ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“ŒGWLB

2020๋…„์— ์ถœ์‹œ๋œ ๊ฒŒ์ดํŠธ์›จ์ด ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ(GW ELB)๊ฐ€ ์žˆ์œผ๋ฉฐ, ์ด๋Š” ๋„คํŠธ์›Œํฌ ๊ณ„์ธต(IP ํ”„๋กœํ† ์ฝœ)์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“’ALB

HTTP ์ „์šฉ ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ, ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค๋‚˜, ์ปจํ‹ฐ์—๋„ˆ ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๊ฐ€์žฅ ์ข‹์€ ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ๋‹ค.(๋„์ปค, ecw์— ๊ฐ€์žฅ ์ ํ•ฉํ•จ, ALB๋Š” ์ธ์Šคํ„ด์Šค์˜ ๋™์  ํฌํŠธ๋กœ ๋ฆฌ๋””๋ ‰์…˜ํ•  ์ˆ˜ ์žˆ๋Š” ํฌํŠธ ๋งคํ•‘ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ)

โœ”๏ธALB์—์„œ ํ•˜๋Š” ์ผ

  1. ์—ฌ๋Ÿฌ ์ธ์Šคํ„ด์Šค(target groups์œผ๋กœ ๋ฌถ์ธ)๊ฐ„ ๋‹ค์ˆ˜ HTTP ์• ํ”Œ๋ฆฌ๋ฉ”์ด์…˜ ๋ผ์šฐํŒ…์— ์‚ฌ์šฉ.

  2. ํ•˜๋‚˜์˜ ์ธ์Šคํ„ด์Šค ์ƒ์˜ ์—ฌ๋Ÿฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋ถ€ํ•˜๋ฅผ ๋ถ„์‚ฐ.(ECS, ์ปจํ…Œ์ด๋„ˆ ๋“ฑ์— ์‚ฌ์šฉ๋จ)

  3. HTTP/2, WebSocket์„ ์ง€์›ํ•จ.

  4. redirect ์ง€์›ํ•จ(HTTP์—์„œ HTTPS๋กœ ํŠธ๋ž˜ํ”ฝ ์ž๋™ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ๋„ ์ง€์›ํ•จ)

  5. ๊ฒฝ๋กœ ๊ธฐ๋ฐ˜(URL ๊ฒฝ๋กœ ๊ธฐ๋ฐ˜)์œผ๋กœ ์„œ๋กœ ๋‹ค๋ฅธ ํƒ€๊ฒŸ ๊ทธ๋ฃน์— ๋ผ์šฐํŒ… ๊ฐ€๋Šฅ, URL์˜ hostname ๊ธฐ๋ฐ˜์œผ๋กœ ๋ผ์šฐํŒ… ๊ฐ€๋Šฅ, ์ฟผ๋ฆฌ ์ŠคํŠธ๋ง๊ณผ ํ—ค๋” ๊ธฐ๋ฐ˜ ๋ผ์šฐํŒ… ๊ฐ€๋Šฅ

โœ”๏ธtarget group(๋Œ€์ƒ ๊ทธ๋ฃน)

ALB๋Š” ์—ฌ๋Ÿฌ ๋Œ€์ƒ ๊ทธ๋ฃน์œผ๋กœ ๋ผ์šฐํŒ… ํ•  ์ˆ˜ ์žˆ๊ณ , ํ—ฌ์Šค ์ฒดํฌ๋Š” ๋Œ€์ƒ ๊ทธ๋ฃน ๋ ˆ๋ฒจ์—์„œ ์ด๋ฃจ์–ด์ง„๋‹ค.

ec2 ์ธ์Šคํ„ด์Šค๋“ค์ด target group์ด ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด ec2 ์ธ์Šคํ„ด์Šค๋“ค์€ ์˜คํ†  ์Šค์ผ€์ผ๋ง ๊ทธ๋ฃน์— ์˜ํ•ด ๊ด€๋ฆฌ๋  ์ˆ˜ ์žˆ์Œ. - HTTP

ecs task๊ฐ€ target grup์ด ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ECS์— ์˜ํ•ด ๊ด€๋ฆฌ๋จ. - HTTP

Lambda ํ•จ์ˆ˜๊ฐ€ target group์ด ๋  ์ˆ˜ ์žˆ์Œ. - HTTP ์š”์ฒญ์„ JSON์œผ๋กœ ๋ณ€ํ˜•

IP ์ฃผ์†Œ๊ฐ€ tagret group์ด ๋  ์ˆ˜ ์žˆ์Œ. - ๋ฐ˜๋“œ์‹œ ์‚ฌ์„ค IP ์ฃผ์†Œ์—ฌ์•ผ ํ•จ.

โœ”๏ธ์•Œ์•„๋‘๋ฉด ์ข‹์€ ์ 

  1. ALB์— ๊ณ ์ • hostname์ด ๋ถ€์—ฌ๋œ๋‹ค.

  2. ์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ํด๋ผ์ด์–ธํŠธ์˜ IP๋ฅผ ์ง์ ‘์ ์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์—†๊ณ , ํด๋ผ์ด์–ธํŠธ์˜ IP๋Š” X-Forwarded_for๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ํ—ค๋”๊ฐ’์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.
    port์™€ protocol ๋˜ํ•œ X-Forwarded-Port/Proto๋กœ ์‚ฌ์šฉ๋˜๋Š” ํฌํŠธ์™€ ํ”„๋กœํ† ์ฝœ ์ •๋ณด๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Œ.

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ง์ ‘ ALB์™€ ํ†ต์‹ ํ•˜๊ณ , ALB๋Š” ์—ฐ๊ฒฐ ์ข…๋ฃŒ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋ฉฐ, ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ๊ฐ€ EC2 ์ธ์Šคํ„ด์Šค์˜ค ํ†ต์‹ ํ•  ๋•Œ๋Š” ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ IP(์‚ฌ์„ค IP)๋ฃฐ ์‚ฌ์šฉํ•ด์„œ EC2 ์ธ์Šคํ„ด์Šค์™€ ํ†ต์‹ ํ•˜๊ฒŒ ๋œ๋‹ค.

โœ”๏ธALB ์ƒ์„ฑ

ALB๋ฅผ ์ƒ์„ฑํ•  ๋•Œ VPC์™€ ALB๋ฅผ ์ƒ์„ฑํ•  ๊ฐ€์šฉ ์˜์—ญ์„ ์„ ํƒํ•ด์•ผ ํ•œ๋‹ค. ๊ฐ€์šฉ ์˜์—ญ์€ ๋‘ ๊ฐœ ์ด์ƒ ์„ ํƒํ•ด์•ผ ํ•˜๋ฉฐ, ๊ฐ€์šฉ ์˜์—ญ ๋‹น ํ•˜๋‚˜์˜ ์„œ๋ธŒ๋„ท์„ ์„ ํƒํ•œ๋‹ค.

ALB๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ํ•˜๋‚˜์˜ ํผ๋ธ”๋ฆญ DNS๋ฅผ ๊ฐ€์ง„๋‹ค. AWS Application Load Balancer (ALB)๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์—ฌ๋Ÿฌ ๊ฐ€์šฉ ์˜์—ญ(AZ)์„ ์„ ํƒํ•˜๋ฉด, ์‹ค์ œ๋กœ ๊ฐ ๊ฐ€์šฉ ์˜์—ญ์— ALB๊ฐ€ ๊ฐœ๋ณ„์ ์œผ๋กœ ์ƒ์„ฑ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹˜.

๋Œ€์‹ , ALB๋Š” ํ•˜๋‚˜์˜ ๋…ผ๋ฆฌ์  ์—”ํ‹ฐํ‹ฐ๋กœ ๋™์ž‘ํ•˜๋ฉฐ, ์„ ํƒํ•œ ๊ฐ ๊ฐ€์šฉ ์˜์—ญ์— ๊ฑธ์ณ ํŠธ๋ž˜ํ”ฝ์„ ๋ถ„์‚ฐ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋„๋ก ๋‚ด๋ถ€์ ์œผ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.

ALB๋Š” ์„ ํƒํ•œ ๊ฐ ๊ฐ€์šฉ ์˜์—ญ์— ํ•˜๋‚˜ ์ด์ƒ์˜ ENI(Elastic Network Interface)๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์ด๋Ÿฌํ•œ ENI๋Š” ๊ฐ ๊ฐ€์šฉ ์˜์—ญ์— ํŠธ๋ž˜ํ”ฝ์„ ๋ถ„์‚ฐ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค.

๐Ÿ“ŒListeners and routing

๋“ค์–ด์˜จ ํŠธ๋ž˜ํ”ฝ์„ ๋Œ€์ƒ ๊ทธ๋ฃน์œผ๋กœ ๋ผ์šฐํŒ…ํ•œ๋‹ค.

๋Œ€์ƒ ๊ทธ๋ฃน์„ ์ƒ์„ฑํ•˜์—ฌ์•ผ ํ•˜๊ณ , ALB๋Š” ํŠน์ • ํ”„๋กœํ† ์ฝœ ๋ฐ ํฌํŠธ๋ฅผ ํ†ตํ•ด ๋“ค์–ด์˜จ ํŠธ๋ž˜ํ”ฝ์„ ๋งคํ•‘ํ•œ ๋Œ€์ƒ๊ทธ๋ฃน์œผ๋กœ ๋ผ์šฐํŒ…ํ•œ๋‹ค.

๋Œ€์ƒ ๊ทธ๋ฃน์—๋Š” ํ—ฌ์Šค ์ฒดํฌ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•ด์•ผ ํ•˜๊ณ , ์‹ค์ œ๋กœ ์ด ํ—ฌ์Šค ์ฒดํฌ ๊ฒฝ๋กœ๋กœ ALB๊ฐ€ ํ—ฌ์Šค ์ฒดํฌ๋ฅผ ์ง„ํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น ๊ฒฝ๋กœ์— 200 ์š”์ฒญ์„ ์‘๋‹ตํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์•ผํ•œ๋‹ค.

๋Œ€์ƒ ๊ทธ๋ฃน์— ํ• ๋‹นํ•  ์ธ์Šคํ„ด์Šค๋“ค์„ ๊ณ ๋ฅด๊ณ , ์ด ์ธ์Šคํ„ด์Šค์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํฌํŠธ ๋˜ํ•œ ๋Œ€์ƒ ๊ทธ๋ฃน์„ ์ƒ์„ฑํ•  ๋•Œ ์ง€์ •ํ•œ๋‹ค.

โœ”๏ธALB Listener rule

ALB ๋ฆฌ์Šค๋„ˆ์—์„œ๋Š” listener rule์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ธฐ๋ณธ ๊ทœ์น™์œผ๋กœ ALB๋ฅผ ์ƒ์„ฑํ•  ๋•Œ Listeners and routing์—์„œ ์ง€์ •ํ–ˆ๋˜ ๋ผ์šฐํŒ…์œผ๋กœ, ํŠน์ • ํ”„๋กœํ† ์ฝœ ๋ฐ ํฌํŠธ๋กœ ๋“ค์–ด์˜จ ํŠธ๋ž˜ํ”ฝ์„ ๋งคํ•‘๋œ ๋Œ€์ƒ๊ทธ๋ฃน์œผ๋กœ ๋ผ์šฐํŒ… ํ•˜๋Š” ๊ทœ์น™์ด ์ƒ์„ฑ๋˜์–ด์žˆ๋‹ค.

๊ทธ ์™ธ์— ๋‹ค๋ฅธ ๊ทœ์น™๋“ค์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ถ”๊ฐ€ํ•˜๋Š” ๊ทœ์น™์—๋Š” ์—ฌ๋Ÿฌ ์ข…๋ฅ˜๊ฐ€ ์žˆ๋‹ค.

๐Ÿ“Œ๊ทœ์น™ ์ถ”๊ฐ€

๊ทœ์น™ ์ด๋ฆ„์„ ์ •ํ•˜๊ณ , ์ปจ๋””์…˜ ๋ฐ ์•ก์…˜, ์šฐ์„ ์ˆœ์œ„ ๋“ฑ์„ ์ •ํ•˜์—ฌ ์ƒ์„ฑํ•œ๋‹ค.

๐Ÿ‘‰conditions

condition์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์ด ๊ทœ์น™์—์„œ ์–ด๋–ค ์กฐ๊ฑด์œผ๋กœ ํŠธ๋ž˜ํ”ฝ์„ ํ•„ํ„ฐ๋ง ํ•  ๊ฒƒ์ธ์ง€ ๊ณ ๋ฅด๋Š” ๊ฒƒ์ด๋‹ค.

condition type์œผ๋กœ๋Š” Host header, Path, HTTP Request Method, Source IP, HTTP header, Query string ๋“ฑ์œผ๋กœ ์กด์žฌํ•œ๋‹ค.

rule์„ ์ถ”๊ฐ€ํ•  ๋•Œ rule limit ๋˜ํ•œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ‘‰actions

์ด ๊ทœ์น™์—์„œ ์ˆ˜ํ–‰ํ•  actions์„ ์ •์˜ํ•œ๋‹ค. ํŠน์ • condition์— ํ•ด๋‹นํ•˜๋Š” ํŠธ๋ž˜ํ”ฝ์„ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•  ๊ฒƒ์ธ์ง€ ์ •ํ•ด์ฃผ๋Š” ๋ถ€๋ถ„์ด๋‹ค.

๐Ÿ“’elb with ssl/tls

โœ”๏ธssl/tls

์›๋ž˜๋Š” tls๋ผ๊ณ  ํ•ด์•ผ ๋งž์ง€๋งŒ, ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค์ด ssl์ด๋ผ๊ณ  ์ด์•ผ๊ธฐํ•˜๊ณ , ๋‹ค๋“ค ๊ทธ๋ƒฅ ์•Œ์•„์„œ ์ดํ•ดํ•˜๋Š” ๋“ฏํ•˜๋‹ค.

ssl(tls) ์ธ์ฆ์„œ๋Š” ํด๋ผ์ด์–ธํŠธ์™€ ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ ์‚ฌ์ด์—์„œ ํŠธ๋ž˜ํ”ฝ์ด ์ด๋™ํ•˜๋Š” ๋™์•ˆ ํ†ต์‹ ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™” ํ•ด์ค€๋‹ค(in-flight encryption, ์ „์†ก ์ค‘ ์•”ํ˜ธํ™”)

Public SSL ์ธ์ฆ์„œ๋Š” CA(Certificate Authorities)์—์„œ ๋ฐœ๊ธ‰ํ•ด์ฃผ๋Š”๋ฐ ์ธ์ฆ ๊ธฐ๊ด€์—๋Š” Comodo, Symantec, GoDaddy, GlobalSign, Digicert, Letsencrypt ๋“ฑ๋“ฑ ์—ฌ๋Ÿฌ ๊ธฐ๊ด€์ด ์žˆ๋‹ค.

Public ssl ์ธ์ฆ์„œ๋ฅผ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ์— ์ถ”๊ฐ€ํ•˜๋ฉด, ํด๋ผ์ด์–ธํŠธ์™€ ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ ์‚ฌ์ด์˜ ์—ฐ๊ฒฐ์„ ์•”ํ˜ธํ™” ํ•  ์ˆ˜ ์žˆ๋‹ค.

ssl ์ธ์ฆ์„œ๋Š” ๋งŒ๋ฃŒ ๋‚ ์งœ๊ฐ€ ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฃผ๊ธฐ์ ์œผ๋กœ ๊ฐฑ์‹ ํ•ด์ค˜์•ผ ํ•œ๋‹ค.

โœ”๏ธ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ - ssl certificate

client์™€ ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ ์‚ฌ์ด์—์„œ๋Š” ์•”ํ˜ธํ™”๋œ ํ†ต์‹ ์ด ์˜ค๊ณ ๊ฐ€๊ณ  ALB์—์„œ ssl terminate ์ž‘์—…์ด ์ด๋ฃจ์–ด์ง„๋‹ค.

๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ์™€ EC2 ์ธ์Šคํ„ด์Šค ์‚ฌ์ด์—๋Š” HTTP๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ†ต์‹ ํ•˜๋Š”๋ฐ VPC๋กœ ํ”„๋ผ์ด๋น— ๋„คํŠธ์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์•ˆ์ „ํ•˜๋‹ค.

๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ๋Š” X.509 ์ธ์ฆ์„œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ์ด๋ฅผ ssl/tls ์„œ๋ฒ„ ์ธ์ฆ์„œ๋ผ๊ณ  ๋ถ€๋ฅด๊ณ , aws์—๋„ ์ธ์ฆ์„œ๋“ค์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ACM์ด ์กด์žฌํ•œ๋‹ค.

ํด๋ผ์ด์–ธํŠธ๋Š” SNI(Server Name Indication)์„ ์‚ฌ์šฉํ•ด์„œ ์ ‘์†ํ•  ํ˜ธ์ŠคํŠธ์˜ ์ด๋ฆ„์„ ์•Œ๋ฆด ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ“ŒSNI(Server Name Indication)

SNI๋Š” ํ•˜๋‚˜์˜ ์›น ์„œ๋ฒ„์—์„œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ SSL ์ธ์ฆ์„œ๋ฅผ ๋กœ๋“œํ•˜์—ฌ ํ•˜๋‚˜์˜ ์›น ์„œ๋ฒ„๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์›น ์‚ฌ์ดํŠธ(์„œ๋ฒ„)๋ฅผ ์ง€์›ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค๋‹ˆ๋‹ค.

SNI๋Š” ํ™•์žฅ๋œ ํ”„๋กœํ† ์ฝœ๋กœ, SSL ํ•ธ๋“œ์‰์ดํฌ ์ดˆ๊ธฐํ™” ๊ณผ์ •์—์„œ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋Œ€์ƒ ์„œ๋ฒ„์˜ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์„ ์ง€์ •ํ•˜๋„๋ก ํ•œ๋‹ค.

๋”ฐ๋ผ์„œ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์–ด๋–ค ์›น ์‚ฌ์ดํŠธ(์„œ๋ฒ„)์— ์ ‘์†ํ•  ๊ฒƒ์ธ์ง€ ์ง€์ •ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„๋Š” ์–ด๋–ค ์ธ์ฆ์„œ๋ฅผ ๋กœ๋“œํ•ด์•ผํ•˜๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

์ด๋Š” ์ƒˆ๋กœ์šด ํ”„๋กœํ† ์ฝœ์ด๊ธฐ ๋•Œ๋ฌธ์— ALB์™€ NLB, CloudFront์—์„œ๋งŒ ๋™์ž‘ํ•œ๋‹ค.

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

profile
๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž

0๊ฐœ์˜ ๋Œ“๊ธ€