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)
- 글로벌 CSP (AWS, GCP) 에서는 엔지니어를 행복하게 해줄 온갖 기상천외한 듣도보도못한 LB 들이 많고 지금도 출시중이지만, 가장 많이 사용하는 종류는 두 가지만 오늘 글에서는 다룹니다.
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가 있으며, 어떤 프로토콜을 다루고 어떤 기능이 필요한지에 따라 선택해서 사용한다.