1. Network Load Balancer (v2)
- Network load balancers (Layer 4) allow to:
- - Forward TCP & UDP traffic to your instances
- - Handle millions of request per seconds
- - Less latency ~100 ms (vs 400 ms for ALB)
- NLB has one static IP per AZ, and supports assigning Elastic IP
- (helpful for whitelisting specific IP)
- NLB are used for extreme performance, TCP or UDP traffic
- Not included in the AWS free tier
์ํ๋ฌธ์ ์ ๊ณ ์ฑ๋ฅ, TCP, UDP, ๋คํธ์ํฌ layer 4 ๊ณ์ธต์ด๋ ์ ์ IP๊ฐ ๋์ค๋ฉด ๋คํธ์ํฌ ๋ก๋ ๋ฐธ๋ฐ์๋ฅผ ๋ ์ฌ๋ฆฌ์!
NLB(Network Load Balancer)๋ AWS์์ ์ ๊ณตํ๋ ๊ณ ์ฑ๋ฅ ๋ก๋ ๋ฐธ๋ฐ์๋ก, NLB๋ ๋น ๋ฅด๊ณ ์์ ์ ์ผ๋ก TCP/UDP ํธ๋ํฝ์ ๋ถ์ฐํ๋ฏ๋ก ์ ์ก ์๋์ ์์ ์ฑ์ด ์ค์ํ ์๋น์ค์ ์ฌ์ฉ๋๋ค. ALB(Application Load Balancer)๋ณด๋ค ์๋๊ฐ ๋น ๋ฅด๊ณ , ๊ณ ์ IP๋ฅผ ์ ๊ณตํ๋ ๊ฒ ํน์ง์ด๋ค.
- L4 (์ ์ก ๊ณ์ธต, TCP/UDP) ๊ธฐ๋ฐ์ ๋ก๋ ๋ฐธ๋ฐ์ฑ
- ์๋ฐฑ๋ง ๊ฐ์ ์์ฒญ์ ์ด๋น ์ฒ๋ฆฌ ๊ฐ๋ฅ (๊ณ ์ฑ๋ฅ)
- ๊ณ ์ IP ์ ๊ณต → ํด๋ผ์ด์ธํธ๊ฐ ํน์ IP๋ฅผ ํตํด ์ ๊ทผ ๊ฐ๋ฅ
- ์ด์ ์ง์ฐ(Low Latency) ์ฒ๋ฆฌ
- Auto Scaling ์ง์
์ธ์ ์ฌ์ฉํ๋ฉด ์ข์๊น?
- ๊ณ ์ ํต์ ์ด ํ์ํ ๊ฒฝ์ฐ (์: ๊ธ์ต ์๋น์ค, ๊ฒ์ ์๋ฒ)
- ๊ณ ์ IP๊ฐ ํ์ํ ๊ฒฝ์ฐ
- TCP/UDP ๊ธฐ๋ฐ ์๋น์ค (์น์์ผ, VoIP ๋ฑ)
2. TCP (Layer 4) Based Traffic
์ ํ๋ฆฌ์ผ์ด์ ๋ก๋ ๋ฐธ๋ฐ์์ ์๋ ๋ฐฉ์๊ณผ ์ ์ฌํ๋ค. ๋์๊ทธ๋ฃน์ ์์ฑํ๋ฉด ๋คํธ์ํฌ ๋ก๋ ๋ฐธ๋ฐ์๊ฐ ๋์ ๊ทธ๋ฃน์ ๋ฆฌ๋ค์ด๋ ํธํ๋ค. ๋ฐฑ์๋, ํ๋ก ํธ์๋ ๋ชจ๋ TCP ํธ๋ํฝ์ ์ฌ์ฉํ๊ฑฐ๋ ๋ฐฑ์๋์์๋ HTTP๋ฅผ, ํ๋ก ํธ์๋์์๋ TCP๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
3. Network Load Balancer - Target Groups
- EC2 instances
- IP Addresses - must be private IPs
- Application Load Balancer
- โญHealth Checks support the TCP, HTTP and HTTPS Protocols
์ ์ธ ๋ฒ์งธ ๊ทธ๋ฆผ์์ NLB๋ฅผ ALB ์์ ๋ฐฐ์นํ ๊น? ์ด๋ ๊ฒ ํ๋ฉด NLB ๋๋ถ์ ๊ณ ์ IP์ฃผ์๋ฅผ ์ป์ ์ ์๊ณ ALB ๋๋ถ์ HTTP ์ ํ์ ํธ๋ํฝ์ ์ฒ๋ฆฌํ๋ ๊ท์น์ ์ป์ ์ ์๊ธฐ ๋๋ฌธ์ ์กฐํฉ์ด ์ข๋ค. ์ํ์ ์์ฃผ ๋์ค๋ ๋ถ๋ถ์ ๋คํธ์ํฌ ๋ก๋ ๋ฐธ๋ฐ์ ๋์ ๊ทธ๋ฃน์ด ์ํํ๋ '์ํ ํ์ธ(Health check)'์ด๋ค.
4. Network Load Balancer ์ค์ต
NLB๋ฅผ ์์ฑํ ๋ AZ๋ฅผ ์ง์ ํ๋ฉด ๊ฐ ๊ฐ์ฉ ์์ญ๋ง๋ค ๊ณ ์ ๋ IPv4 ์ฃผ์๋ฅผ ๋ฐ๊ณ , ์ด ์ฃผ์๋ AWS๋ก๋ถํฐ ํ ๋น๋๋ค. ๋ค๋ง ๋ง์ฝ Elastic IP๋ฅผ ๊ฐ์ง๊ณ ์๋ค๋ฉด ๋์ ์ฌ์ฉํ ์๋ ์๋ค.
์ด๋ ๊ฒ NLB๋ฅผ ์์ฑํ ํ DNS ๋ค์์ ๋ณต์ฌํด์ ์ฃผ์์ฐฝ์ ๋ถ์ฌ๋ฃ๊ธฐ ํ๋ฉด ์๋ฒ๊ฐ ์คํ๋์ง ์๋๋ค.
๊ทธ๋์ Health check๋ฅผ ํ์ธ ํด ๋ณด๋ 2๊ฐ์ ์ธ์คํด์ค๊ฐ Unused ์ํ๋ก ํ์ธ๋์๋ค.
์ด๋ ๊ฒ Unused๋ก ๋จ๋ ์ด์ ๋ ์ธ์คํด์ค๋ค์ ๋ณด์ ๊ทธ๋ฃน ๋๋ฌธ์ด๋ค. ์ด๋ค์ ๋ณด์๊ทธ๋ฃน launch-wizard-1์ Inbound rules๋ฅผ ๋ณด๋ฉด HTTP ๊ท์น์ด ALB๋ก ์ค๋ ํธ๋ํฝ๋ง ๋ฐ๋๋ก ํ์ฉ๋์๊ธฐ ๋๋ฌธ์ด๋ค. Edit inbound rules ๋ฅผ ํตํด์ ์๋ก์ด ๊ท์น์ ์ถ๊ฐ ํด ์ค๋ค.
์์ฒ๋ผ NLB๊ฐ ๋์ ๊ทธ๋ฃน์ EC2 ์ธ์คํด์ค์๊ฒ ํธ๋ํฝ์ ๋ณด๋ผ ์ ์๋๋ก ํ์ฉํ๋ ์ธ๋ฐ์ด๋ ๋ฃฐ์ ์ถ๊ฐ ํด ์ค๋ค. ์ด๋ ๊ฒ ํ๊ณ ๋ค์ Health Check๋ก ๊ฐ๋ฉด ์ด์ Instances์ ์ํ๊ฐ Healthy๋ก ๋ฐ๋๋ค. ๊ทธ๋ฆฌ๊ณ NLB๊ฐ ๋ ๊ฐ์ ์ธ์คํด์ค๋ก ๋ก๋๋ฅผ ๋ถ์ฐํ๋ ๊ฒ์ ํ์ธ ํ ์ ์๋ค.