Skip to content

Load Balancer 의 종류 ​

Load Balancer는 다 알고 있는데 NLB? ALB? ​

  • Load Balancer(LB)는 클라이언트 요청을 여러 서버로 분산하여 부하를 나누고 가용성을 높이는 장치인건 다 아는데, 가끔 등장하는게 NLB, ALB 입니다.
  • 그냥 LB 라고 부를때는 90% 확률로 NLB 라고 생각하면 됩니다. 싸고 빠르고 간단한 LB 이기 때문이죠
  • 특수한 경우에 NLB 말고 ALB 라는걸 쓰는데 여기에 대해서 이야기해보려고 합니다
    • 글로벌 CSP (AWS, GCP) 에서는 엔지니어를 행복하게 해줄 온갖 기상천외한 듣도보도못한 LB 들이 많고 지금도 출시중이지만, 가장 많이 사용하는 종류는 두 가지만 오늘 글에서는 다룹니다.
      • ALB (Application LoadBalancer)
      • NLB. (Network Load Balancer)

OSI 계층기반 ALB/NLB 설명 ​

  • LB 설명전에 학교에서 배웠는데 까먹은 지식을 잠깐 리마인드 해보면 OSI 7Layter 라는게 있었고 아시는 분들은 아래 표 하나만 보고 그냥 이 글을 끄고 넘어가면 됩니다.
  종류   계층   처리
  ------ ------ ------------
  ALB    L7     HTTP/HTTPS
  NLB    L4     TCP/UDP
  • "ALB는 L7 LB이고, NLB는 L4LB 이다"
    • 위 문장 듣고 "이해된다" "당연하지" 이런 생각이 든다면 아래 내용은 더이상 볼 필요가 없습니다 시간을 더 생산적인 곳에 사용하세요!

ALB : 어플리케이션 레벨의 로드벨런서 ​

  • ALB 는 어플리케이션 레벨, 다시말해서 HTTP를 이해하는 로드밸런서.
  • 그래서 아래 기능들을 모두 지원 가능합니다.
    • URL 기반 라우팅
    • Host 기반 라우팅
    • Header 기반 라우팅
    • Cookie 기반 Sticky Session
    • HTTP/2
    • WebSocket
    • TLS Termination
  • 예시
도메인/api/*   -> API Server
도메인/image/* -> Image Server
  • 이게 뭐가 대단하냐? 하실수 있는데 아래 등장할 NLB 대비해서 훨씬 많은 정보를 열람하고 조회해볼수 있는 LB 이기 때문에 아래 특징들도 있습니다.
    • 비싸다 (동일성능 대비) : 단순히 CSP 비용이 비싼게 아니라 이걸 실제로 구현하기 위해서 Vendor 에서 사와야하는 장비도 훨씬 더 비싸고 복잡한 물건입니다
    • 느리다 (쓰루풋이 적거나, 타임딜레이가 길다)

NLB : 네트워크 레벨 로드벨런서 ​

  • TCP/UDP 연결을 그대로 전달하는 로드밸런서
  • 아래 특징이 있습니다
    • TCP/UDP 지원
    • 매우 낮은 지연시간
    • 높은 처리량
    • TLS Pass-through 가능
    • HTTP 내용을 분석하지 않음 (정확하게는 "신경쓰지 않는다" 혹은 "모른다" 가 더 정확합니다)

ALB 와 NLB 선택 사용 기준 ​

ALB 를 사용해야하는곳 ​

  • 웹 서비스
  • REST API
  • GraphQL
  • gRPC

NLB 를 사용해야하는곳 ​

  • 게임 서버
  • Redis
  • MQTT
  • 일반 TCP/UDP 서버
  • TLS를 애플리케이션에서 종료하는 경우

표로 비교 (ALB vs NLB) ​

  항목            ALB    NLB
  --------------- ------ -----------
  계층            L7     L4
  HTTP 이해       O      X
  URL 라우팅      O      X
  Header 라우팅   O      X
  UDP             X      O
  속도            느림   빠름
  • 참고로 ALB 속도를 느리다고 표현했는데 진짜 절대적으로 느려서 그런건 절대 아니고 NLB 에 비교해서 상대적으로 그렇다는 이야기 입니다!
  • ALB 도 비싸고 좋은 vendor 장비 쓰면 ns~us (나노 마이크로), 아무리 구린 장비를 써도 ms 단위에서 노는것들이니만큼 절대적으로 보면 느린건 아닙니다

핵심 요약/레슨런 ​

  • ALB = 고오급 미슐랭 5스타 식당에서 구워주는 야키토리같은 LB
    • L7레벨 HTTP를 이해하는 똑똑한 로드밸런서
  • NLB = 싸고 간단한 길거리 닭꼬치
    • L4레벨 TCP/UDP만 보고 빠르게 전달하는 고성능 로드밸런서
  • Load Balancer라는 큰 개념 아래에 ALB와 NLB가 있으며, 어떤 프로토콜을 다루고 어떤 기능이 필요한지에 따라 선택해서 사용한다.