일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- #파밍
- #크랙미2번
- leetcode
- springframework
- #보안뉴스
- #abex크랙미
- #크랙미 5번
- GraphQL
- #고클린
- #크랙미
- Easy
- java
- 리버싱
- #크랙미4번
- #리버싱
- #크랙미 9번
- #심플즈
- #abex크랙미4번
- #보안이슈
- java8
- #크랙미3번
- Spring
- #심플즈 크랙미
- #abex
- #크랙미 10번
- Today
- Total
Halo World
AWS NLB(L4 LB) VS ALB (L7 LB) 비교, 차이 본문
신규 서비스의 경우 개발을 완료하고 환경 셋업을 하려고 보면, 어떤 lb를 사용하야할지 고민이 되는데, 이때 각 lb들이 어떻게 다른지 알면 좋을 것 같아 포스팅을 작성한다.
부하 분산을 위한 로드밸런서는 OSI 7 계층 중 어느 계층에서 동작하는지에 따라 NLB(Network LoadBalancer)와 ALB(Application LoadBalancer)로 나눌 수 있다. 기존에는 CLB(Classic LoadBalancer)도 있었지만, 현재에는 많이 사용하지 않고 주로 NLB 또는 ALB를 사용하고 있다.
NLB (Network LoadBalancer)
이름에서 알 수 있듯이 NLB는 L4 계층, 네트워크 계층에서 동작한다.
특징
- 휘발성 처리 초당 수백만개 처리 가능
- 로드 밸런서에 대한 고정 IP 주소 지원
ALB (Application LoadBalancer)
L7 계층, 즉 애플리케이션 계층에서 동작하는 로드밸런서이다.
특징
- path-based(경로 기반) 라우팅이 지원된다
ALB는 애플리케이션 계층에서 동작하므로, 해당 요청의 path까지 참고하여 path 별 라우팅이 가능하다. 이는 특정 path로 들어오는 경우에는 다른 서버로 라우팅 시켜주어야 할때 유용하게 사용할 수 있다.
예를 들어, Delivery라는 서비스를 리팩토링 한다고 가정해보자.
서비스의 안정성을 위해 특정 path 별로 라우팅을 하고 싶어,기존에 모두 delivery 서비스로 들어오던 요청 중 /register path로 들어오는 요청만 새로 리팩토링한 서버로 전달하고 싶다. 이런 경우에 ALB의 path 라우팅 기능을 이용하여 기존 deliery 서버로 들어오는 요청 중 /register로 들어오는 요청만 리팩토링한 새 서비스로 전달할 수 있다.
이러한 특징 때문에 마이크로서비스 구조에서 path별로 각 마이크로서비스로 라우팅이 필요한 api gw는 alb를 사용한다고 한다.
ALB는 애플리케이션 계층에서 동작하므로, 해당 요청의 path까지 참고하여 path 별 라우팅이 가능하다. 이는 특정 path로 들어오는 경우에는 다른 서버로 라우팅 시켜주어야 할때 유용하게 사용할 수 있다.
- HTTP 헤더의 호스트 필드를 기반으로 라우팅 지원한다. 단일 로드밸런서를 이용해 요청을 여러 도메인으로 라우팅이 가능하다.
- 표준 및 사용자 지정 HTTP 헤더와 메서드, 쿼리 매개 변수, 소스 IP 주소와 같은 요청의 필드를 기반으로 라우팅을 지원한다.
- 한 URL에서 다른 URL로 요청 리디렉션을 지원한다.
- HTTP 응답 반환을 커스텀 할 수 있다.
- X-Forwarded-For를 사용하여 클라이언트 IP 주소를 캡처하여 액세스 로그에 출력이 가능하다.
비교 정리
- nlb에 비해 7계층까지 확인하는 alb의 기능이 더 많다.
- 그러나, nlb는 network 계층까지만 확인하므로 alb 보다 빠르다. 따라서 단순한 라우팅이 필요하고, 트래픽이 극도로 많은 경우에는 alb 보다는 nlb를 사용하는 것이 적합하다.
- alb는 path-based routing이 가능하므로 path를 확인하여 특정 서버로 라우팅을 시켜주어야 하는 경우에 적합하다 (api gw)
Reference
추가로 읽어보면 좋을 자료
'개발 지식 > DEVOPS' 카테고리의 다른 글
Virtualization and Docker (0) | 2020.10.06 |
---|