[AWS] ELB
2023. 7. 1. 00:24ใDevops/AWS
https://jeidiiy.notion.site/ELB-b4c839c9b9384e759f39500dde05fd43?pvs=4
๐ก๋ ธ์ ์ ์ต์ ํ๋ ๊ธ์ ๋๋ค. ์ ๋งํฌ๋ฅผ ํตํด ์ ๊ทผํ ์ ์์ต๋๋ค.
ELB
- Elastic Load Balancer
๋ชฉ์ฐจ
- ๋ก๋ ๋ฐธ๋ฐ์๋?
- ELB๋?
- ์ข ๋ฅ
- Sticky Session
- Cross Zone Load Balancing
- SSL in AWS Load Balancer
- Connection Draining
1. ๋ก๋ ๋ฐธ๋ฐ์๋?
- ํธ๋ํฝ์ ๋ฐฑ์๋ ๋๋ ๋ค์ด์คํธ๋ฆผ EC2 ์ธ์คํด์ค ๋๋ ์๋ฒ๋ค๋ก ์ ๋ฌํ๋ ์ญํ ์ ํ๋ ์๋ฒ ๋๋ ์๋ฒ์ ์งํฉ
๋ก๋ ๋ฐธ๋ฐ์๋ฅผ ์ฌ์ฉํ๋ ์ด์
- ๋จ์ผ ์ก์ธ์ค(DNS)๋ง ๋ ธ์ถ
- ๋ค์์ ๋ค์ด์คํธ๋ฆผ ์ธ์คํด์ค๋ก ๋ถ์ฐ์์ผ ๋ถํ ๊ฐ์ ๋ฐ ์ฅ์ ์ฒ๋ฆฌ ์ํ
- ์ฟ ํค๋ก ๊ณ ์ ๋ ๊ฐํ
- ๊ณ ๊ฐ์ฉ์ฑ
- ํด๋ผ์ฐ๋ ๋ด์์ private ํธ๋ํฝ๊ณผ public ํธ๋ํฝ ๋ถ๋ฆฌ ๊ฐ๋ฅ
2. ELB๋?
- AWS์์ ์ ๊ณตํ๋ ๊ด๋ฆฌํ ๋ก๋ ๋ฐธ๋ฐ์
- AWS๊ฐ ๊ด๋ฆฌํ๋ฉฐ ์ด๋ ํ ๊ฒฝ์ฐ์๋ ์๋ ๋ณด์ฅ
- ์ ๋ฐ์ดํธ, ์ ์ง ๊ด๋ฆฌ ๋ฐ ๊ณ ๊ฐธ์ฉ์ฑ
- ์ปค์คํ ๊ธฐ๋ฅ ์ ๊ณต
์ฌ์ฉํด์ผ ํ๋ ์ด์
- ๋ก๋ ๋ฐธ๋ฐ์๋ฅผ ์์ฒด ๊ตฌ์ถ ๋ฐ ์ด์ฉํ๋ ๋น์ฉ๋ณด๋ค ์ ๋ ด
- ์ง์ ๊ด๋ฆฌ ์ ํ์ฅ์ฑ ์ธก๋ฉด์์ ๋ฒ๊ฑฐ๋ก์
- ๋ค์์ AWS ์๋น์ค๋ค๊ณผ ํตํฉ๋์ด ์์
์ํ ํ์ธ (health check)
- ELB๋ EC2 ์ธ์คํด์ค๊ฐ ์ ๋๋ก ๋์ํ๋์ง ํ์ธํ ํ์๊ฐ ์์
- ์ํ ํ์ธ์ ํฌํธ์ ๋ผ์ฐํธ์์ ์ด๋ฃจ์ด์ง
- ๋ฐฑ์๋ ์๋ฒ์์ protocol:HTTP, port:4567, endpoint:/health ์ ๊ฐ์ API๋ฅผ ์คํํด๋์ผ๋ฉด ๋ก๋ ๋ฐธ๋ฐ์ ์๋ฒ์์ ์ด API๋ก ์์ฒญํ์ฌ ์๋ต ์ฝ๋์ ๋ฐ๋ผ ๋ฐฑ์๋ ์๋ฒ์ ์ํ ํ์ธ ๊ฐ๋ฅ
3. ์ข ๋ฅ
- ALB
- NLB
- GWLB
1. ALB (Application Load Balancer, v2 - new generation) - 2016
ํน์ง
- HTTP, HTTPS, WebSocket ์ง์
- ๋จธ์ ๊ฐ ๋ค์ HTTP ์ ํ๋ฆฌ์ผ์ด์
์ ๋ผ์ฐํ
์ ์ฌ์ฉ
- ์ด๋ฌํ ๋จธ์ ๋ค์ ํ๊ฒ ๊ทธ๋ฃน(target group)์ผ๋ก ๋ฌถ์
- ํ๋์ ๋จธ์ ์ ์ฌ๋ฌ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ถํ ๋ถ์ฐ ์ ์ฌ์ฉ
- ์ปจํ ์ด๋, ECS
- ๋ฆฌ๋ค์ด๋ ํธ ์ง์
- HTTP๋ก ์ ๊ทผํ๋ ๊ฒฝ์ฐ HTTPS๋ก ๋ฆฌ๋ค์ด๋ ํธ
- ํ๊ฒ ๊ทธ๋ฃน์ ๋ฐ๋ฅธ ๊ฒฝ๋ก ๊ธฐ๋ฐ ๋ผ์ฐํ
๊ฐ๋ฅ
- URL ๊ฒฝ๋ก ๊ธฐ๋ฐ (example.com/users & example.com/posts)
- URL ํธ์คํธ๋ค์ ๊ธฐ๋ฐ (one.example.com & two.example.com)
- ์ฟผ๋ฆฌ์คํธ๋ง, ํค๋ ๊ธฐ๋ฐ (example.com/users?id=1&order=false)
- ๋ง์ดํฌ๋ก์๋น์ค, ์ปจํ
์ด๋ ๊ธฐ๋ฐ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ฐ์ฅ ์ ํฉํ ๋ก๋ ๋ฐธ๋ฐ์
- ํฌํธ ๋งคํ ๊ธฐ๋ฅ์ด ์์ด ECS ์ธ์คํด์ค์ ๋์ ํฌํธ๋ก ๋ฆฌ๋ค์ด๋ ์ ๊ฐ๋ฅ
๋ณด์ ๊ทธ๋ฃน
- ๋ณด์ ๊ทธ๋ฃน ์ค์ ์ ํตํด ๋ชจ๋ ์ธ๋ถ ํต์ ์ ๋ก๋ ๋ฐธ๋ฐ์์ ํ๊ณ ๋ก๋ ๋ฐธ๋ฐ์์ ๋ค์ด์คํธ๋ฆผ EC2 ์ธ์คํด์ค๋ ์๋ก ๊ฐ์๋ง ํต์ ํ์ฌ ๋ณด์์ฑ์ ํฅ์์ํฌ ์ ์์
- ๋ชจ๋ ๊ธฐ๊ธฐ๋ก๋ถํฐ HTTP, HTTPS์ ๋ํ ์์ฒญ์ ๋ฐ์
- ๋ก๋ ๋ฐธ๋ฐ์์์ ๋ค์ด์คํธ๋ฆผ EC2 ์ธ์คํด์ค์ HTTP๋ฅผ ํตํด ์์ฒญ ์ ์ก
- ๋ค์ด์คํธ๋ฆผ EC2 ์ธ์คํด์ค๋ ๋ก๋๋ฐธ๋ฐ์์๊ฒ HTTP๋ฅผ ํตํด ์๋ต ์ ์ก
- ๋ก๋ ๋ฐธ๋ฐ์๋ ์์ฒญํ ๊ธฐ๊ธฐ์๊ฒ HTTP ์๋ต ์ ์ก
๐ก ๋ค์ด์คํธ๋ฆผ EC2 ์ธ์คํด์ค๋ ๋ก๋ ๋ฐธ๋ฐ์์๋ง ํต์ ํ๋ค. ๋ชจ๋ ์ต์ด ์์ฒญ์ ๋ก๋ ๋ฐธ๋ฐ์์์ ์ฒ๋ฆฌํ๋ค.
ํ๊ฒ ๊ทธ๋ฃน ์ ํ
- EC2 ์ธ์คํด์ค
- ECS ํ์คํฌ
- ๋๋ค
- IP ์ฃผ์ - ๋ฐ๋์ ์ฌ์ค ์ฃผ์
๐ก ALB๋ ์ฌ๋ฌ ํ๊ฒ ๊ทธ๋ฃน์ผ๋ก ๋ผ์ฐํ ๊ฐ๋ฅ
2. NLB (Network Load Balancer, v2 - new generation) - 2017
ํน์ง
- TCP, TLS, UDP ์ง์
- ์ด๋น ์๋ฐฑ๋ง ์์ฒญ ์ฒ๋ฆฌ ๊ฐ๋ฅ → ๊ณ ์ฑ๋ฅ
- 100ms์ ์ง์ฐ ์๊ฐ(ALB๋ 400ms)
- ๊ฐ์ฉ ์์ญ ๋ณ๋ก ํ๋์ ๊ณ ์ IP๋ฅผ ๊ฐ์ง
- ํ๋ ฅ์ IP ์ฃผ์๋ฅผ ๊ฐ ๊ฐ์ฉ ์์ญ์ ํ ๋น ๊ฐ๋ฅ
- ์ฌ๋ฌ ๊ฐ์ ๊ณ ์ IP๋ฅผ ๊ฐ์ง ์ ํ๋ฆฌ์ผ์ด์ ๋ ธ์ถ ์ ์ ์ฉ
- ํ๋ฆฌ ํฐ์ด ๋ฏธ์ ๊ณต
๐ก 1~3๊ฐ์ IP๋ก๋ง ์ ๊ทผํ ์ ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค๋ผ๋ ๋ฌธ์ ๊ฐ ๋์ค๋ฉด NLB ์ต์ ์ ๊ณ ๋ คํ์. ๋ํ ๊ณ ์ฑ๋ฅ, TCP, UDP, ์ ์ IP๊ฐ ๋์ค๋ฉด NLB๋ฅผ ๋ ์ฌ๋ฆฌ์.
๋์ ์๋ฆฌ
- ํ๊ฒ ๊ทธ๋ฃน์ ์์ฑํ๋ฉด NLB๊ฐ ํ๊ฒ ๊ทธ๋ฃน์ผ๋ก ๋ฆฌ๋ค์ด๋ ํธ
- ๋ฐฑ์๋, ํ๋ก ํธ์๋ ๋ชจ๋ TCP๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ๋ฐฑ์๋๋ TCP, ํ๋ก ํธ์๋๋ HTTP๋ฅผ ์ฌ์ฉํ ์๋ ์์
ํ๊ฒ ๊ทธ๋ฃน ์ ํ
- EC2 ์ธ์คํด์ค
- IP ์ฃผ์ - ๋ฐ๋์ ์ฌ์ค ์ฃผ์
- EC2 ์ธ์คํด์ค ๋ฟ๋ง ์๋๋ผ ์์ฒด ๋ฐ์ดํฐ์ผํฐ๋ฅผ ์ฌ์ฉํ ์๋ ์๊ธฐ ๋๋ฌธ
- ๋ ๋ค ๊ฐ์ NLB๋ฅผ ์์ ์ฌ์ฉํ ์ ์์
- ALB
- ALB ์์ NLB๋ฅผ ์ฌ์ฉํ ์ ์์
- NLB๋ฅผ ํตํด ๊ณ ์ IP ์ฃผ์๋ฅผ ์ป์ ์ ์์
- ALB๋ก HTTP ์ ํ์ ํธ๋ํฝ ์ฒ๋ฆฌ
- ALB ์์ NLB๋ฅผ ์ฌ์ฉํ ์ ์์
ํ๊ฒ ๊ทธ๋ฃน์ด ์ํํ๋ ์ํ ํ์ธ
- TCP, HTTP, HTTPS ์ง์
- ์ ํ๋กํ ์ฝ์ ํ์ฉํด ํ๊ฒ ๊ทธ๋ฃน์ ๋ํ ์ํ ํ์ธ ๊ฐ๋ฅ
3. GWLB (Gateway Load Balancer) - 2020
ํน์ง
- AWS์ ์๋ ํํฐ ๋คํธ์ํฌ ๊ฐ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ๋ฆฟ(fleet)์ ๋ฐฐํฌ, ํ์ฅ ๋ฐ ๊ด๋ฆฌํ ์ ์๋ ๋ก๋ ๋ฐธ๋ฐ์
- ๋ฐฉํ๋ฒฝ, ์นจ์ ํ์ง ๋ฐ ์๋ฐฉ ์์คํ , ํจํท ๊ฒ์ฌ ์์คํ , ํ์ด๋ก๋ ์กฐ์ ๋ฑ์ ์์ ์ด ํ์ํ ๊ฒฝ์ฐ ์ ํฉ
- 3๊ณ์ธต(IP)์์ ๋์
- ๋ ๊ฐ์ง ๊ธฐ๋ฅ์ด ๊ฒฐํฉ๋์ด ์์
- Transparent Network Gateway
- VPC์ ๋ชจ๋ ํธ๋ํฝ์ด GWLB ํ๋์ ์ ๊ตฌ(entry)์ ์ถ๊ตฌ(exit)๋ฅผ ํต๊ณผ
- Load Balancer
- ํ๊ฒ ๊ทธ๋ฃน์ ๊ฐ์ ์ดํ๋ผ์ด์ธ์ค ์งํฉ์ ํธ๋ํฝ์ ํ์ฐ
- Transparent Network Gateway
- GENEVE ํ๋กํ ์ฝ์์ 6081 ํฌํธ๋ฅผ ์ฌ์ฉ
๋์ ์๋ฆฌ
- GWLB๊ฐ ์์ฑ๋๋ฉด VPC์์ ๋ผ์ฐํ ํ ์ด๋ธ์ด ์ ๋ฐ์ดํธ๋จ
- ๋ชจ๋ ์ฌ์ฉ์ ํธ๋ํฝ์ GWLB๋ฅผ ํต๊ณผ
- GWLB๋ ๊ฐ์ ์ดํ๋ผ์ด์ธ์ค์ ํ๊ฒ ๊ทธ๋ฃน ์ ํ์ผ๋ก ํธ๋ํฝ ํ์ฐ
- ๋ชจ๋ ํธ๋ํฝ์ ์ดํ๋ผ์ด์ธ์ค์ ๋๋ฌํ๊ณ ๊ฐ ์ดํ๋ผ์ด์ธ์ค๋ ํธ๋ํฝ ๋ถ์ ๋ฐ ์ฒ๋ฆฌ
- ๋ฐฉํ๋ฒฝ, ์นจ์ ํ์ง ๋ฑ
- ์ด์์ด ์์ผ๋ฉด ๋ค์ GWLB๋ก ์ ์ก, ์ด์์ด ์์ผ๋ฉด ํธ๋ํฝ ๋๋
ํ๊ฒ ๊ทธ๋ฃน ์ ํ
- EC2 ์ธ์คํด์ค
- ์์ฒด ๋ฐ์ดํฐ์ผํฐ
4. Sticky Session (Session Affinity)
- ๊ฐ์ ํด๋ผ์ด์ธํธ๋ ํญ์ ๊ฐ์ ์ธ์คํด์ค๋ก ๋ฆฌ๋ค์ด๋ ํธํ๋๋ก ๊ณ ์ ํ๋ ๊ธฐ๋ฅ
- ์ฟ ํค ๊ธฐ๋ฐ ๋์
- ์ฟ ํค๊ฐ ๋ง๋ฃ๋๋ฉด ๋ค๋ฅธ EC2 ์ธ์คํด์ค๋ก ๋ฆฌ๋ค์ด๋ ํธ๋จ
- ์ธ์
๋ฐ์ดํฐ๋ฅผ ์์ง ์์์ผ ํ๋ ๊ฒฝ์ฐ ์ฌ์ฉ
- ๋ก๊ทธ์ธ
๐ก ๊ณ ์ ์ฑ์ ํ์ฑํํ๋ฉด ๋ฐฑ์๋ EC2 ์ธ์คํด์ค ๋ถํ์ ๋ถ๊ท ํ์ ์ด๋ํ ์ ์๋ค.
์ฟ ํค ์ ํ
์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ฐ ์ฟ ํค
- ํ๊ฒ ๊ธฐ๋ฐ์ผ๋ก ์์ฑ๋๋ ์ฟ ํค
- ์ ํ๋ฆฌ์ผ์ด์ ์์ ์์ฑ๋จ
- ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ํ ๋ชจ๋ ์ฌ์ฉ์ ์ ์ ์์ฑ ํฌํจ ๊ฐ๋ฅ
- ์ฟ ํค ์ด๋ฆ์ ๊ฐ ํ๊ฒ ๊ทธ๋ฃน ๋ณ๋ก ๊ฐ๋ณ์ ์ผ๋ก ์ง์ ํด์ผ ํจ
โ ๏ธ AWSALB, AWSALBAPP, AWSALBTG ์ ๊ฐ์ ์ด๋ฆ์ ์ด๋ฏธ ELB์์ ์ฌ์ฉ ์ค์ด๊ธฐ ๋๋ฌธ์ ์ฌ์ฉํ๋ฉด ์ ๋๋ค.
๊ธฐ๊ฐ ๊ธฐ๋ฐ ์ฟ ํค
- ๋ก๋ ๋ฐธ๋ฐ์์์ ์์ฑ๋๋ ์ฟ ํค
- ALB์์๋ AWSALB, CLB์์๋ AWSELB์ ์ด๋ฆ์ ๊ฐ์ง
- ํน์ ๊ธฐ๊ฐ์ ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ฃ๋๋ฉฐ ๊ทธ ๊ธฐ๊ฐ์ ๋ก๋ ๋ฐธ๋ฐ์์์ ์ง์
๐ก ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ฐ ์ฟ ํค๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๊ธฐ๊ฐ์ ์ง์ ํ ์ ์๋ค.
5. Cross Zone Load Balancing
- ์ฌ๋ฌ ๋ก๋ ๋ฐธ๋ฐ์ ์ธ์คํด์ค๊ฐ ๋ชจ๋ ๊ฐ์ฉ ์์ญ์ ๋ฑ๋ก๋ ๋ชจ๋ ์ธ์คํด์ค์ ๋ถํ๋ฅผ ๊ณ ๋ฅด๊ฒ ๋ถ๋ฐฐํ๋ ๊ธฐ๋ฅ
์๋๋ฆฌ์ค
ํ์ฑํ ์
- ๋ ๊ฐ์ฉ ์์ญ์ ๋ฑ๋ก๋ ์ธ์คํด์ค๊ฐ 10๊ฐ์ด๋ฏ๋ก ๊ฐ ์ธ์คํด์ค๋ ๋ชจ๋ 10%์ฉ์ ํธ๋ํฝ ์ฒ๋ฆฌ
๋นํ์ฑํ ์
- ๋ ๊ฐ์ฉ ์์ญ์ ๋ก๋ ๋ฐธ๋ฐ์์ ๊ฐ๊ฐ 50%์ฉ ํธ๋ํฝ ๋ถ์ฐ
- ๊ฐ์ฉ ์์ญ 1์๋ 2๊ฐ์ ์ธ์คํด์ค๊ฐ ์์ผ๋ฏ๋ก ๊ฐ ์ธ์คํด์ค๋ 25%์ฉ ์ฒ๋ฆฌ
- ๊ฐ์ฉ ์์ญ 2์๋ 8๊ฐ์ ์ธ์คํด์ค๊ฐ ์์ผ๋ฏ๋ก ๊ฐ ์ธ์คํด์ค๋ 6.25%์ฉ ์ฒ๋ฆฌ
๐ก ์ํฉ์ ๋ง๊ฒ ์ฌ์ฉํ๋ฉด ๋๋ค.
๋ก๋ ๋ฐธ๋ฐ์ ๋ณ ์ฐจ์ด
ALB
- ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ (ํ๊ฒ ๊ทธ๋ฃน ๋ ๋ฒจ์์ ๋นํ์ฑํ ๊ฐ๋ฅ)
- ๊ฐ์ฉ ์์ญ ๋ฐ์ดํฐ ์ด์ ์ ๋น์ฉ X
NLB, GWLB
- ๊ธฐ๋ณธ์ ์ผ๋ก ๋นํ์ฑํ
- ํ์ฑํํ๋ค๋ฉด ๊ฐ์ฉ ์์ญ ๋ฐ์ดํฐ ์ด์ ์ ๋น์ฉ O
6. SSL in AWS Load Balancer
ํ๋ฆ
- ์ธ๋ถ์๋ HTTPS ๊ธฐ๋ฐ์ผ๋ก Load Balancer์ ํต์ ํ๊ณ ๋ด๋ถ์์ HTTP๋ก ํต์
SSL ์ธ์ฆ
CLB
- ๋จ ํ๋์ SSL ์ธ์ฆ๋ง์ ์ง์
- ์ฌ๋ฌ ๊ฐ์ SSL ์ธ์ฆ์ ์ฒ๋ฆฌํ๋ ค๋ฉด ๊ทธ๋งํผ์ CLB๋ฅผ ์ฌ์ฉํด์ผ ํจ
ALB, NLB
- ์ฌ๋ฌ ๊ฐ์ SSL ์ธ์ฆ ์ฒ๋ฆฌ ๊ฐ๋ฅ
- SNI ์ฌ์ฉ ๊ฐ๋ฅ
๐ก AWS์์ ์ธ์ฆ์ ๊ด๋ฆฌ ์๋น์ค๋ ACM(AWS Certificate Manager)์์ ๊ด๋ฆฌํ๋ค.
7. Connection Draining
- ์ธ์คํด์ค๊ฐ ๋ฑ๋ก ์ทจ์ ๋๋ ๋น์ ์์ ์ธ ์ํ์ ์์ ๋ ์ธ์คํด์ค์ ์ด๋ ์ ๋ ์๊ฐ์ ์ฃผ์ด ์ธํ๋ผ์ดํธ ์์ฒญ, ์ฆ ํ์ฌ ํ์ฑํ๋ ์์ฒญ์ ์๋ฃํ ์ ์๋๋ก ํ๋ ๊ธฐ๋ฅ
- ์ฐ๊ฒฐ, ์ฆ ์ธ์คํด์ค๊ฐ ๋๋ ์ด๋๋๋ฉด ELB๋ ํด๋น ์ธ์คํด์ค๋ก๋ ์๋ก์ด ์์ฒญ์ ๋ณด๋ด์ง ์์
- ๋๋ ์ด๋ ์ํ์ ์ธ์คํด์ค๋ ํ์ฌ ํ์ฑํ๋ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ์ผ์ ์๊ฐ์ ๊ฐ์ง
- ์๊ฐ - 1~3600 ์ด๋ก ์ง์ ๊ฐ๋ฅ. ๊ธฐ๋ณธ์ ์ผ๋ก 300์ด(5๋ถ)
- 0์ผ๋ก ์ค์ ์ ๊ธฐ๋ฅ ๋นํ์ฑํ
๋ค์ด๋ฐ
- Connection Draining - for CLB
- Deregistration Delay - for ALB & NLB