L4/L7 Load Balancing
Network

L4/L7 Load Balancing

1. Load Balancing

L4/L7 ์Šค์œ„์น˜๊ฐ€ Load Balancing ๋ชฉ์ ์œผ๋กœ ์ง€์›ํ•˜๋ฉฐ ๋™์ผํ•œ ๋ชฉ์ ์„ ํ•˜๋Š” ์„œ๋ฒ„์— ๋ถ€ํ•˜๋ฅผ ์ผ์ •ํ•˜๊ฒŒ ๋ถ„์‚ฐํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
L4๋Š” Transport ๊ณ„์ธต๊นŒ์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ L7๋Š” Application ๊ณ„์ธต๊นŒ์ง€ ํ™•์ธ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
Client๋Š” ์‹ค์ œ Load Balancer IP๋กœ ์ ‘์†ํ•˜๊ฒŒ ๋˜์–ด ํ†ต์‹ ํ•˜๋ฉฐ ๋’ท๋‹จ์˜ Server IP๋ฅผ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. (Reverse Proxy ์—ญํ• )
LB๋Š” ๋’ท๋‹จ์˜ Server Health Check๋ฅผ ํ•˜์—ฌ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๋ฉด Load Balancing ๋Œ€์ƒ์—์„œ ์ œ์™ธ์‹œํ‚ต๋‹ˆ๋‹ค.
(ํ•˜๋“œ์›จ์–ด/์†Œํ”„ํŠธ์›จ์–ด ๋ฐฉ์‹์ด ์žˆ์œผ๋ฉฐ ๋ณธ ๊ฒŒ์‹œ๊ธ€์€ ํ•˜๋“œ์›จ์–ด ๊ธฐ์ค€์ด๋ฉฐ ์žฅ๋น„๋Š” F5๋ฅผ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ณ  ๊ทธ ๋‹ค์Œ์œผ๋กœ๋Š” Alteon?!)

2. L4/L7 Load Balancer

L4 Load Balancer : Transport ๊ณ„์ธต ~ Network ๊ณ„์ธต ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  Load Balancing
- Client <-> LB, LB <-> Server ๋ณ„๋„๋กœ Session์„ ๋งบ์Œ

์ธ๋ผ์ธ, one arm ๊ตฌ์„ฑ์˜ ๊ฒฝ์šฐ ์œ„์™€ ๊ฐ™์ด ์„ธ์…˜์„ ๋งบ๊ณ  DSR ๊ตฌ์„ฑ์˜ ๊ฒฝ์šฐ Server -&amp;gt; Client๋กœ ์‘๋‹ต

L7 Load Balancer : Application ๊ณ„์ธต ~ Network ๊ณ„์ธต์˜ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  Load Balancing
- HTTP ํ—ค๋”(URL, ์ฟ ํ‚ค, ์ปจํ…์ธ , ๋ธŒ๋ผ์šฐ์ € ์ •๋ณด ๋“ฑ)๊นŒ์ง€ ๋ณผ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํด๋ผ์ด์–ธํŠธ ๋” ๋งŽ์€ ์ •๋ณด๋ฅผ ํ™•์ธ ๊ฐ€๋Šฅํ•˜์—ฌ ์„ฌ์„ธํ•œ Load Balancing ๊ฐ€๋Šฅ

- ์„œ๋ฒ„๋“ค์˜ ์ƒํƒœ๋ฅผ ๋” ์„ฌ์„ธํ•˜๊ฒŒ ์ฒดํฌํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ์„œ๋ฒ„๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ ๋น ๋ฅด๊ฒŒ ์ œ์™ธํ•  ์ˆ˜ ์žˆ์Œ
- Client <-> LB, LB <-> Server(Client์—์„œ ์š”์ฒญ์ด ์žˆ์„ ๊ฒฝ์šฐ ์„ธ์…˜ ๋งบ๊ธฐ ์‹œ์ž‘) ๋ณ„๋„๋กœ Session์„ ๋งบ์Œ
- ๊ทธ ์™ธ ์บ์‹ฑ, ๋น„์ •์ƒ์ ์ธ ์„ธ์…˜(DDoS ๊ณต๊ฒฉ ๋“ฑ)์„ ์ฒดํฌํ•˜๊ณ  ์‚ฌ์ „์— ํ•„ํ„ฐ๋ง, Qos ๊ฐ€๋Šฅ
(๋ฌผ๋ก  ๐Ÿค” L7์ด ์ข‹์€ ์ ๋งŒ ์žˆ์ง€๋งŒ ๊ฐ€๊ฒฉ์ด ๋น„์‹ธ๊ธฐ ๋•Œ๋ฌธ์— ๋ชฉ์ ์— ๋”ฐ๋ผ L4 or L7 ์„ ํƒ)

3. ๊ตฌ์„ฑ

Inline
- ๋‹จ์ˆœํ•œ ๊ตฌ์„ฑ์œผ๋กœ ๋ชจ๋“  Server์™€ ํ†ต์‹ ํ•˜๊ธฐ ์œ„ํ•ด์„œ LB๋ฅผ ๊ฑฐ์ณ์•ผํ•ด์„œ LB ์žฅ์•  ์‹œ ํ†ต์‹ ์ด ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
- LB๊ฐ€ ํ•„์š”์—†๋Š” ๋ถˆํ•„์š”ํ•œ ์Šค์œ„์นญ์„ ํ•ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค.
- LB๊ฐ€ Src NAT๋ฅผ ํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— Server๋Š” Client IP๋ฅผ ์•Œ ์ˆ˜ ์—†์–ด LB๊ฐ€ ๋ณ„๋„ DB์— Client IP๋ฅผ ์ €์žฅ or ํ—ค๋”์— Client IP๊ฐ€ ๊ธฐ๋ก๋˜๋„๋ก ๊ฐœ๋ฐœ&์šด์˜ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.


One Arm
- L4์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒจ๋„ BB <-> Server๋Š” ํ†ต์‹  ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
- LB ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” Server๋Š” LB๋ฅผ ๊ฑฐ์น˜์ง€์•Š๊ณ  Server์™€ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
- LB๊ฐ€ Src NAT๋ฅผ ํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— Server๋Š” Client IP๋ฅผ ์•Œ ์ˆ˜ ์—†์–ด LB๊ฐ€ ๋ณ„๋„ DB์— Client IP๋ฅผ ์ €์žฅ or ํ—ค๋”์— Client IP๊ฐ€ ๊ธฐ๋ก๋˜๋„๋ก ๊ฐœ๋ฐœ&์šด์˜ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.
- Server์— ๋”ฐ๋ผ ํŠธ๋ž˜ํ”ฝ ํ”Œ๋กœ์šฐ๊ฐ€ ๋‹ฌ๋ผ ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…์‹œ ๊ณ ๋ คํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.


DSR(Direct Server Return)
- ํŠธ๋ž˜ํ”ฝ์ด ๋“ค์–ด์˜ฌ ๋•Œ๋Š” LB๋ฅผ ๊ฑฐ์น˜์ง€๋งŒ ๋‚˜๊ฐˆ ๋•Œ๋Š” LB๋ฅผ ๊ฑฐ์น˜์ง€์•Š๊ณ  ํ†ต์‹ ํ•ฉ๋‹ˆ๋‹ค.
- LB๋Š” Src/Dst NAT ์—†์ด Server๋กœ ํŠธ๋ž˜ํ”ฝ์„ ์ „๋‹ฌํ•˜๋ฉฐ Server๋Š” ์ฒ˜๋ฆฌ(Loopback IP์™€ LB IP๊ฐ€ ๋™์ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— Server๊ฐ€ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ) ํ›„ LB๋ฅผ ๊ฑฐ์น˜์ง€์•Š๊ณ  Client๋กœ ํŠธ๋ž˜ํ”ฝ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
- Server์—๋Š” Loopback IP์— LB IP๋ฅผ ๋„ฃ๊ณ  GARP์™€ ARP Response๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜์—ฌ LB๊ฐ€ ๋™์ผํ•œ IP๊ฐ€ ์žˆ์Œ์„ ์•Œ์ง€ ๋ชปํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.
- LB๋Š” SYN ๋ฐ›์€ ํ›„ SYN+ACK ๋ฐ›์€ ๊ธฐ๋ก ์—†์ด ACK๋ฅผ ๋ฐ›๊ฒŒ ๋˜๋Š”๋ฐ LB ์ชฝ์—์„œ SYN+ACK ์—†์ด ์„ธ์…˜์ด ๋งบ์–ด์งˆ ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
- LB๊ฐ€ Src NAT๋ฅผ ํ•ด์ฃผ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— Server๋Š” Client IP๋ฅผ ์ง์ ‘ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

4. Load Balancing ์•Œ๊ณ ๋ฆฌ์ฆ˜

๋ผ์šด๋“œ ๋กœ๋นˆ(Default, Round Robin)
- ์š”์ฒญ์„ ์ˆœ์„œ๋Œ€๋กœ ๊ฐ ์„œ๋ฒ„์— ๊ท ๋“ฑํ•˜๊ฒŒ ๋ถ„๋ฐฐํ•˜๋Š” ๋ฐฉ์‹
- ์„œ๋ฒ„ ์ปค๋„ฅ์…˜ ์ˆ˜๋‚˜ ์‘๋‹ต์‹œ๊ฐ„์— ์ƒ๊ด€์—†์ด ํ˜„์žฌ ์„œ๋ฒ„๋“ค์— ๋Œ์•„๊ฐ€๋ฉฐ ํŠธ๋ž˜ํ”ฝ์„ ๋ถ„๋ฐฐ
- ๊ฐ€์žฅ ๋น ๋ฆ„

IP ํ•ด์‹œ(IP Hash)
- ํด๋ผ์ด์–ธํŠธ์˜ IP ์ฃผ์†Œ๋ฅผ ํŠน์ • ์„œ๋ฒ„๋กœ ๋งคํ•‘ํ•˜์—ฌ ๋ถ„๋ฐฐํ•˜๋Š” ๋ฐฉ์‹
- ์‚ฌ์šฉ์ž์˜ IP(+ Port ๋“ฑ ์›ํ•˜๋Š”๋Œ€๋กœ ํ•ด์‹ฑ ๋Œ€์ƒ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Œ)๋ฅผ ํ•ด์‹ฑํ•ด ๋กœ๋“œ๋ฅผ ๋ถ„๋ฐฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž๊ฐ€ ํ•ญ์ƒ ๋™์ผํ•œ ์„œ๋ฒ„๋กœ ์—ฐ๊ฒฐ๋˜๋Š” ๊ฒƒ์„ ๋ณด์žฅ

์ตœ์†Œ ์ ‘์†(Least Connection)
- ์„œ๋ฒ„์— ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” Connection ๊ฐœ์ˆ˜๋งŒ ๊ฐ–๊ณ  ๋‹จ์ˆœ ๋น„๊ตํ•˜์—ฌ ๊ฐ€์žฅ ์ ์€๊ณณ์— ๋ถ„๋ฐฐํ•˜๋Š” ๋ฐฉ์‹
- ์‹ ๊ทœ ์„œ๋ฒ„๊ฐ€ ๋“ค์–ด์˜ฌ ๊ฒฝ์šฐ ๊ฐ€์žฅ ๊ท ๋“ฑํ•˜๊ฒŒ ๋ถ„๋ฐฐํ•  ์ˆ˜ ์žˆ์Œ

๊ทธ ์™ธ ๊ฐ€์ค‘์น˜ ์ตœ์†Œ ์ ‘์†(Weighted Least Connections), ์‘๋‹ต ์‹œ๊ฐ„(Fastest Response Time) ๋“ฑ

5. Health Check

ICMP
- Netwrok ๊ณ„์ธต์—์„œ ํ™•์ธํ•˜๋ฉฐ IP๋ฅผ ํ†ตํ•ด ์ƒํƒœ ์ฒดํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


TCP
- Transport ๊ณ„์ธต์—์„œ ํ™•์ธํ•˜๋ฉฐ ์„ธ์…˜์„ ํ†ตํ•ด ์ƒํƒœ ์ฒดํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
- LB๋Š” Interval์— ๋”ฐ๋ผ Health Check๋ฅผ ๊ณ„์† ํ•˜๊ธฐ ๋•Œ๋ฌธ์— Server๊ฐ€ ํ•ด๋‹น ์„ธ์…˜์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š๋„๋ก LB๊ฐ€ RST๋กœ ์„ธ์…˜์„ ์ข…๋ฃŒํ•ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค.


HTTP
- Application ๊ณ„์ธต์—์„œ ํ™•์ธํ•˜๋ฉฐ ์›น ์„œ๋น„์Šค๋ฅผ ํ†ตํ•ด ์ƒํƒœ ์ฒดํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
- LB๋Š” Interval์— ๋”ฐ๋ผ Health Check๋ฅผ ๊ณ„์† ํ•˜๊ธฐ ๋•Œ๋ฌธ์— Server๊ฐ€ ํ•ด๋‹น ์„ธ์…˜์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š๋„๋ก LB๊ฐ€ RST๋กœ ์„ธ์…˜์„ ์ข…๋ฃŒํ•ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค.

6. SSL Offload

- SSL์€ Transport ๊ณ„์ธต Security๋กœ LB๊ฐ€ SSL ์ธ์ฆ์„œ๋ฅผ ๊ฐ€์ง€๊ณ  TLS Handshaking์„ ๋Œ€์‹ ํ•ด์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
- Client <-> LB๋Š” HTTPS(Default 443 Port), LB <-> Server๋Š” HTTP(Default 80 Port) ํ†ต์‹ ์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— LB๋Š” Port NAT๋ฅผ ํ•ด์ค˜์•ผํ•ฉ๋‹ˆ๋‹ค.
- ํ•˜์ง€๋งŒ? ์ด๋ ‡๊ฒŒ ์™ธ๋ถ€์—์„œ LB ํ†ตํ•ด Client๊ฐ€ ์ ‘์†ํ•˜๋Š” Server๋Š” DMZ์ด๊ธฐ ๋•Œ๋ฌธ์— LB <-> Server๊ฐ€ HTTP ํ†ต์‹ ์„ ํ•˜๋Š” ๊ฑด ๋ณด์•ˆ ๋ชฉ์ ์œผ๋กœ ํ—ˆ์šฉํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿค”


์ฐธ๊ณ (๋„์›€์ด ๋งค์šฐ ๋งŽ์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค) :
https://aws-hyoh.tistory.com/entry/L4-Switch-%EC%89%BD%EA%B2%8C-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0?category=767420

L4 ์Šค์œ„์น˜ ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ #1(L4 ์Šค์œ„์น˜์˜ ๊ฐœ์š”)

์ด๋ฒˆ ๋ฌธ์„œ 'L4 ์Šค์œ„์น˜ ์‰ฝ๊ธฐ ์ดํ•ดํ•˜๊ธฐ'์™€ '์„œ๋ฒ„ ๋ถ€ํ•˜ ๋ถ„์‚ฐ ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ', ๋‹ค์Œ์— ์ด์–ด์งˆ ๋ฌธ์„œ์ธ 'L4/L7 ๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ'๋Š” L4/L7 Network Swtich์ธ 'F5 Networks' ์žฅ๋น„๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. Alteo

aws-hyoh.tistory.com