Post

[AWS] ELB(Elastic Load Balancer)

๐Ÿ“Œ ๋“ค์–ด๊ฐ€๋ฉฐ

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” AWS์˜ ELB(Elastic Load Balancer)๋ฅผ ์ •๋ฆฌํ•œ๋‹ค. ์—ฌ๋Ÿฌ EC2์— ํŠธ๋ž˜ํ”ฝ์„ ๋ถ„์‚ฐํ•ด ๊ฐ€์šฉ์„ฑ๊ณผ ๋‚ด๊ฒฐํ•จ์„ฑ์„ ๋†’์ด๋Š” ์„œ๋น„์Šค๋กœ, CLB์™€ NLB๋ฅผ ๊ฐ๊ฐ ๋งŒ๋“ค์–ด HTTPS๊นŒ์ง€ ์—ฐ๊ฒฐํ•œ๋‹ค.

ELB๋ž€? ์ˆ˜์‹  ํŠธ๋ž˜ํ”ฝ์„ ์—ฌ๋Ÿฌ ๊ฐ€์šฉ ์˜์—ญ์˜ ์—ฌ๋Ÿฌ ๋Œ€์ƒ(EC2ยท์ปจํ…Œ์ด๋„ˆยทIP)์— ๋ถ„์‚ฐํ•˜๋Š” ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ. ํŠธ๋ž˜ํ”ฝ ๋ณ€ํ™”์— ๋งž์ถฐ ์ž๋™์œผ๋กœ ํ™•์žฅ๋˜๋ฉฐ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ณ ๊ฐ€์šฉ์„ฑ(High Availability)๊ณผ ๋‚ด๊ฒฐํ•จ์„ฑ(Fault Tolerant)์„ ๋†’์ธ๋‹ค.


1. ELB ์ข…๋ฅ˜ (๊ณ„์ธต๋ณ„)

ELB๋Š” ๋™์ž‘ํ•˜๋Š” OSI ๊ณ„์ธต์— ๋”ฐ๋ผ ๋‚˜๋‰œ๋‹ค. HTTP/HTTPS๋ฅผ ๋‹ค๋ฃจ๋ฉด L7, TCP/UDP๋ฅผ ๋‹ค๋ฃจ๋ฉด L4๋‹ค.

์ข…๋ฅ˜๊ณ„์ธตํ”„๋กœํ† ์ฝœํŠน์ง•
ALBL7HTTP/HTTPS๊ฒฝ๋กœยทํ˜ธ์ŠคํŠธ ๊ธฐ๋ฐ˜ ๋ผ์šฐํŒ…
CLBL7/L4HTTP/HTTPS/TCP์ด์ „ ์„ธ๋Œ€(Classic)
NLBL4TCP/UDP/TLS์ดˆ๊ณ ์„ฑ๋Šฅ, ๊ณ ์ • IP
flowchart TD
    User(("๐ŸŒ ์‚ฌ์šฉ์ž"))
    R53["๐Ÿงญ Route53<br/>(๋ณ„์นญ ๋ ˆ์ฝ”๋“œ)"]
    ELB["โš–๏ธ ELB<br/>(CLB / NLB)"]
    E1["๐Ÿ’ป EC2 #1"]
    E2["๐Ÿ’ป EC2 #2"]
    User --> R53 --> ELB
    ELB --> E1
    ELB --> E2

2. ๋ณด์•ˆ ๊ทธ๋ฃน (HTTPS์šฉ)

๋จผ์ € EC2 ํƒญ์—์„œ ELB ์ „์šฉ ๋ณด์•ˆ ๊ทธ๋ฃน์„ ๋งŒ๋“ ๋‹ค. HTTPS(443) ์ธ๋ฐ”์šด๋“œ ๊ทœ์น™์„ ๋‹ด์€ ๋ณ„๋„ ๊ทธ๋ฃน์„ ๋‘๊ธฐ ์œ„ํ•จ์ด๋‹ค.

Untitled


3. CLB(Classic Load Balancer) ์ƒ์„ฑ

๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ ์ƒ์„ฑ์—์„œ Classic Load Balancer(์ด์ „ ์„ธ๋Œ€)๋ฅผ ์„ ํƒํ•œ๋‹ค. ๋„คํŠธ์›Œํฌ ๋งคํ•‘์€ ๋‚ด VPC์™€ 2aยท2c ์„œ๋ธŒ๋„ท, ๋ณด์•ˆ ๊ทธ๋ฃน์€ ๋ฐฉ๊ธˆ ๋งŒ๋“  ๊ฒƒ์œผ๋กœ ์ง€์ •ํ•œ๋‹ค.

Untitled

Untitled

๋ฆฌ์Šค๋„ˆ๋Š” HTTPS 443 โ†’ ์ธ์Šคํ„ด์Šค HTTP 80์œผ๋กœ ๋งคํ•‘ํ•˜๊ณ , ๋ณด์•ˆ ๋ฆฌ์Šค๋„ˆ์—๋Š” ์•ž์„œ ๋งŒ๋“  ACM ์ธ์ฆ์„œ๋ฅผ ์„ ํƒํ•œ๋‹ค. ์ƒํƒœ ๊ฒ€์‚ฌ๋Š” ๊ธฐ๋ณธ index.html, ๋Œ€์ƒ ์ธ์Šคํ„ด์Šค๋Š” Cloud9 ์ธ์Šคํ„ด์Šค์™€ ๊ฐœ๋ณ„ ์ธ์Šคํ„ด์Šค 2๊ฐœ๋ฅผ ๊ณ ๋ฅธ๋‹ค.

Untitled

Untitled

Untitled

๐Ÿ’ก 443(HTTPS) โ†’ 80(HTTP) ๋งคํ•‘์ด ํ•ต์‹ฌ์ด๋‹ค. ์‚ฌ์šฉ์ž~ELB ๊ตฌ๊ฐ„์€ ACM ์ธ์ฆ์„œ๋กœ ์•”ํ˜ธํ™”(HTTPS)ํ•˜๊ณ , ELB~EC2 ๋‚ด๋ถ€ ๊ตฌ๊ฐ„์€ HTTP๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ฐ EC2์— ์ธ์ฆ์„œ๋ฅผ ๊ฐœ๋ณ„ ์„ค์น˜ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค(SSL ์˜คํ”„๋กœ๋”ฉ).


4. Route53 ๋ณ„์นญ ๋ ˆ์ฝ”๋“œ ์—ฐ๊ฒฐ

์ƒ์„ฑ๋œ ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ์˜ DNS ์—”๋“œํฌ์ธํŠธ๋ฅผ ๋ณต์‚ฌํ•œ๋‹ค. ์•„์ง HTTPS ์ ‘์†์ด ์•ˆ ๋˜๋Š”๋ฐ, Route53์—์„œ ๋ ˆ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค.

Untitled

Untitled

์ด๋ฒˆ์—๋Š” ๊ฐ’์— IP๋ฅผ ๋„ฃ๋Š” ๋Œ€์‹  โ€˜๋ณ„์นญ(Alias)โ€™ ์˜ต์…˜์„ ์ฒดํฌํ•˜๊ณ , ํŠธ๋ž˜ํ”ฝ ๋ผ์šฐํŒ… ๋Œ€์ƒ์œผ๋กœ Application/Classic Load Balancer๋ฅผ ๊ณจ๋ผ ๋ณต์‚ฌํ•œ DNS๋ฅผ ๋ถ™์—ฌ๋„ฃ๋Š”๋‹ค.

Untitled

์ด์ œ HTTPS ์ ‘์†์ด ๋˜๊ณ , ์ƒˆ๋กœ๊ณ ์นจํ•  ๋•Œ๋งˆ๋‹ค ๋‘ ์ธ์Šคํ„ด์Šค๊ฐ€ ๋ฒˆ๊ฐˆ์•„(Round Robin) ์‘๋‹ตํ•œ๋‹ค!

Untitled

โš ๏ธ ELB๋Š” IP๊ฐ€ ๊ณ ์ •๋˜์ง€ ์•Š๊ณ  ๋ฐ”๋€” ์ˆ˜ ์žˆ์–ด, A ๋ ˆ์ฝ”๋“œ์— IP๋ฅผ ์ง์ ‘ ๋„ฃ์œผ๋ฉด ์•ˆ ๋œ๋‹ค. ๋ฐ˜๋“œ์‹œ ๋ณ„์นญ(Alias) ๋ ˆ์ฝ”๋“œ๋กœ ELB์˜ DNS๋ฅผ ๊ฐ€๋ฆฌ์ผœ์•ผ ํ•œ๋‹ค.


5. ๋Œ€์ƒ ๊ทธ๋ฃน(Target Group) ์ƒ์„ฑ

NLB์— ์•ž์„œ, EC2 ํƒญ์—์„œ ๋Œ€์ƒ ๊ทธ๋ฃน์„ ๋งŒ๋“ ๋‹ค. ๋Œ€์ƒ ์œ ํ˜•์€ ์ธ์Šคํ„ด์Šค, ํ”„๋กœํ† ์ฝœ/ํฌํŠธ๋Š” TCP 80, VPC๋Š” ๋‚ด VPC, ์ƒํƒœ ๊ฒ€์‚ฌ๋Š” /๋กœ ํ•œ๋‹ค.

Untitled

Untitled


6. NLB(Network Load Balancer) ์ƒ์„ฑ

๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ ์ƒ์„ฑ์—์„œ NLB๋ฅผ ์„ ํƒํ•˜๊ณ , ์ฒด๊ณ„๋Š” ์ธํ„ฐ๋„ท ๊ฒฝ๊ณ„(Internet-facing)๋กœ ํ•œ๋‹ค. NLB๋Š” L4๋ผ์„œ ๋ฆฌ์Šค๋„ˆ ํ”„๋กœํ† ์ฝœ์ด HTTP/HTTPS๊ฐ€ ์•„๋‹ˆ๋ผ TCP(80)ยทTLS(443)๋‹ค. ๋Œ€์ƒ ๊ทธ๋ฃน์€ ์•ž์„œ ๋งŒ๋“  ๊ฒƒ์„ ์—ฐ๊ฒฐํ•œ๋‹ค.

Untitled

Untitled

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ Route53์—์„œ ๋ณ„์นญ ๋ ˆ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค๋ฉด ์ •์ƒ ์ ‘์†๋œ๋‹ค.

Untitled

Untitled

๐Ÿ’ก Internet-facing = ์ธํ„ฐ๋„ท ๊ฒฝ๊ณ„. ์ฝ˜์†” ๋ฒˆ์—ญ์ด ์˜ค๋ฝ๊ฐ€๋ฝํ•˜๋‹ˆ ์˜์–ด ๋‹จ์–ด๋ฅผ ๊ธฐ์–ตํ•ด๋‘์ž. ๋˜ CLB๋Š” Round Robin์ด๋ผ ์ƒˆ๋กœ๊ณ ์นจ๋งˆ๋‹ค ์„œ๋ฒ„๊ฐ€ ๋ฐ”๋€Œ์ง€๋งŒ, NLB๋Š” IP Hash ๋ฐฉ์‹์ด๋ผ ๊ฐ™์€ ํด๋ผ์ด์–ธํŠธ๋Š” ๊ฐ™์€ ์„œ๋ฒ„๋กœ ๊ณ ์ •๋œ๋‹ค.


๐Ÿ“ ์ •๋ฆฌ

1
2
3
4
5
ELB
โ”œโ”€ ์ข…๋ฅ˜    ALB(L7) / CLB(๊ตฌ์„ธ๋Œ€) / NLB(L4)
โ”œโ”€ HTTPS   443 โ†’ 80 ๋งคํ•‘ + ACM ์ธ์ฆ์„œ(SSL ์˜คํ”„๋กœ๋”ฉ)
โ”œโ”€ ์—ฐ๊ฒฐ    Route53 ๋ณ„์นญ(Alias) ๋ ˆ์ฝ”๋“œ โ†’ ELB DNS
โ””โ”€ ๋ถ„์‚ฐ    CLB=Round Robin / NLB=IP Hash
๊ฐœ๋…ํ•œ ์ค„ ์ •์˜
ELB์—ฌ๋Ÿฌ ๋Œ€์ƒ์— ํŠธ๋ž˜ํ”ฝ ๋ถ„์‚ฐ
๋ณ„์นญ ๋ ˆ์ฝ”๋“œELB DNS๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” Route53 ๋ ˆ์ฝ”๋“œ
L7 vs L4ALB(HTTP) vs NLB(TCP)

ELB์˜ ํ•ต์‹ฌ์€ ํŠธ๋ž˜ํ”ฝ ๋ถ„์‚ฐ์œผ๋กœ ๊ณ ๊ฐ€์šฉ์„ฑ ํ™•๋ณด + ACM์œผ๋กœ HTTPS ์ฒ˜๋ฆฌ๋‹ค. ๊ณ„์ธต(L7/L4)์— ๋”ฐ๋ผ ํ”„๋กœํ† ์ฝœ๊ณผ ๋ถ„์‚ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋‹ค๋ฅด๋ฉฐ, ์—ฐ๊ฒฐ์€ ๋ฐ˜๋“œ์‹œ Route53 ๋ณ„์นญ ๋ ˆ์ฝ”๋“œ๋กœ ํ•œ๋‹ค๋Š” ์ ์„ ๊ธฐ์–ตํ•˜์ž.

This post is licensed under CC BY 4.0 by the author.

Comments powered by Disqus.