Home > Network > 2024 > 🌐[Network] Load Balancer(λ‘œλ“œ λ°ΈλŸ°μ„œ)λž€ λ¬΄μ—‡μΌκΉŒμš”?

🌐[Network] Load Balancer(λ‘œλ“œ λ°ΈλŸ°μ„œ)λž€ λ¬΄μ—‡μΌκΉŒμš”?
Network

🌐[Network] Load Balancer(λ‘œλ“œ λ°ΈλŸ°μ„œ)λž€ λ¬΄μ—‡μΌκΉŒμš”?

πŸ“Œ Intro.

  • β†˜οΈŽ Load Balancer(λ‘œλ“œ λ°ΈλŸ°μ„œ)λŠ” λ„€νŠΈμ›Œν¬ νŠΈλž˜ν”½μ„ μ—¬λŸ¬ μ„œλ²„λ‘œ λΆ„μ‚°μ‹œμΌœ μ‹œμŠ€ν…œμ˜ μ„±λŠ₯, μ•ˆμ •μ„±, κ°€μš©μ„±μ„ λ†’μ΄λŠ” 기술 λ˜λŠ” μž₯μΉ˜μž…λ‹ˆλ‹€.

1️⃣ Load Balancer(λ‘œλ“œ λ°ΈλŸ°μ„œ)의 핡심 μ—­ν• .

  • 1️⃣ νŠΈλž˜ν”½ λΆ„μ‚°:
    • β†˜οΈŽ μ—¬λŸ¬ μ„œλ²„(λ…Έλ“œ)에 μ‚¬μš©μž μš”μ²­(νŠΈλž˜ν”½)을 κ³ λ₯΄κ²Œ λΆ„μ‚°.
    • β†˜οΈŽ νŠΉμ • μ„œλ²„μ— κ³ΌλΆ€ν•˜κ°€ 걸리지 μ•Šλ„λ‘ 관리.
  • 2️⃣ κ³ κ°€μš©μ„±(High Availability):
    • β†˜οΈŽ 일뢀 μ„œλ²„κ°€ λ‹€μš΄λ˜λ”λΌλ„ λ‹€λ₯Έ μ„œλ²„κ°€ νŠΈλž˜ν”½μ„ μ²˜λ¦¬ν•˜μ—¬ μ„œλΉ„μŠ€ 쀑단 방지.
  • 3️⃣ ν™•μž₯μ„±(Scalability):
    • β†˜οΈŽ μ„œλ²„λ₯Ό μΆ”κ°€ν•˜κ±°λ‚˜ μ œκ±°ν•˜μ—¬ νŠΈλž˜ν”½ 처리 λŠ₯λ ₯을 μ‰½κ²Œ ν™•μž₯.
  • 4️⃣ μž₯μ•  감지 및 볡ꡬ:
    • β†˜οΈŽ 주기적으둜 μ„œλ²„ μƒνƒœλ₯Ό 확인(Health Check).
    • β†˜οΈŽ λ¬Έμ œκ°€ μžˆλŠ” μ„œλ²„λ‘œμ˜ νŠΈλž˜ν”½ 전달을 쀑단.

2️⃣ Load Balancer(λ‘œλ“œ λ°ΈλŸ°μ„œ)의 μž‘λ™ 원리.

  • 1️⃣ ν΄λΌμ΄μ–ΈνŠΈ μš”μ²­:
    • β†˜οΈŽ μ‚¬μš©μžκ°€ μ›Ήμ‚¬μ΄νŠΈλ‚˜ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— μš”μ²­μ„ 보냄.
  • 2️⃣ λ‘œλ“œ λ°ΈλŸ°μ„œ(Load Balancer)둜 전달:
    • β†˜οΈŽ μš”μ²­μ€ λ¨Όμ € λ‘œλ“œ λ°ΈλŸ°μ„œ(Load Balancer)둜 전달됨.
  • 3️⃣ μ„œλ²„ 선택:
    • β†˜οΈŽ λ‘œλ“œ λ°ΈλŸ°μ„œ(Load Balancer)λŠ” μ—¬λŸ¬ μ•Œκ³ λ¦¬μ¦˜ 쀑 ν•˜λ‚˜λ₯Ό μ‚¬μš©ν•˜μ—¬ 졜적의 μ„œλ²„λ₯Ό 선택.
  • 4️⃣ μš”μ²­ 전달:
    • β†˜οΈŽ μ„ νƒλœ μ„œλ²„λ‘œ μš”μ²­μ„ 전달.
  • 5️⃣ 응닡 λ°˜ν™˜:
    • β†˜οΈŽ μ„œλ²„λŠ” μš”μ²­μ„ μ²˜λ¦¬ν•œ ν›„, 응닡을 λ‘œλ“œ λ°ΈλŸ°μ„œ(Load Balancer)λ₯Ό 톡해 ν΄λΌμ΄μ–ΈνŠΈλ‘œ λ°˜ν™˜.

3️⃣ λ‘œλ“œ λ°ΈλŸ°μ‹± μ•Œκ³ λ¦¬μ¦˜(Load Balancing Algorithm)

  • 1️⃣ λΌμš΄λ“œ 둜빈(Round Robin)
    • β†˜οΈŽ μš”μ²­μ„ 각 μ„œλ²„μ— 순차적으둜 λΆ„μ‚°.
  • 2️⃣ 가쀑 λΌμš΄λ“œ 둜빈(Weighted Round Robin)
    • β†˜οΈŽ μ„œλ²„μ— κ°€μ€‘μΉ˜λ₯Ό λΆ€μ—¬ν•΄ 더 κ°•λ ₯ν•œ μ„œλ²„μ— 더 λ§Žμ€ μš”μ²­ 전달.
  • 3️⃣ μ΅œμ†Œ μ—°κ²°(Least Connections)
    • β†˜οΈŽ ν˜„μž¬ κ°€μž₯ 적은 연결을 가진 μ„œλ²„λ‘œ μš”μ²­ 전달.
  • 4️⃣ IP ν•΄μ‹œ(IP Hash)
    • β†˜οΈŽ ν΄λΌμ΄μ–ΈνŠΈμ˜ IP μ£Όμ†Œλ₯Ό ν•΄μ‹œλ‘œ λ³€ν™˜ν•˜μ—¬ νŠΉμ • μ„œλ²„λ‘œ 항상 μ—°κ²°.
  • 5️⃣ 응닡 μ‹œκ°„ 기반(Least Response Time)
    • β†˜οΈŽ κ°€μž₯ λΉ λ₯΄κ²Œ 응닡할 수 μžˆλŠ” μ„œλ²„μ— μš”μ²­ 전달.

4️⃣ λ‘œλ“œ λ°ΈλŸ°μ„œ(Load Balancer)의 μœ ν˜•.

  • 1️⃣ ν•˜λ“œμ›¨μ–΄ λ‘œλ“œ λ°ΈλŸ°μ„œ(Hardware Load Balancer)
    • β†˜οΈŽ μ „μš© μž₯λΉ„λ‘œ νŠΈλž˜ν”½μ„ λΆ„μ‚°
      • β†˜οΈŽ 예: F5, Citrix NetScaler
  • 2️⃣ μ†Œν”„νŠΈμ›¨μ–΄ λ‘œλ“œ λ°ΈλŸ°μ„œ(Software Load Balancer)
    • β†˜οΈŽ μ†Œν”„νŠΈμ›¨μ–΄λ‘œ κ΅¬ν˜„λœ λ‘œλ“œ λ°ΈλŸ°μ„œ(Load Balancer)
      • β†˜οΈŽ 예: Nginx, HAProxy
  • 3️⃣ ν΄λΌμš°λ“œ λ‘œλ“œ λ°ΈλŸ°μ„œ(Cloud Load Balancer)
    • β†˜οΈŽ ν΄λΌμš°λ“œ μ„œλΉ„μŠ€ μ œκ³΅μžκ°€ κ΄€λ¦¬ν•˜λŠ” λ‘œλ“œ λ°ΈλŸ°μ„œ(Load Balancer)
      • β†˜οΈŽ 예: AWS ELB(Elastic Load Balancer), GCP Load Balancer, Azure Load Balancer

5️⃣ λ‘œλ“œ λ°ΈλŸ°μ„œ(Load Balancer)의 계측.

  • 1️⃣ L4(Layer 4) λ‘œλ“œ λ°ΈλŸ°μ„œ
    • β†˜οΈŽ OSI 4계측(Transport Layer)μ—μ„œ μž‘λ™.
    • β†˜οΈŽ TCP/UDP ν”„λ‘œν† μ½œ 기반의 νŠΈλž˜ν”½ λΆ„μ‚°.
    • β†˜οΈŽ 속도가 λΉ λ₯΄κ³  효율적.
  • 2️⃣ L7(Layer 7) λ‘œλ“œ λ°ΈλŸ°μ„œ
    • β†˜οΈŽ OSI 7계측(Application Layer)μ—μ„œ μž‘λ™.
    • β†˜οΈŽ HTTP/HTTPS νŠΈλž˜ν”½μ„ 기반으둜 λΆ„μ‚°.
    • β†˜οΈŽ URL, μΏ ν‚€, HTTP 헀더 λ“±μœΌλ‘œ 세뢀적인 νŠΈλž˜ν”½ μ œμ–΄ κ°€λŠ₯.

6️⃣ λ‘œλ“œ λ°ΈλŸ°μ„œ(Load Balancer)의 μž₯점.

  • 1️⃣ κ³ κ°€μš©μ„± 및 μ•ˆμ •μ„±
    • β†˜οΈŽ μ„œλ²„ μž₯μ•  μ‹œ μžλ™μœΌλ‘œ νŠΈλž˜ν”½μ„ λ‹€λ₯Έ μ„œλ²„λ‘œ 전달.
  • 2️⃣ ν™•μž₯μ„±
    • β†˜οΈŽ μˆ˜μš”κ°€ 증가할 λ•Œ μ„œλ²„λ₯Ό μ†μ‰½κ²Œ μΆ”κ°€ κ°€λŠ₯.
  • 3️⃣ λ³΄μ•ˆ κ°•ν™”
    • β†˜οΈŽ DDoS 곡격 λ°©μ–΄, SSL μ•”ν˜Έν™” 지원.
  • 4️⃣ μ„±λŠ₯ μ΅œμ ν™”
    • β†˜οΈŽ νŠΈλž˜ν”½μ„ 효율적으둜 λΆ„μ‚°ν•˜μ—¬ μ„œλ²„ κ³ΌλΆ€ν•˜ 방지.

7️⃣ λ‘œλ“œ λ°ΈλŸ°μ„œ(Load Balancer)의 μ‚¬μš© 사둀.

  • 1️⃣ μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜
    • β†˜οΈŽ μ—¬λŸ¬ μ›Ή μ„œλ²„λ‘œ νŠΈλž˜ν”½μ„ λΆ„μ‚°ν•˜μ—¬ λΉ λ₯Έ 응닡 제곡.
  • 2️⃣ λ°μ΄ν„°λ² μ΄μŠ€ λΆ€ν•˜ λΆ„μ‚°
    • β†˜οΈŽ λ°μ΄ν„°λ² μ΄μŠ€ 읽기/μ“°κΈ° μš”μ²­μ„ μ—¬λŸ¬ DB μ„œλ²„λ‘œ λΆ„μ‚°.
  • 3️⃣ ν΄λΌμš°λ“œ ν™˜κ²½
    • β†˜οΈŽ AWS, Azure, GCP λ“±μ—μ„œ ν΄λΌμš°λ“œ λ‘œλ“œ λ°ΈλŸ°μ„œ(Cloud Load Balancer) μ‚¬μš©.
  • 4️⃣ API Gateway
    • β†˜οΈŽ API μš”μ²­μ„ μ—¬λŸ¬ μ„œλ²„λ‘œ λΆ„μ‚° 처리.

8️⃣ λ‘œλ“œ λ°ΈλŸ°μ„œ(Load Balancer) 선택 κΈ°μ€€.

  • 1️⃣ νŠΈλž˜ν”½ μœ ν˜•
    • β†˜οΈŽ HTTP/HTTPS νŠΈλž˜ν”½μ΄λ©΄ Layer 7 μ‚¬μš©.
    • β†˜οΈŽ TCP/UDP νŠΈλž˜ν”½μ΄λ©΄ Layer 4 μ‚¬μš©.
  • 2️⃣ ν™•μž₯μ„± μš”κ΅¬μ‚¬ν•­
    • β†˜οΈŽ 수직 ν™•μž₯ λ˜λŠ” μˆ˜ν‰ ν™•μž₯
  • 3️⃣ λ³΄μ•ˆ μš”κ΅¬μ‚¬ν•­
    • β†˜οΈŽ SSL/TLS 지원 μ—¬λΆ€
  • 4️⃣ μ˜ˆμ‚°κ³Ό λΉ„μš©
    • β†˜οΈŽ ν•˜λ“œμ›¨μ–΄ vs μ†Œν”„νŠΈμ›¨μ–΄ vs ν΄λΌμš°λ“œ

πŸš€ κ²°λ‘ .

  • β†˜οΈŽ λ‘œλ“œ λ°ΈλŸ°μ„œ(Load Balancer)λŠ” νŠΈλž˜ν”½ λΆ„μ‚°, κ³ κ°€μš©μ„±, ν™•μž₯μ„±, λ³΄μ•ˆμ„ μœ„ν•œ 핡심 μš”μ†Œ.
  • β†˜οΈŽ ν΄λΌμš°λ“œ κΈ°λ°˜μ—μ„œ 운영 쀑이라면 AWS ELB, Azure Load Balancer와 같은 μ„œλΉ„μŠ€λ₯Ό κ³ λ €.
  • β†˜οΈŽ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μš”κ΅¬μ‚¬ν•­μ— 따라 L4 λ˜λŠ” L7 λ‘œλ“œ λ°ΈλŸ°μ„œ(Load Balancer)λ₯Ό 선택.
  • πŸ”‘ 핡심: β€œμ„œλ²„μ˜ 뢀담을 λ‚˜λˆ„κ³ , μž₯μ• λ₯Ό μ΅œμ†Œν™”ν•˜λ©°, μ„œλΉ„μŠ€ κ°€μš©μ„±μ„ 높인닀.”