λμ©λ νΈλ ν½ μ²λ¦¬ - λ‘λ λ°Έλ°μ± κ°λ μ 리
π μ¬μ©μκ° λμ΄λλ©΄, μλ²λ μ΄λ»κ² νμ₯ν κΉ?
μλΉμ€ μ΄μ μ€ μλ²λ λͺ λκ° νμν κΉ?
β
μ¬μ©μκ° μ λ€λ©΄ 1λμ μλ²λ‘λ μΆ©λΆνμ§λ§,
β
μ¬μ©μκ° μ¦κ°νλ©΄ μλ²μ λΆνκ° μ»€μ§κ³ , μ¬νλ©΄ μλ²κ° λ€μ΄λ μλ μλ€.
μ΄λ΄ λ "μ€μΌμΌ μ (Scale-Up)" λλ "μ€μΌμΌ μμ(Scale-Out)"μ ν΅ν΄ μλ²λ₯Ό νμ₯ν΄μΌ νλ€.
ποΈ μλ² νμ₯ λ°©λ²
1οΈβ£ μ€μΌμΌ μ (Scale-Up)
β νμ¬ μλ²μ μ±λ₯μ μ
κ·Έλ μ΄λνλ λ°©λ²
β CPU, λ©λͺ¨λ¦¬, λμ€ν¬ μΆκ°νμ¬ μ²λ¦¬ λ₯λ ₯ ν₯μ
β (μμ§ νμ₯, Vertical Scaling)
2οΈβ£ μ€μΌμΌ μμ (Scale-Out)
β μλ² κ°μλ₯Ό λλ € λΆνλ₯Ό λΆμ°νλ λ°©λ²
β μ¬λ¬ λμ μλ²κ° λμΌν μμ²μ μ²λ¦¬
β (μν νμ₯, Horizontal Scaling)
π‘ μ€μΌμΌ μμ μ "λ‘λ λ°Έλ°μ(Load Balancer)"κ° νμ
π λ‘λ λ°Έλ°μ(Load Balancer)λ?
λ‘λ λ°Έλ°μ± : νΈλν½μ μ¬λ¬ μλ²λ‘ λΆμ°νμ¬ μλ²μ λΆνλ₯Ό μ€μ΄κ³ μμ μ±μ λμ΄λκΈ°μ .
λ‘λ λ°Έλ°μ : λ‘λ λ°Έλ°μ±μ μννλ νλμ¨μ΄ λλ μννΈμ¨μ΄ μ₯λΉ.
β λ‘λ λ°Έλ°μ±(Load Balancing) μ£Όμ μν
1οΈβ£ μμ² λΆμ°
μ¬μ©μ μμ²μ μ¬λ¬ μλ²λ‘ λΆμ° →
β λΆν λΆμ° : νΉμ μλ² κ³ΌλΆν λ°©μ§
β νμ₯μ± : μ±λ₯ λ° μλ μ΅μ ν
2οΈβ£ ν¬μ€ μ²΄ν¬ (Health Check)
λ‘λ λ°Έλ°μλ λ°±μλ μλ²μ μνλ₯Ό μ£ΌκΈ°μ μΌλ‘ νμΈνλ ν¬μ€ 체ν¬λ₯Ό μνν¨.
β μ μμ μΈ μλ΅μ΄ μμΌλ©΄ ν΄λΉ μλ² μ μΈ
β μ₯μ κ°μ§ μ λ€λ₯Έ μλ²λ‘ νΈλν½ μ ν
3οΈβ£ SSL μ²λ¦¬
β HTTPSλ₯Ό ν΅ν΄ μνΈνλ λ°μ΄ν° μ‘μμ κ°λ₯
β λ‘λ λ°Έλ°μκ° μνΈν μ²λ¦¬ → μΉ μλ² λΆλ΄ κ°μ
4οΈβ£ λΆμ μμ² λμ
β λΆμ μμ²(DoS, DDoS 곡격 λ±) μ°¨λ¨
β μΉ μλ²κ° μλ λ‘λ λ°Έλ°μμμ λ¨Όμ νν°λ§
πΉλ‘λ λ°Έλ°μ μ ν
β
λ‘λ λ°Έλ°μλ 'OSI 7 Layerλ₯Ό κΈ°μ€μΌλ‘ λΆνλ₯Ό μ΄λ»κ² λΆμ°ν μ§'μ λ°λΌ μ’
λ₯κ° λλλ€.
2, 3κ³μΈ΅μ κΈ°μ€μΌλ‘ λΆνλ₯Ό λΆμ°νλ©΄ κ° L2, L3μΈ λ°©μμ΄λ€.
μμ κ³μΈ΅μ νμ κ³μΈ΅μ λ°μ΄ν°λ₯Ό λͺ¨λ κ°μ§κΈ° λλ¬Έμ, μμ κ³μΈ΅μΌμλ‘ μ¬μΈν λ‘λ λ°Έλ°μ±μ΄ κ°λ₯νκ³ νμ κ³μΈ΅μΌμλ‘ κ°λ¨ν λ‘λ λ°Έλ°μ±λ§ κ°λ₯νλ€.
β μ£Όλ‘ μ¬μ©λλ λ‘λ λ°Έλ°μ : L4 vs L7 λ‘λ λ°Έλ°μ
κΈ°μ€ | L4 (Transport Layer) | L7 (Application Layer) |
μλ | λΉ λ¦ | μλμ μΌλ‘ λλ¦Ό |
νΈλν½ λΆμ° κΈ°μ€ | IP, ν¬νΈ, νλ‘ν μ½ | URL, μΏ ν€, ν€λ, μμ² λ΄μ© |
μΈλΆ νΈλν½ μ μ΄ | λΆκ°λ₯ | κ°λ₯ |
μ£Όμ νμ© | TCP/UDP μλΉμ€, κ²μ μλ² | API, λ§μ΄ν¬λ‘μλΉμ€, μΉ μλΉμ€ |
νμ¬ L7 λ‘λ λ°Έλ°μ(ALB λ±)λ₯Ό μ νΈνλ μΆμΈ. μΈμ μ μ§, μ κ΅ν νΈλν½ μ μ΄κ° νμν μλΉμ€μ μ ν©
β
L4 λ‘λ λ°Έλ°μλ λΉ λ₯΄κ³ λ¨μν λΆμ°μ μννκ³ , L7 λ‘λ λ°Έλ°μλ HTTP μμ²μ μΈλ°νκ² λΆμνμ¬ νΈλν½μ μ΅μ ννλ€.
β
νΈλν½ ν¨ν΄κ³Ό μλΉμ€ μꡬμ¬νμ λ°λΌ L4 λλ L7 λ‘λ λ°Έλ°μλ₯Ό μ ννμ¬ μ¬μ©νλ©΄ λλ€.
L4 λ‘λ λ°Έλ°μ± λ°©λ²
L4 Load Balancer = CLB(Connection Load Balancer), SLB(Session Load Balancer)
λ€νΈμν¬ κ³μΈ΅μ΄λ νΈλμ€ν¬νΈ κ³μΈ΅μ μ 보λ₯Ό λ°νμΌλ‘ λ‘λλ₯Ό λΆμ°νλ€.
μ¦, IPμ£Όμλ ν¬νΈλ²νΈ, MACμ£Όμ, μ μ‘ νλ‘ν μ½ λ±μ λ°λΌ νΈλν½μ λλκ³ λΆμ°μ²λ¦¬ μν.
- λΌμ΄λ λ‘λΉ(Round Robin)
- μλ²μ μμ°¨μ μΌλ‘ νΈλν½μ λΆλ°°
- κ· λ± λ°°λΆμ΄ κ°λ₯νμ§λ§ μλ² μ±λ₯μ κ³ λ €νμ§ μμ
- κ°μ€μΉ κΈ°λ°(Weighted Round Robin)
- μ±λ₯μ΄ λμ μλ²μ λ λ§μ μμ²μ λ°°μ
- μ΅μ μ°κ²°(Least Connection)
- νμ¬ μ°κ²° μκ° κ°μ₯ μ μ μλ²λ‘ νΈλν½μ μ λ¬
- μ€μκ° λΆνλ₯Ό κ³ λ €ν μ μμ΄ ν¨μ¨μ
- μλ΅ μκ° κΈ°λ°(Response Time)
- μλ΅ μκ°μ΄ λΉ λ₯Έ μλ²μ μ°μ μ μΌλ‘ νΈλν½μ μ λ¬
- ν΄μ(Hash) κΈ°λ°
- νΉμ ν΄λΌμ΄μΈνΈ(IP λ±)λ νΉμ μλ²μλ§ μ°κ²°
- λμν(Bandwidth) κΈ°λ°
- μλ²μ λ€νΈμν¬ λμνμ κ³ λ €νμ¬ νΈλν½ λΆμ°
L7 λ‘λ λ°Έλ°μ± λ°©λ²
L4 Load Balancerμ κΈ°λ₯μ ν¬ν¨νλ©° OSI 7κ³μΈ΅μ νλ‘ν μ½μ λ°νμΌλ‘λ λΆμ° μ²λ¦¬κ° κ°λ₯νλ€.
HTTP ν€λ, μΏ ν€ λ± μ¬μ©μμ μμ²μ λΆμν΄ μ κ΅ν λΆμ° κ°λ₯
- URL Switching
- νΉμ URL ν¨ν΄μ λ°λΌ λ€λ₯Έ μλ²λ‘ μ°κ²°
- μ) /images/* μμ²μ μ΄λ―Έμ§ μλ²λ‘ μ λ¬
- Context Switching
- μμ²λ 리μμ€ μ νμ λ°λΌ μλ²λ₯Ό λ€λ₯΄κ² μ°κ²°
- μ) .jpg, .png μμ²μ λ―Έλμ΄ μλ²λ‘ μ λ¬
- μΏ ν€ κΈ°λ° μ§μμ±(Persistence with Cookies)
- ν΄λΌμ΄μΈνΈκ° μ΄μ μ μ°κ²°νλ μλ²λ‘ μ§μμ μΌλ‘ μ°κ²°
λ‘λ λ°Έλ°μ μ₯μ & λ¨μ
β μ₯μ
β μλ² λ€μ΄ μ μλμΌλ‘ λ€λ₯Έ μλ²λ‘ μμ²μ μ λ¬νμ¬ μμ μ± ν보
β νΈλν½μ ν¨μ¨μ μΌλ‘ λΆμ°ν΄ μ±λ₯ ν₯μ
β νμ₯μ±(Scale-out) μ©μ΄
β λ¨μ
β μΈμ κ΄λ¦¬ λ¬Έμ (Sticky Session νμ)
- λ‘λλ°Έλ°μλ₯Ό μ¬μ©ν λ μ΄λ €μ΄ λ¬Έμ μ€ νλλ μΈμ λ°μ΄ν°λ₯Ό κ΄λ¦¬νλ κ²μ΄λ€.
- ν΄λΌμ΄μΈνΈμ μ°κ²° μ 보λ₯Ό μ μ₯νλ μΈμ μ΄ λ‘λλ°Έλ°μ±μ ν΅ν΄ νλμ μλ² μ₯λΉμ μ μ₯μ΄ λλ κ²½μ°, μΆν λ€λ₯Έ μλ²λ‘ μ μνκ² λλ©΄, ν΄λΉ ν΄λΌμ΄μΈνΈμ μΈμ μ΄ μ μ§λμ§ μλλ€. μ¦, μλ²μ μ‘μΈμ€ ν λλ§λ€ λ€λ₯Έ μΈμ μ μ¬μ©νλ€λ©΄ νΉμ μ¬μ©μμ μ 보λ₯Ό μΌκ΄μ±μκ² μ μ§ν μ μκ² λλ€.
- μ΄λ¬ν λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ μΈμ μ κ³ μ (session sticky)νλ€. νμ§λ§ κ³ μ λ μΈμ μ λ Έλμ μ₯μ κ° λ°μνλ©΄ κ³ μ ν μλ―Έκ° μμ΄μ§λ€.
β λ‘λ λ°Έλ°μ μμ²΄κ° λ¨μΌ μ₯μ μ (SPOF, Single Point of Failure)μ΄ λ μ μμ
β λμ μ±λ₯μ μν κ²½μ° λΉμ© μ¦κ°
L4/L7 λ‘λ λ°Έλ°μμ μ±λ₯ μ§ν
- μ΄λΉ μ°κ²° μ (CPS: Connections per Second)
- μ΄λΉ μ²λ¦¬ κ°λ₯ν TCP μ°κ²° μ
- λμ μ°κ²° μ (Concurrent Connections)
- μ μ§ν μ μλ μ΅λ λμ μΈμ μ
- μ²λ¦¬ μ©λ (Throughput)
- μ΄λΉ μ²λ¦¬ κ°λ₯ν λ°μ΄ν°λ (bps λλ pps λ¨μ)
πΉ AWS λ‘λ λ°Έλ°μ μ’ λ₯
AWSμμλ ELB(Elastic Load Balancing) μλΉμ€λ₯Ό ν΅ν΄ λ€μν λ‘λ λ°Έλ°μλ₯Ό μ 곡.
λ‘λ λ°Έλ°μ νΉμ§ μ¬μ© μ¬λ‘
λ‘λ λ°Έλ°μ μ ν | νΉμ§ | μ΄μ©μ¬λ‘ |
ALB (Application Load Balancer) | L7 κΈ°λ° HTTP/HTTPS νΈλν½ μ΅μ ν, κ³ κΈ λΌμ°ν κΈ°λ₯ μ 곡 |
μΉ μ ν리μΌμ΄μ , API μλ² |
NLB (Network Load Balancer) | L4 κΈ°λ° μ΄κ³ μ±λ₯, μ μ§μ°, TCP/UDP μ§μ |
κ²μ μλ², κΈμ΅ μμ€ν |
CLB (Classic Load Balancer) | μμ λ°©μ, νμ¬λ κ±°μ μ¬μ©λμ§ μμ 보μ λ° λ€νΈμν¬ κ°μ μ΄νλΌμ΄μΈμ€μ© |
κΈ°μ‘΄ AWS μμ€ν κ³Ό νΈν νμ μ |
awsμ λ‘λ λ°Έλ°μ μ ν μ 리
1. Application Load Balancer (ALB)
• νΉμ§: HTTP λ° HTTPS νΈλν½μ μ²λ¦¬νλ μ ν리μΌμ΄μ
μ μ ν© (API μλ²)
• μλ λ°©μ: μμ²(Request) μμ€μμ μλ
• μ μ© λμ:
• λ§μ΄ν¬λ‘μλΉμ€
• 컨ν
μ΄λ κΈ°λ° μ ν리μΌμ΄μ
• κ³ κΈ λΌμ°ν
κΈ°λ₯ νμ μ
• λ€μ΄μ΄κ·Έλ¨: (Application Load Balancer ꡬ쑰 ν¬ν¨)
• μμ± κ°λ₯
2. Network Load Balancer (NLB)
• νΉμ§: μ΄κ³ μ±λ₯, μ μ§μ° λ€νΈμν¬ νΈλν½ μ²λ¦¬μ μ ν©(WebSocket μλ²)
• μλ λ°©μ: μ°κ²°(Connection) μμ€μμ μλ
• μ μ© λμ:
• μ΄λΉ μλ°±λ§ κ°μ μμ² μ²λ¦¬
• λκ·λͺ¨ TLS μ€νλ‘λ©
• μ€μ μ§μ€νλ μΈμ¦μ λ°°ν¬
• UDP νΈλν½ μ§μ
• κ³ μ IP μ£Όμκ° νμν μλΉμ€
• λ€μ΄μ΄κ·Έλ¨: (Network Load Balancer ꡬ쑰 ν¬ν¨)
• μμ± κ°λ₯
3. Gateway Load Balancer (GLB)
• νΉμ§: μλνν° κ°μ μ΄νλΌμ΄μΈμ€ κ΄λ¦¬μ μ ν©
• μλ λ°©μ: GENEVE νλ‘ν μ½ μ§μ
• μ μ© λμ:
• 보μ λ° κ·μ μ€μ κ°νλ₯Ό μν λ€νΈμν¬ μ΄νλΌμ΄μΈμ€
• μ μ±
κΈ°λ° νΈλν½ μ μ΄
• λ€μ΄μ΄κ·Έλ¨: (Gateway Load Balancer ꡬ쑰 ν¬ν¨)
• μμ± κ°λ₯
π― μμ² λΌμ°ν (Request Routing)
λ‘λ λ°Έλ°μλ μμ²μ λ΄λΆ μλ²λ‘ μ λ¬ν λ ν¬νΈλ νλ‘ν μ½μ λ³νν μ μλ€.
μμ:
β
ν΄λΌμ΄μΈνΈ → HTTPS 80 ν¬νΈ μμ²
β
λ‘λ λ°Έλ°μ → λ΄λΆ μλ²λ‘ HTTP 8080 λ³ν
(SSL μ²λ¦¬ λΆλ΄μ λ‘λ λ°Έλ°μμμ μ²λ¦¬νκΈ° λλ¬Έ!)
π AWSμμ ALB μμ±νκΈ°
1οΈβ£ κ°μ© μμ μ€μ
β μμ²μ λΆμ°ν κ°μ© μμ μ ν
β Public Subnetμ μ°κ²° νμ!
2οΈβ£ 보μ κ·Έλ£Ή μ€μ
β HTTP/HTTPS μμ²μ λ°μ 보μ κ·Έλ£Ή μ€μ
3οΈβ£ λμ κ·Έλ£Ή μμ±
β λ‘λ λ°Έλ°μλ₯Ό μ°κ²°ν μΉ μλ² κ·Έλ£Ή μμ±
β ν¬νΈ(μ: 8080) μ€μ
β ν¬μ€ 체ν¬(Health Check) κ²½λ‘ μ
λ ₯ → μ κΈ°μ μΈ μλ² μν κ²μ¬
4οΈβ£ 리μ€λ λ° λΌμ°ν μ€μ
β 리μ€λ μμ± (μ: HTTP 80)
β μμ±ν λμ κ·Έλ£Ήκ³Ό μ°κ²°
β ALB μμ± ν, DNS μ£Όμλ₯Ό μ¬μ©ν΄ μ μ κ°λ₯!
π μ€ν μ€μΌμΌλ§ ( Auto Scaling)
β μ€ν μ€μΌμΌλ§ κ°λ
β νΈλν½μ΄ μ¦κ°νλ©΄ μλμΌλ‘ EC2(μλ²) μΈμ€ν΄μ€λ₯Ό νμ₯νκ³ ,
β νΈλν½μ΄ κ°μνλ©΄ λΆνμν μΈμ€ν΄μ€λ₯Ό μ€μ¬ λΉμ© μ κ°μ΄ κ°λ₯.
β AWS μ€ν μ€μΌμΌλ§ κ·Έλ£Ή(ASG) νμ© κ°λ₯
β μ€ν μ€μΌμΌλ§ μ₯μ
β νΈλν½ μ¦κ° μ μλμΌλ‘ μλ² μΆκ°
β μλ² κ³ΌλΆν λ°©μ§
β νΈλν½ κ°μ μ μλμΌλ‘ λΆνμν μλ² μμ (λΉμ© μ κ°)
β λ‘λ λ°Έλ°μ(ALB)μ ν¨κ» μ¬μ©νλ©΄ νΈλν½μ μλμΌλ‘ λΆμ° κ°λ₯
π₯ λ‘λ λ°Έλ°μ± vs μ€ν μ€μΌμΌλ§
κΈ°λ₯ μ€λͺ
λ‘λ λ°Έλ°μ± | νΈλν½μ μ¬λ¬ μλ²λ‘ λΆμ° |
μ€ν μ€μΌμΌλ§ (Auto Scaling) | μλ²λ₯Ό μλμΌλ‘ μΆκ°/μμ νμ¬ νμ₯ |
β
νΈλν½ μ¦κ° → μλ² μλ μΆκ°
β
νΈλν½ κ°μ → μλ² μλ μμ (λΉμ© μ κ°!)
β
AWS μ€ν μ€μΌμΌλ§ κ·Έλ£Ή(ASG) νμ© κ°λ₯
π οΈ NestJSμμ λ‘λ λ°Έλ°μ± μ μ© λ°©λ²
1οΈβ£ Nginx Reverse Proxy νμ©
http {
upstream nest_servers {
server 127.0.0.1:3000;
server 127.0.0.1:3001;
server 127.0.0.1:3002;
}
server {
listen 80;
location / {
proxy_pass http://nest_servers;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
}
β ν΄λΌμ΄μΈνΈ μμ²μ μλμΌλ‘ μ¬λ¬ NestJS μλ²λ‘ λΆμ°
2οΈβ£ AWS ALB + μ€ν μ€μΌμΌλ§ νμ©
β νΈλν½ μ¦κ° μ EC2 μλ νμ₯
β λ‘λ λ°Έλ°μμ μ°κ³νμ¬ λΆν λΆμ°
3οΈβ£ PM2 ν΄λ¬μ€ν° λͺ¨λ νμ©
npm install pm2 -g
pm2 start dist/main.js -i max
β λ¨μΌ μλ² λ΄μμλ λ©ν° νλ‘μΈμ€λ‘ νΈλν½ λΆμ° κ°λ₯
π― κ²°λ‘
β
μ¬μ©μκ° λ§μμ§λ€λ©΄? → λ‘λ λ°Έλ°μ± + μ€ν μ€μΌμΌλ§ μ μ© νμ!
β
νΈλν½ μ¦κ° μ μλ νμ₯? → AWS μ€ν μ€μΌμΌλ§ κ·Έλ£Ή(ASG) νμ©!
β
μΈμ
μ μ§ νμ? → Sticky Session or μΈμ
ν΄λ¬μ€ν°λ§ κ³ λ €!
π‘ AWS ALB + μ€ν μ€μΌμΌλ§ μ μ© μ μλ μ΄μ κ°λ₯ π
μ°Έκ³
https://chunsubyeong.tistory.com/106
https://kchanguk.tistory.com/146
https://sjh9708.tistory.com/98
https://dev.classmethod.jp/articles/load-balancing-types-and-algorithm/
https://www.smileshark.kr/post/what-is-a-load-balancer-a-comprehensive-guide-to-aws-load-balancer
λμ©λ νΈλ ν½ μ²λ¦¬λ°©λ²
https://hs-backend.tistory.com/228
nestjs μ μ©
https://andongmin.com/docs/nest/ch9/ch9-3
https://guti-coding.tistory.com/197?category=1195671
aws μ€μ
https://aws.amazon.com/ko/elasticloadbalancing/?did=ft_card&trk=ft_card
λ‘λ벨λ°μ 컨νΈλ‘€λ¬
https://docs.aws.amazon.com/eks/latest/userguide/aws-load-balancer-controller.html
κ°λΉμ λλ©μΈμΌλ‘ μΈμ¦μ λ°κΈ
μ 리μ€
1οΈβ£ 2οΈβ£ 3οΈβ£ 4οΈβ£ 5οΈβ£ 6οΈβ£ 7οΈβ£ 8οΈβ£ 9οΈβ£ π
5. Sticky Session (μΈμ
μ μ§)
κΈ°λ³Έμ μΌλ‘ λ‘λ λ°Έλ°μλ μμ²μ μ¬λ¬ μλ²μ λλ€νκ² λΆλ°°νμ§λ§,λ‘κ·ΈμΈ μ μ§μ κ°μ μΈμ
μ΄ νμν κ²½μ° κ°μ μ¬μ©μμ μμ²μ λμΌν μλ²λ‘ 보λ΄μΌ ν¨.
β
Sticky Session λ°©μ
1οΈβ£ λ‘λ λ°Έλ°μμμ μ²λ¦¬ (AWS ALBμμ Sticky Session μ€μ κ°λ₯)βοΈ μΏ ν€λ₯Ό μ΄μ©νμ¬ νΉμ μ¬μ©μμ μμ²μ λμΌν μλ²λ‘ μ μ§
2οΈβ£ μΈμ
ν΄λ¬μ€ν°λ§βοΈ μλ² κ° μΈμ
μ 곡μ νλ λ°©μβοΈ μλ² μ₯μ μμλ μΈμ
μ μ§ κ°λ₯βοΈ λ¨μ : μλ‘μ΄ μλ² μΆκ° μ κΈ°μ‘΄ μλ² μ€μ μ
λ°μ΄νΈ νμ
Sticky Session μ μ© μΆμ² μ¬λ‘
λ‘κ·ΈμΈ μν μ μ§κ° νμν μΉ μλΉμ€
νΉμ μ¬μ©μμ μΈμ
λ°μ΄ν°κ° νΉμ μλ²μ μ’
μλ κ²½μ°
6. NestJSμμ λ‘λ λ°Έλ°μ± & μ€ν μ€μΌμΌλ§ μ μ©
β
1) Nginx Reverse Proxy νμ©
π Nginx μ€μ μμ
// /etc/nginx/nginx.conf
http {
upstream nest_servers {
server 127.0.0.1:3000;
server 127.0.0.1:3001;
server 127.0.0.1:3002;
}
server {
listen 80;
location / {
proxy_pass http://nest_servers;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
}
βοΈ κ²°κ³Ό: ν΄λΌμ΄μΈνΈ μμ²μ΄ μλμΌλ‘ μ¬λ¬ NestJS μΈμ€ν΄μ€λ‘ λΆμ°λ¨
β
2) AWS λ‘λ λ°Έλ°μ & μ€ν μ€μΌμΌλ§ νμ©
AWS ALB + ASG (Auto Scaling Group) μ‘°ν© μΆμ²
μμ²λμ λ°λΌ EC2 μΈμ€ν΄μ€ μλ μ¦κ°
νΈλν½ μ¦κ° μ μλ² μλ μΆκ° → κ³ΌλΆν λ°©μ§
νΈλν½ κ°μ μ λΆνμν μλ² μλ μμ → λΉμ© μ κ°
β
3) PM2 ν΄λ¬μ€ν° λͺ¨λ νμ© (λ¨μΌ μλ² λ΄ λ©ν° νλ‘μΈμ€)
π NestJS ν΄λ¬μ€ν°λ§ μ€ν λ°©λ²
npm install pm2 -g
pm2 start dist/main.js -i max
βοΈ λ¨μΌ μλ²μμλ μ¬λ¬ κ°μ NestJS νλ‘μΈμ€λ₯Ό μ€ννμ¬ νΈλν½ λΆμ° κ°λ₯
7. κ²°λ‘
β
μλ²κ° 2κ° μ΄μμ΄λΌλ©΄? → λ‘λ λ°Έλ°μ± + μ€ν μ€μΌμΌλ§ μ μ© νμβ
νΈλν½ μ¦κ° μ μλ νμ₯? → AWS μ€ν μ€μΌμΌλ§ κ·Έλ£Ή(ASG) νμ©β
μΈμ
μ μ§ νμ? → Sticky Session or μΈμ
ν΄λ¬μ€ν°λ§ κ³ λ €
βοΈ μ§μ
λκ³Ό μ‘°μ¨νμ¬ CRCDλ₯Ό ν΅ν΄ λͺ¨λ μΈμ€ν΄μ€ μ
λ°μ΄νΈ νμβοΈ AWS λ‘λ λ°Έλ°μ(ALB) + μ€ν μ€μΌμΌλ§ μ μ© μ μλ μ΄μ κ°λ₯ π
_________________________________________________________________________
ν΄λ¬μ€ν°λ§(Clustering)
Clusteringμ΄λ μ¬λ¬ λμ μ»΄ν¨ν°λ₯Ό λκ°μ ꡬμ±μ μλ²κ΅°μ λ³λ ¬λ‘ μ°κ²°ν μμ€ν
μΌλ‘ λ§μΉ νλμ μ»΄ν¨ν°μ²λΌ μ¬μ©νλ κ²μ λ§νλ€.
Clustering νκ²½μμλ νΉμ μ₯λΉμ λ¬Έμ κ° μκΈ°κ±°λ μ ν리μΌμ΄μ
μ λ¬Έμ κ° μκΈ°λλΌλ, μ 체μ μΈ μλΉμ€μλ μν₯μ μ£Όμ§ μκ² μ μ΄ν μ μλ€.
Clusteringμ Virtual IP(κ°μ IP) κΈ°λ°μΌλ‘ ꡬνλλλ°, μλΉμ€λ₯Ό μ 곡νλ μ€μ μ₯λΉλ Physical IPλ₯Ό κ°μ§κ³ , λ°μ΄ν°μ μ²λ¦¬λ Virtual IPλ₯Ό ν΅ν΄ μ²λ¦¬νλ€. μ΄λ κ² λ΄λΆμ μμ€ν
μ μ² μ νκ² κ°λ € μΆμννλ κ²μ΄ μμΉμ΄λ€.
λ‘λλ°Έλ°μμ μν΄ κ° Clusteringλ μλ²μ μν΄ μλΉμ€κ° μ§νμ΄ λλ€.
μ 리
Load Balancingμ L4 or L7μ΄ μ¬λ¬λμ μλ²μ ν¨ν·μ λΆνλΆμ°μμΌμ£Όλ κ²μ΄κ³ Clusteringμ μ¬λ¬λμ μλ²λ₯Ό νλμ μλ²λ‘ λ§λ€μ΄ μ£Όλ κ²μ΄λ€.
Load Balancing - μ¬λ¬λμ μλ²μ ν¨ν·μ λΆμ°
Clustering - μλΉμ€λ₯Ό μ 곡νλ μ¬λ¬κ°μ μλ²λ₯Ό νλλ‘ λ¬Άμ΄ μ±λ₯μ λμ¬ λ§μμμ ν¨ν·μ μ²λ¦¬νλ κ²
λ‘λ λ°Έλ°μ± λ°©λ²
λ‘λ λ°Έλ°μ±μ λ€νΈμν¬ νΈλν½μ μ¬λ¬ μλ²μ λΆμ°μν€λ κΈ°μ λ‘, νΈλν½ λΆνλ₯Ό κ· λ±νκ² λλμ΄ μλ²μ κ³ΌλΆνλ₯Ό λ°©μ§νκ³ , κ³ κ°μ©μ±μ μ 곡ν©λλ€. λ‘λ λ°Έλ°μ± λ°©λ²μ λ€μκ³Ό κ°μ΅λλ€.
- λΌμ΄λ λ‘λΉ (Round Robin): μμλλ‘ κ° μλ²μ μμ²μ λ°°λΆν©λλ€.
λΌμ΄λ λ‘λΉ λ°©μ
λΌμ΄λ λ‘λΉ(Round Robin Method)μ ν΄λΌμ΄μΈνΈλ‘λΆν° λ°μ μμ²μ λ‘λλ°Έλ°μ± λμ μλ²μ μμλλ‘ ν λΉλ°λ λ°©μμ
λλ€. 첫 λ²μ§Έ μμ²μ 첫 λ²μ§Έ μλ², λ λ²μ§Έ μμ²μ λ λ²μ§Έ μλ², μΈ λ²μ§Έ μμ²μ μΈ λ²μ§Έ μλ²μ ν λΉν©λλ€. λ‘λλ°Έλ¬λ λμ μλ²μ μ±λ₯μ΄ λμΌνκ³ μ²λ¦¬ μκ°μ΄ μ§§μ μ ν리μΌμ΄μ
μ κ²½μ°, κ· λ±νκ² λΆμ°μ΄ μ΄λ£¨μ΄μ§κΈ° λλ¬Έμ μ΄ λ°©μμ μ¬μ©ν©λλ€.
κ°μ€ λΌμ΄λ λ‘λΉ λ°©μ
κ°μ€ λΌμ΄λ λ‘λΉ λ°©μ(Weighted Round Robin Method)μ μ€μ μλ²μ μλ‘ λ€λ₯Έ μ²λ¦¬ μ©λμ μ§μ ν μ μμ΅λλ€. κ° μλ²μ κ°μ€μΉλ₯Ό λΆμ¬ν μ μμΌλ©°, μ¬κΈ°μ μ§μ ν μ μ«κ°μ ν΅ν΄ μ²λ¦¬ μ©λμ μ ν©λλ€.
μ΅μ μ°κ²° λ°©μ
μ΅μ μ°κ²° λ°©μμ μ°κ²° μκ° κ°μ₯ μ μ μλ²μ λ€νΈμν¬ μ°κ²°λ°©ν₯μ μ ν©λλ€. λμ μΈ λΆμ° μκ³ λ¦¬μ¦μΌλ‘ κ° μλ²μ λν νμ¬ μ°κ²° μλ₯Ό λμ μΌλ‘ μΉ΄μ΄νΈν μ μκ³ , λμ μΌλ‘ λ³νλ μμ²μ λν λΆνλ₯Ό λΆμ°μν¬ μ μμ΅λλ€.
- μ΅μ μ°κ²° (Least Connections): νμ¬ μ°κ²°μ΄ κ°μ₯ μ μ μλ²μ μμ²μ λ°°λΆν©λλ€.
- IP ν΄μ (IP Hash): μ¬μ©μμ IP μ£Όμλ₯Ό ν΄μ±νμ¬ νΉμ μλ²μ μμ²μ λ°°λΆν©λλ€.
λ‘λ λ°Έλ°μ± λ°©λ²
1β£ DNS Load Balancing
• DNS μλ²μμ μ¬λ¬ IPλ₯Ό λ°ννμ¬ νΈλν½μ λλλ λ°©μ
• λ¨μ : ν΄λΌμ΄μΈνΈ μΊμ± λ¬Έμ λ‘ μΈν΄ λΆνκ° μλ²½ν λΆμ°λμ§ μμ μ μμ
2β£ Reverse Proxy Load Balancing
• Nginx, HAProxy λ±μ μ΄μ©νμ¬ νλ‘μ μλ²κ° ν΄λΌμ΄μΈνΈ μμ²μ μ μ ν μλ²λ‘ λΌμ°ν
• λνμ μΈ λ‘λ λ°Έλ°μ : Nginx, HAProxy, Traefik
3β£ L4 (Layer 4) Load Balancing
• TCP/UDP λ 벨μμ λΆνλ₯Ό λΆμ° (IP λ° ν¬νΈ κΈ°λ°)
• λνμ μΈ μλΉμ€ : AWS ELB (Elastic Load Balancer), F5 Big-IP
4β£ L7 (Layer 7) Load Balancing
• HTTP(S) μμ²μ URL, μΏ ν€, ν€λ λ±μ κΈ°λ°μΌλ‘ λΆν λΆμ°
• REST API μλ²λ NestJS κ°μ μΉ μλ²μμλ L7 λ°©μμ΄ μΌλ°μ
• λνμ μΈ μλΉμ€ : Nginx, HAProxy, AWS ALB (Application Load Balancer)
NestJSμμ λ‘λ λ°Έλ°μ± μ μ©νκΈ°
NestJSμμ λ‘λ λ°Έλ°μ±μ μ μ©νλ €λ©΄ μ¬λ¬ κ°μ§ λ°©λ²μ΄ μλ€.
1β£ Nginx Reverse Proxy μ¬μ©
κ°μ₯ μΌλ°μ μΈ λ°©λ²μ Nginxλ₯Ό Reverse Proxyλ‘ μ¬μ©νμ¬ νΈλν½μ μ¬λ¬ μΈμ€ν΄μ€λ‘ λΆμ°νλ κ²μ΄λ€.
π μ€μ λ°©λ²
1. NestJS μλ²λ₯Ό μ¬λ¬ κ° μ€ν (PORT 3000, PORT 3001, PORT 3002 λ±)
2. Nginxλ₯Ό μ€μ νμ¬ μ¬λ¬ μλ²λ‘ νΈλν½μ λΆλ°°
πΉ Nginx μ€μ μμ (/etc/nginx/nginx.conf)
nginx νμΌ
http {
upstream nest_servers {
server 127.0.0.1:3000;
server 127.0.0.1:3001;
server 127.0.0.1:3002;
}
server {
listen 80;
location / {
proxy_pass http://nest_servers;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
}
π μ΄λ κ² νλ©΄, ν΄λΌμ΄μΈνΈμ μμ²μ΄ 3000, 3001, 3002 ν¬νΈλ‘ μλ λΆμ°λ¨!
2β£ ν΄λΌμ°λ λ‘λ λ°Έλ°μ μ¬μ© (AWS ELB, GCP, Azure)
• AWS ALB (Application Load Balancer)
• AWS NLB (Network Load Balancer)
• GCP Load Balancer
• Azure Load Balancer
π NestJS μλ²λ₯Ό μ¬λ¬ λ λμ°κ³ , λ‘λ λ°Έλ°μλ₯Ό μμ λλ©΄ μλμΌλ‘ νΈλν½μ λΆλ°°ν¨
3β£ PM2 Cluster λͺ¨λ νμ© (μ±κΈ λ¨Έμ λ΄ λ©ν° νλ‘μΈμ€)
λ¨μΌ μλ²μμ λ©ν° νλ‘μΈμ€λ‘ NestJSλ₯Ό μ€ννμ¬ λΆν λΆμ°νλ λ°©λ²μ΄λ€.
π PM2λ₯Ό μ¬μ©ν NestJS ν΄λ¬μ€ν°λ§
sh νμΌ
npm install pm2 -g
pm2 start dist/main.js -i max
• -i max : κ°λ₯ν λͺ¨λ CPU μ½μ΄λ₯Ό μ¬μ©νμ¬ μ¬λ¬ κ°μ NestJS νλ‘μΈμ€λ₯Ό μ€ν
• νλμ μλ²μμ μ¬λ¬ κ°μ NestJS μΈμ€ν΄μ€λ₯Ό λμ νΈλν½μ λλ μ μμ
π κ²°λ‘ : NestJSμμ λ‘λ λ°Έλ°μ± μ μ© λ°©λ² μΆμ²
1. νΈλν½μ΄ λ§λ€λ©΄? → Nginx Reverse Proxy + μ¬λ¬ NestJS μΈμ€ν΄μ€
2. ν΄λΌμ°λ νκ²½(AWS, GCP)μμ μ΄μ? → λ‘λ λ°Έλ°μ(AWS ALB, GCP LB) μ¬μ©
3. λ¨μΌ μλ²μμ μ±λ₯ μ΅μ ν? → PM2 ν΄λ¬μ€ν° λͺ¨λ μ¬μ©
__________________________________________________
μΈμ€ν΄μ€κ° 2κ° μ΄μ.
μ§μ
λμ΄λ μ‘°μ¨ν΄μΌν¨(crcdλ§‘μ - λ€ μ
λ°μ΄νΈ ν΄μ€μΌν¨)
λ‘λ 벨λ¬μ±μ μ€ν μ€μΌμΌλ§ μ μ©ν΄μΌν¨
μ€ν μ€μΌμΌλ§ : νΈλ ν½μ΄ λ§μΌλ©΄ Ec2λ₯Ό(μλ²λ₯Ό) μλμΌλ‘ λλ €μ 리νμ€νΈ μλ λΆλ°°ν΄μ€(μΈμ€ν΄μ€κ° λμ΄λ¨). awsμλ μμ
νΈλν½μ΄ μ¦κ°νλ©΄ EC2(μλ²) μΈμ€ν΄μ€λ₯Ό μλμΌλ‘ νμ₯νμ¬ μμ²μ λΆλ°°νλ κΈ°λ₯μ΄λ€.
νΈλν½μ΄ μ€μ΄λ€λ©΄ λΆνμν μΈμ€ν΄μ€λ₯Ό μ€μ¬ λΉμ©μ μ κ°ν μ μλ€.
AWSμλ μ€ν μ€μΌμΌλ§ κΈ°λ₯μ΄ μμΌλ©°, μ΄λ₯Ό νμ©νλ©΄ μλ² μ΄μμ μλνν μ μλ€.
_____________________________________
Sticky Session
https://kchanguk.tistory.com/146
κ° WASλ€μ μΈμ
μ κ°κ° κ°μ§κ³ μμ§λ§, μ΄λ₯Ό νλλ‘ λ¬Άμ΄ νλμ ν΄λ¬μ€ν°λ‘ κ΄λ¦¬νλ λ°©λ²μ΄ μμ΅λλ€. μ΄ μνμμ νλμ WASκ° failμ΄ λ°μνλ©΄ ν΄λΉ WASκ° λ€κ³ μλ μΈμ
μ λ€λ₯Έ WASλ‘ μ΄λλμ΄ κ΄λ¦¬λ©λλ€. λ€λ§, κ° μλ²λ§λ€ μΈμ
ν΄λ¬μ€ν°λ§ λ°©μμ΄ λ€λ₯΄κ³ μ§μνλ λ°©μμ΄ λ€λ₯΄κΈ° λλ¬Έμ νμ¬ μ¬μ©νκ³ μλ WASμ session clusturing λΆλΆμ λ³΄κ³ νμΈν΄μΌ ν©λλ€. κ·Έλ¦¬κ³ μ΄ λ°©μμ μλ‘μ΄ μλ²κ° νλ μΆκ°λ λλ§λ€ κΈ°μ‘΄μ μ‘΄μ¬νλ WASμ μλ‘μ΄ μλ²μ IP/PORTλ₯Ό μ
λ ₯ν΄μ ν΄λ¬μ€ν°λ§ ν΄μ€μΌ νλ λ¨μ μ΄ μμ΅λλ€.
π₯ μ¬μ©μκ° λμ΄λλ©΄?
μλΉμ€λ₯Ό μ΄μν λ μλ²λ λͺλλ μμ΄μΌν κΉμ?μ¬μ©μκ° λ§μ΄ μλ κ²½μ°μλ 1λμ μλ²λ§μΌλ‘λ μμ²μ μ²λ¦¬ν μ μμ§λ§ μ¬μ©μκ° λμ΄λλ©΄ λμ΄λ μλ‘ μμ²μ κΉλνκ² μ²λ¦¬νκΈ° μ΄λ €μμ§λ©° μλ²κ° ν°μ§λ μν©κΉμ§ λ°μν μ μμ΅λλ€..!
μ΄λ΄ λμλ μ€μΌμΌ μμνΉμ μ€μΌμΌ μ
μ ν΅ν΄ μΈνλΌλ₯Ό νμ₯ν νμκ° μμ΅λλ€!
μ€μΌμΌμ
(scale-up)
μ€μΌμΌμ
μ νμ¬ μ¬μ© μ€μΈ μλ²μ μ±λ₯μ ν₯μμν€λ κ²μ
λλ€. μλ₯Ό λ€μ΄ μλ²μ λμ€ν¬λ₯Ό μΆκ°νκ±°λ CPUλ λ©λͺ¨λ¦¬λ₯Ό μΆκ°νλ κ²μ μλ―Ένμ£ !(μμ§ μ€μΌμΌλ§ - vertical scaling μ΄λΌκ³ λ λΆλ¦
λλ€)
μ€μΌμΌμμ (scale-out)
μ€μΌμΌμμμ νμ¬ μ¬μ© μ€μΈ μλ²μ κ°μλ₯Ό μ¦κ°μν€λ κ²μ
λλ€. μλ²μ μ±λ₯μ κ·Έλλ‘ κ°μ Έκ°κ³ μμ²μ μ²λ¦¬ν μ μλ μλ²μ μλ₯Ό μ¦κ°μν€λ λ°©λ²μ
λλ€.(μν μ€μΌμΌλ§ - horizontal scaling μ΄λΌκ³ λ λΆλ¦
λλ€)
π λ‘λλ°Έλ°μ
λ‘λλ°Έλ°μλ?
λ‘λ λ°Έλ°μλ μ€μΌμΌμμμ μννλ λ°©λ² μ€ νλμ
λλ€.
λ‘λλ°Έλ°μμ μ£Όμ μν
(1) μμ² λΆμ°
μΈν°λ·μΌλ‘λΆν° λ€μ΄μ¨ μμ²μ μ¬λ¬ μΉ μλ²μ κ· λ±νκ² λΆμ°μμΌ μ€λλ€. μμμ λ§ν μ€μΌμΌ μμ κΈ°λ₯μ΄μ£ !!
(2) SSL μ²λ¦¬
λ‘λ λ°Έλ°μλ₯Ό μ¬μ©νλ©΄ μ‘μμ νλ λ°μ΄ν°λ₯Ό μνΈννλ SSL μ²λ¦¬κ° κ°λ₯ν©λλ€.
μΈν°λ·μΌλ‘λΆν°μ μ κ·Ό μ€ μμ νκ² μ 보λ₯Ό 보λ΄κΈ° μν΄ HTTPSλΌλ νλ‘ν μ½λ‘ ν΅μ μ ν λκ° μλλ° μ΄ ν΅μ μμ SSLμ μ¬μ©νκ² λ©λλ€. https λ₯Ό μ¬μ©νλ©΄ λΈλΌμ°μ μ μλΉμ€ μ¬μ΄λ₯Ό νλ₯΄λ λ°μ΄ν°λ μνΈνλλ©° μ΄λ μνΈ κ΄λ ¨ μ²λ¦¬λ₯Ό λΉ λ₯΄κ² μννλ μ μ© μμ€ν
μ λ‘λλ°Έλ°μκ° μ 곡ν΄μ£Όμ΄ μΉ μλ²μμ μνΈλ₯Ό μ²λ¦¬νλ κ²λ³΄λ€ λΉ λ₯Έ μλλ‘ μ²λ¦¬ν μ μμ΄μ!
(3) λΆμ μμ² λμ
λ‘λ λ°Έλ°μ μμ΄ μΉ μλ²κ° μ§μ λΈλΌμ°μ μ λ°μ΄ν°λ₯Ό κ΅ννλ μνλΌλ©΄? μμμΉ λͺ»ν μλμ μΌμΌν€λ λΆμ ν μμ²μ λν μ²λ¦¬λ μΉ μλ²μ κ³ΌλΆνλ₯Ό μΌμΌν¬ μ μμΌλ©° κ·Έλ‘ μΈν΄ μΉ μλ² μμ²΄κ° λ€μ΄λ κ°λ₯μ±μ΄ μμ΅λλ€.
λ‘λ λ°Έλ°μλ μ΄λ¬ν λΆμ μ κ·Όμ λμνλ μ μ© μμ€ν
μ μ 곡νμ¬ λ ν¨μ¨μ μΌλ‘ λΆμ ν μ κ·Όμ λμν μ μμ΅λλ€.
AWSμμ μ 곡νλ λ‘λ λ°Έλ°μ μ’
λ₯
AWSμμλ ELB(Elastic Load Balancing)μ΄λΌλ μλΉμ€λ‘ λ‘λ λ°Έλ°μλ₯Ό μ 곡ν©λλ€.
(1) Application Load Balancer (ALB)
ALBλ HTTPλ HTTPS λ₯Ό μ΄μ©ν μ κ·Όμ λΆμ°νλλ° μ΅μ νλ λ‘λ λ°Έλ°μ μ
λλ€. SSL μ²λ¦¬λ₯Ό μννκ±°λ URL ν¨ν΄κ³Ό κ°μ 볡μ‘ν 쑰건μμ λΆμ° λμμλ₯Ό λ°κΎΈλ λ± κ³ λμ κΈ°λ₯μ μ 곡ν©λλ€.
(2) Network Load Balancer
κΈ°λ³Έμ μΈ λΆμ°μ²λ¦¬ κΈ°λ₯λ§μ μ 곡νμ§λ§ λ€μν ν΅μ νλ‘ν μ½μ λμνλ λ‘λ λ°Έλ°μμ
λλ€.
(3) Classic Load Balancer
μμ λκ°μ λ‘λ λ°Έλ°μκ° λ±μ₯νκΈ° μ μ μ°μ΄λ λ‘λ λ°Έλ°μμ΄λ©° κΈ°μ‘΄ AWS μμ€ν
μ μ¬μ©ν΄μΌ νλ νΉλ³ν κ²½μ°λ₯Ό μ μΈνκ³ λ κ±°μ μ¬μ©λμ§ μμ΅λλ€.
μμ² λΌμ°ν
λ‘λ λ°Έλ°μλ₯Ό μ¬μ©ν λμλ μΈλΆμ 곡κ°ν νλ‘ν μ½κ³Ό ν¬νΈ λ²νΈμ μ‘°ν©μ λ΄λΆμ μΉ μλ²κ° λ°λ νλ‘ν μ½κ³Ό ν¬νΈ λ²νΈλ‘ λ³ννλ κΈ°λ₯μ μ 곡νλλ°, μ΄λ₯Ό μμ² λΌμ°ν
(request routing) μ΄λΌκ³ ν©λλ€.
μλ₯Ό λ€μ΄ HTTPS 80 ν¬νΈλ‘ μΈλΆ μμ²μ λ°κ³ λ΄λΆ μΉ μλ²μ μ λ¬ν λμλ HTTP 8080 μΌλ‘ λ³ννμ¬ μ λ¬ν μ μλλ‘ μ€μ ν΄μ£Όλ κ²μ΄μ£ !(HTTPSλ₯Ό HTTPλ‘ λ³ννλ μ΄μ λ HTTPSλ₯Ό μ΄μ©ν μνΈ λ° λ³΅νΈ μ²λ¦¬λ μΉ μλ²κ° μλλΌ λ‘λ λ°Έλ°μκ° μννκΈ° λλ¬Έμ
λλ€.)
π AWSμμ ALB μμ±νκΈ°
κ°μ© μμ μ€μ
μμ²μ λΆμ°ν κ°μ© μμμ μ ννκ³ κ°μ© μμμ μμ±ν Public Subnetμ μ νν΄ μ€λλ€! (λ°λμ public subnetμ μ°κ²°ν΄μ£Όμ΄μΌ ν©λλ€!!!)
보μ κ·Έλ£Ή μ€μ
보μ κ·Έλ£Ήμ vpcμ default 보μ κ·Έλ£Ήκ³Ό http/https μ κ·Όμ λ°μ μ μλ 보μ κ·Έλ£Ήμ μ€μ ν΄ μ€λλ€.
λμ κ·Έλ£Ή μμ±
λ‘λ λ°Έλ°μλ₯Ό μ μ©ν λμ κ·Έλ£Ήμ λ§λ€μ΄λ΄
μλ€!μ¬κΈ°μ ν¬νΈλ₯Ό μ€μ ν΄μ€λλ€. μ΄λ―Έμ§μ κ°μ΄ μ€μ ν΄μ€λ€λ©΄ λ‘λλ°Έλ°μλ₯Ό ν΅ν΄ λ€μ΄μ¨ μμ²μ μΉ μλ²μ 8080 ν¬νΈλ‘ λ€μ΄κ°κ² λ©λλ€.
μν κ²μ¬λ₯Ό ν κ²½λ‘λ₯Ό μμ±ν΄ μ€λλ€. λ‘λ λ°Έλ°μλ ν΄λΉ URLλ‘ μμ²μ λ³΄λ΄ μΉ μλ²μ μνλ₯Ό μ£ΌκΈ°μ μΌλ‘ κ²μ¬ν©λλ€.
μ€μ λ‘ νΈλν½μ λΆμ°ν μΈμ€ν΄μ€λ€μ μ ννμ¬ λ‘λ λ°Έλ°μμ λμμΌλ‘ λ±λ‘ν΄μ€λλ€!
리μ€λ λ° λΌμ°ν
μμ μμ±ν λμ κ·Έλ£Ήμ '리μ€λ λ° λΌμ°ν
' λ©λ΄μμ μ€μ ν΄ μ€λλ€. μ΄λ κ² μ€μ ν΄μ£Όλ©΄ HTTP 80 ν¬νΈλ‘ λ€μ΄μ¨ μμ²μ μ€μ ν λμ κ·Έλ£ΉμΌλ‘ λΆμ°λκ² λ©λλ€!
μ΄λ κ² νλ©΄ ALBλ₯Ό μμ±ν μ μμΌλ©° μμ±ν λ‘λ λ°Έλ°μμ DNS μ΄λ¦μΌλ‘ μ κ·Όμ΄ κ°λ₯ν©λλ€!
μ°Έκ³ https://aws.amazon.com/ko/what-is/load-balancing/ https://tecoble.techcourse.co.kr/post/2021-10-12-scale-up-scale-out/