1. λ‘λ λ°Έλ°μλ?
λ‘λ λ°Έλ°μ(Load Balancer)λ μ¬λ¬ μλ²λ‘ λ€μ΄μ€λ λ€νΈμν¬ νΈλν½μ ν¨μ¨μ μΌλ‘ λΆμ°νλ μ₯μΉ λλ μννΈμ¨μ΄λ₯Ό μλ―Ένλ€. μ΄λ νΉμ μλ²μ κ³ΌλΆνκ° κ±Έλ¦¬λ κ²μ λ°©μ§νκ³ , μ±λ₯μ μ΅μ ννλ©°, κ³ κ°μ©μ±μ 보μ₯νλ μν μ νλ€.
2. λ‘λ λ°Έλ°μμ νμμ±
- λΆν λΆμ°: λ€μμ μλ²μ νΈλν½μ κ³ λ₯΄κ² λΆμ°νμ¬ νΉμ μλ²μ κ³ΌλΆνλ₯Ό λ°©μ§
- κ³ κ°μ©μ±(High Availability): μΌλΆ μλ²κ° μ₯μ κ° λλλΌλ μλΉμ€κ° μ§μ κ°λ₯νλλ‘ λ³΄μ₯
- νμ₯μ±(Scalability): μλ²λ₯Ό μΆκ°νμ¬ λ λ§μ νΈλν½μ μ²λ¦¬ν μ μλλ‘ μ§μ
- 보μ κ°ν: νΉμ μλ²μ μ§μ μ μΈ μ κ·Όμ μ°¨λ¨νμ¬ λ³΄μμ κ°νν μ μμ
3. λ‘λ λ°Έλ°μμ μλ λ°©μ
λ‘λ λ°Έλ°μλ ν΄λΌμ΄μΈνΈμ μμ²μ μ¬λ¬ μλ²λ‘ λλμ΄ μ λ¬νλ©°, μ£Όλ‘ λ€μκ³Ό κ°μ λ°©μμΌλ‘ λμνλ€:
- DNS κΈ°λ° λΆμ°: λλ©μΈ λ€μ μμ€ν (DNS) λ 벨μμ λ€μμ IP μ£Όμλ₯Ό λ°ννμ¬ νΈλν½μ λΆμ°
- λ€νΈμν¬ λ 벨 λΆμ° (L3/L4): IP μ£Όμμ ν¬νΈ κΈ°λ°μΌλ‘ νΈλν½μ λΆμ°νλ λ°©μ (μ: TCP, UDP)
- μ ν리μΌμ΄μ λ 벨 λΆμ° (L7): HTTP ν€λ, μΏ ν€, μμ² URL λ± μ ν리μΌμ΄μ λ°μ΄ν°λ₯Ό κΈ°λ°μΌλ‘ νΈλν½μ λΆμ°
4. λ‘λ λ°Έλ°μ± μκ³ λ¦¬μ¦
λ‘λ λ°Έλ°μλ λ€μν μκ³ λ¦¬μ¦μ νμ©νμ¬ νΈλν½μ λΆμ°νλ€:
- λΌμ΄λ λ‘λΉ(Round Robin): κ° μμ²μ μμ°¨μ μΌλ‘ μ¬λ¬ μλ²μ μ λ¬
- κ°μ€μΉ λΌμ΄λ λ‘λΉ(Weighted Round Robin): μλ²μ μ±λ₯μ λ°λΌ κ°μ€μΉλ₯Ό λΆμ¬νμ¬ μμ²μ λΆμ°
- μ΅μ μ°κ²°(Least Connection): νμ¬ μ°κ²°λ μΈμ μκ° μ μ μλ²λ‘ νΈλν½μ μ λ¬
- IP ν΄μ(IP Hash): ν΄λΌμ΄μΈνΈ IPλ₯Ό κΈ°λ°μΌλ‘ μμ²μ νΉμ μλ²μ ν λΉ
- μλ΅ μκ° κΈ°λ°(Response Time-Based): μλ²μ μλ΅ μλλ₯Ό κΈ°μ€μΌλ‘ μμ²μ λΆμ°
5. λ‘λ λ°Έλ°μμ μ’ λ₯
λ‘λ λ°Έλ°μλ νλμ¨μ΄μ μννΈμ¨μ΄ λ°©μμΌλ‘ λλλ€.
5.1 νλμ¨μ΄ λ‘λ λ°Έλ°μ
μ μ© μ₯λΉλ₯Ό μ΄μ©νμ¬ νΈλν½μ λΆμ°νλ λ°©μμΌλ‘, λμ μ±λ₯κ³Ό μμ μ±μ μ 곡νλ€.
- λνμ μΈ μ ν: F5, Citrix ADC, A10 Networks
5.2 μννΈμ¨μ΄ λ‘λ λ°Έλ°μ
μννΈμ¨μ΄ κΈ°λ°μΌλ‘ νΈλν½μ λΆμ°νλ λ°©μμΌλ‘, ν΄λΌμ°λ νκ²½μμ μ£Όλ‘ μ¬μ©λλ€.
- λνμ μΈ μ루μ : Nginx, HAProxy, Envoy, AWS ELB, GCP Load Balancer, Kubernetes Ingress
6. λ‘λ λ°Έλ°μμ μ€μ νμ© μμ
- μΉ μ ν리μΌμ΄μ : μ¬λ¬ μΉ μλ²μ νΈλν½μ λΆμ°νμ¬ λΉ λ₯Έ μλ΅ μ 곡
- λ§μ΄ν¬λ‘μλΉμ€ μν€ν μ²: μλΉμ€ κ° νΈλν½μ μ΅μ ννμ¬ μ±λ₯μ κ·Ήλν
- λ°μ΄ν°λ² μ΄μ€ μ€λ©: μ¬λ¬ λ°μ΄ν°λ² μ΄μ€ μΈμ€ν΄μ€μ μ½κΈ°/μ°κΈ° μμ²μ λΆμ°
- ν΄λΌμ°λ νκ²½: AWS, GCP, Azureμ κ°μ ν΄λΌμ°λ μλΉμ€μμ λμ νμ₯
7. λ‘λ λ°Έλ°μ ꡬν μμ
7.1 Nginxλ₯Ό νμ©ν λ‘λ λ°Έλ°μ± μμ
http {
upstream backend_servers {
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
}
server {
listen 80;
location / {
proxy_pass http://backend_servers;
}
}
}
μ΄ μ€μ μ Nginxλ₯Ό μ¬μ©νμ¬ μΈ κ°μ λ°±μλ μλ²λ‘ μμ²μ λΆμ°νλ μμ μ΄λ€.
7.2 AWS ELB(Elastic Load Balancer) μμ
AWSμμλ ELBλ₯Ό μ¬μ©νμ¬ λ‘λ λ°Έλ°μ±μ ꡬνν μ μλ€. μ€μ κ³Όμ μ λ€μκ³Ό κ°λ€:
- AWS μ½μμμ EC2 > Load Balancer λ‘ μ΄λ
- μ λ‘λ λ°Έλ°μ μμ±
- Application Load Balancer(ALB) λλ Network Load Balancer(NLB) μ ν
- νκ² κ·Έλ£Ή(Target Group) μ€μ λ° EC2 μΈμ€ν΄μ€ μ°κ²°
- 리μ€λ(Listener) μ€μ : HTTP λλ HTTPS μμ²μ μ§μ
- μ€μ μλ£ ν ν μ€νΈ μ§ν
7.3 λ‘λ λ°Έλ°μ μν€ν μ² μμ
μλλ μΌλ°μ μΈ λ‘λ λ°Έλ°μ κΈ°λ°μ μΉ μλΉμ€ μν€ν μ²μ΄λ€:
+----------------+
| Load Balancer |
+----------------+
|
-------------------------------
| | |
+----+ +----+ +----+
|Web1| |Web2| |Web3|
+----+ +----+ +----+
| | |
--------------------------------
|
+--------+
|Database|
+--------+
μ΄ κ΅¬μ‘°μμλ λ‘λ λ°Έλ°μκ° μ¬λ¬ κ°μ μΉ μλ²λ‘ μμ²μ λΆμ°νκ³ , μΉ μλ²λ νλμ κ³΅ν΅ λ°μ΄ν°λ² μ΄μ€λ₯Ό μ¬μ©νλ€.
8. λ‘λ λ°Έλ°μ μ¬μ© μ μ μν μ
- μΈμ κ΄λ¦¬: μΌλΆ μ ν리μΌμ΄μ μ μΈμ μ 보λ₯Ό μλ²μ μ μ₯νλλ°, λ‘λ λ°Έλ°μκ° νΈλν½μ μ¬λ¬ μλ²λ‘ λΆμ°νλ©΄ μΈμ μ λ³΄κ° μ¬λΌμ§ μ μλ€. Sticky Sessionμ κ³ λ €ν΄μΌ ν¨.
- SSL μ’ λ£(SSL Termination): HTTPS νΈλν½μ λ‘λ λ°Έλ°μμμ ν΄λ ν κ²½μ°, λ΄λΆ νΈλν½μ μνΈνκ° νμν μ μμ.
- ν¬μ€ 체ν¬(Health Check) μ€μ : μ₯μ κ° λ°μν μλ²λ‘ νΈλν½μ΄ μ λ¬λμ§ μλλ‘ μ£ΌκΈ°μ μΈ ν¬μ€ 체ν¬λ₯Ό μ€μ ν΄μΌ ν¨.
- λ‘λ λ°Έλ°μμ λ³λͺ© νμ: νΈλν½μ΄ κΈκ²©ν μ¦κ°ν κ²½μ°, λ‘λ λ°Έλ°μ μμ²΄κ° μ±λ₯μ λ³λͺ©μ΄ λ μ μμΌλ―λ‘ νμ₯μ±μ κ³ λ €ν΄μΌ ν¨.
- λ‘κ·Έ λΆμ: νΈλν½μ΄ μ μμ μΌλ‘ λΆμ°λκ³ μλμ§ νμΈνκΈ° μν΄ λ‘λ λ°Έλ°μ λ‘κ·Έλ₯Ό λͺ¨λν°λ§νκ³ λΆμν΄μΌ ν¨.
'π» CS' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
λ°±μ€ 21279λ² κ΄λΆ νΈμ - Python (0) | 2025.03.29 |
---|---|
HTTP μ 리 λ° μ§λ¬Έ 리μ€νΈ (feat.RESTful) (0) | 2025.03.22 |
200λ κ° νκ΄μλ ¨νλλ PS μ΅κ°μκ° λ 건μ λνμ¬ (0) | 2025.02.18 |
[SQL] μλμ°¨ λμ¬ κΈ°λ‘μμ λμ¬μ€ / λμ¬ κ°λ₯ μ¬λΆ ꡬλΆνκΈ° (νλ‘κ·Έλλ¨Έμ€/Level 3) (5) | 2025.02.11 |
0-1 Knapsack Problem μ΅μ ν (DP λ©λͺ¨λ¦¬) (0) | 2025.01.04 |