λ‘œλ“œ λ°ΈλŸ°μ‹±

μ—¬λŸ¬ μ„œλ²„λ“€λ‘œ λ„€νŠΈμ›Œν¬ νŠΈλž˜ν”½μ„ λΆ„μ‚° μ²˜λ¦¬ν•˜λŠ” κΈ°μˆ μ„ λ‘œλ“œ λ°ΈλŸ°μ‹±μ΄λΌκ³  ν•œλ‹€. νŠΈλž˜ν”½μœΌλ‘œ 인해 μ„œλ²„μ— λΆ€ν•˜κ°€ 생길 κ²½ν›„ μ²˜λ¦¬ν•˜λŠ” 방법이 두가지가 μ‘΄μž¬ν•œλ‹€.

  • Scale-up : μ„œλ²„μ˜ μ„±λŠ₯을 λ†’μ΄λŠ” 방법
  • Scale-out : μ—¬λŸ¬ 개의 μ„œλ²„λ₯Ό λ‘λŠ” 방법

λ‘œλ“œ λ°ΈλŸ°μ‹±μ€ Scale-out에 μ‚¬μš©λ˜λ©°, νŠΈλž˜ν”½ 처리λ₯Ό μœ„ν•΄ μƒμ„±λœ μ—¬λŸ¬ 개의 μ„œλ²„μ— νŠΈλž˜ν”½μ„ λΆ„μ‚°ν•˜μ—¬ νŠΈλž˜ν”½μ„ μ²˜λ¦¬ν•œλ‹€.

λ‘œλ“œ λ°ΈλŸ°μ„œ

μ΄λŸ¬ν•œ λ‘œλ“œ λ°ΈλŸ°μ‹± κΈ°μˆ μ„ μ œκ³΅ν•˜λŠ” μ„œλΉ„μŠ€ λ˜λŠ” μž₯치λ₯Ό λ‘œλ“œ λ°ΈλŸ°μ„œλΌκ³  ν•œλ‹€. λ‘œλ“œ λ°ΈλŸ°μ„œλŠ” μ„œλΈŒλ“€ 사이에 μœ„μΉ˜ν•˜λ©° VIP와 ν•¨κ»˜ κ΅¬μ„±λœλ‹€.

VIP (Virtual IP)
λ‘œλ“œ λ°ΈλŸ°μ‹±μ˜ λŒ€μƒμ΄ λ˜λŠ” μ—¬λŸ¬ μ„œλ²„λ₯Ό λŒ€ν‘œν•˜λŠ” κ°€μƒμ˜ IP이닀. ν΄λΌμ΄μ–ΈνŠΈλ“€μ€ μ„œλ²„μ˜ IP둜 직접 μš”μ²­μ„ ν•˜λŠ” 것이 μ•„λ‹ˆλΌ λ‘œλ“œ λ°ΈλŸ°μ„œλ₯Ό κ°€μ§€κ³  μžˆλŠ” VIP에 μš”μ²­ν•œλ‹€. 그리고 둜그 λ°ΈλŸ°μ„œλ₯Ό ν•΄λ‹Ή μš”μ²­μ„ λΆ„μ‚°λœ μ„œλ²„μ— μ„€μ •λœ 방법에 따라 λΆ„μ‚°ν•œλ‹€.

L4

μ •μ˜

IP, Port 그리고 TCP/DUP와 같은 OSI 7 계측 쀑 4계측인 전솑 κ³„μ •μ˜ 정보λ₯Ό 기반으둜 νŠΈλž˜ν”½μ„ λΆ„μ‚°ν•œλ‹€. L4λŠ” νŒ¨ν‚·μ•ˆμ˜ HTTP λ‚΄μš©μ„ 읽지 μ•ŠλŠ”λ‹€.

λ™μž‘ 원리

TCP 연결이 ν΄λΌμ΄μ–ΈνŠΈλ‘œ λΆ€ν„° λ“€μ–΄μ˜€λ©΄ λ‘œλ“œ λ°ΈλŸ°μ„œλŠ” μ•„λž˜μ™€ 같은 정보λ₯Ό ν™•μΈν•œλ‹€.

  • Source IP
  • Destination IP
  • Source Port
  • Destination Port
  • Protocol(TCP/UDP)

이후, λ‘œλ“œ λ°ΈλŸ°μ„œμ˜ 섀정에 따라 μš”μ²­μ„ μ μ ˆν•œ μ„œλ²„μ— μ „λ‹¬ν•œλ‹€. μ΄λ•Œ, μ„œλ²„λŠ” HTTP μš”μ²­μ•ˆμ— μ–΄λ–€ HTTP λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν–ˆλŠ”μ§€ 그리고 μ–΄λ–€ URL으둜 μš”μ²­μ„ ν–ˆλŠ”μ§€ λͺ¨λ₯Έλ‹€.

μž₯단점

  • μž₯점
    • νŒ¨ν‚· λ ˆλ²¨μ—μ„œλ§Œ λ‘œλ“œλ₯Ό λΆ„μ‚°ν•˜κΈ° λ•Œλ¬Έμ— 맀우 λΉ λ₯΄λ‹€
    • μ²˜λ¦¬λŸ‰μ΄ 크닀
    • CPU μ‚¬μš©λŸ‰μ΄ 적닀
    • TCP/UDP λͺ¨λ‘ κ°€λŠ₯ν•˜λ‹€
  • 단점
    • URL 기반 λΆ„κΈ°κ°€ λΆˆκ°€λŠ₯ν•˜λ‹€
    • Header 확인이 λΆˆκ°€λŠ₯ν•˜λ‹€
    • Cookie 확인이 λΆˆκ°€λŠ₯ν•˜λ‹€

L7

μ •μ˜

OSI 7κ³„μΈ΅μ˜ 정보(HTTP, HTTPS, gRPC, REST API)λ“±μ˜ 데이터λ₯Ό 기반으둜 νŠΈλž˜ν”½μ„ λΆ„μ‚°ν•œλ‹€. L4μ—μ„œ ν™•μΈν•˜μ§€ μ•ŠλŠ” HTTP λ©”μ†Œλ“œμ™€ URLκΉŒμ§€ ν™•μΈν•œλ‹€.

λ™μž‘ 원리

ν΄λΌμ΄μ–ΈνŠΈκ°€ μ•„λž˜μ™€ 같은 μš”μ²­μ„ 보낸닀.

GET /login HTTP/1.1
Host: example.com

L7 λ‘œλ“œ λ°ΈλŸ°μ„œλŠ” ν•΄λ‹Ή μš”μ²­μ„ λ°›μ•„ μ•„λž˜μ˜ 데이터λ₯Ό λΆ„μ„ν•œλ‹€.

  • Method : GET
  • URL : /login
  • HOST : example.com
  • Cookie, Header, User-Agnet λ“±

그리고 κ·œμΉ™μ— 따라 μš”μ²­μ„ μ„œλ²„μ— λΆ„μ‚°ν•œλ‹€.

  • /login β†’ Auth Server
  • /image β†’ Image Server

μž₯단점

  • μž₯점
    • μƒμœ„ κ³„μΈ΅μ—μ„œ λ‘œλ“œλ₯Ό λΆ„μ‚°ν•˜κΈ° λ•Œλ¬Έμ— μ„¬μ„Έν•œ λΌμš°νŒ…μ΄ κ°€λŠ₯ν•˜λ‹€
    • 캐싱 κΈ°λŠ₯을 μ œκ³΅ν•œλ‹€
    • 비정상적인 νŠΈλž˜ν”½μ„ 사전에 필터링할 수 μžˆμ–΄ μ„œλΉ„μŠ€ μ•ˆμ •μ„±μ΄ λ†’λ‹€
  • 단점
    • νŒ¨ν‚·μ˜ λ‚΄μš©μ„ λ³΅ν˜Έν™”ν•΄μ•Όν•˜κΈ° λ•Œλ¬Έμ— λΉ„μš©μ΄ λ°œμƒν•œλ‹€

μ•Œκ³ λ¦¬μ¦˜

  • Round Robin : μš”μ²­μ„ μˆœμ„œλŒ€λ‘œ 각 μ„œλ²„μ— κ· λ“±ν•˜κ²Œ λΆ„λ°°ν•œλ‹€
  • IP Hash Method : ν΄λΌμ΄μ–ΈνŠΈμ˜ IPλ₯Ό ν•΄μ‹±ν•΄ λ‘œλ“œλ₯Ό λΆ„λ°°ν•œλ‹€
  • Least Connection : μ„œλ²„μ— μ—°κ²°λ˜μ–΄ μžˆλŠ” 컀λ„₯μ…˜ 개수만 κ°–κ³  λ‹¨μˆœλΉ„κ΅ν•˜μ—¬ κ°€μž₯ 적은 곳에 μ „λ‹¬ν•œλ‹€
  • Weight Least Connections : μ„œλ²„μ— λΆ€μ—¬λœ κ°€μ€‘μΉ˜ 값을 기반으둜 컀λ„₯μ…˜ 수의 κ°œμˆ˜μ™€ 같이 κ³ λ €ν•˜μ—¬ ν• λ‹Ήν•œλ‹€
  • Fastest Response Time : κ°€μž₯ 빨리 μ‘λ‹΅ν•˜λŠ” μ„œλ²„μ— μš”μ²­μ„ μ—°κ²°ν•˜λŠ” 방법이닀
  • Bandwidth : μ„œλ²„λ“€κ³Όμ˜ λŒ€μ—­ν­μ„ κ³ λ €ν•˜μ—¬ μ„œλ²„μ— λΆ„μ‚°ν•œλ‹€

참고자료

L4/L7 λ‘œλ“œλ°ΈλŸ°μ‹± μ‰½κ²Œ μ΄ν•΄ν•˜κΈ°

[λž€] L4 load balancer vs L7 load balancer λž€?

[λ„€νŠΈμ›Œν¬] λ‘œλ“œλ°ΈλŸ°μ„œμ˜ κΈ°λ³Έ (L4 λ‘œλ“œλ°ΈλŸ°μ„œ L7 λ‘œλ“œλ°ΈλŸ°μ„œ) (AWS ELB, NLB, ALB)

[λ„€νŠΈμ›Œν¬] λ‘œλ“œλ°ΈλŸ°μ‹±μ˜ κ°œλ… 및 기법 μ„€λͺ…

[λ„€νŠΈμ›Œν¬] λ‘œλ“œ λ°ΈλŸ°μ„œ