모노산달로스의 행보

[AWS] ALB(Application Load Balancer) & NLB(Network Load Balancer) & GWLB(Gateway Load Balancer)의 이해 및 차이점 비교 본문

Infrastructure/AWS

[AWS] ALB(Application Load Balancer) & NLB(Network Load Balancer) & GWLB(Gateway Load Balancer)의 이해 및 차이점 비교

모노산달로스 2024. 10. 16. 00:55

aws - ELB

 

AWS(Amazon Web Services)

 

 

AWS(Amazon Web Services)는 아마존이 제공하는 클라우드 컴퓨팅 서비스로, 서버, 스토리지, 네트워크 등을 클라우드를 통해 이용할 수 있습니다. 높은 안정성과 확장성을 갖춘 AWS는 클라우드 분야에서 높은 점유율을 차지하고 있습니다. 스파게티처럼 많은 기술이 존재하여 올바른 사용을 위해서는 꼭 학습이 필요합니다. 반대로 배워두면 많은 클라우드 기술을 사용할 수 있게 됩니다.

 


ELB(Elastic Load Balancer)

What is ELB(Elastic Load Balancer)?

 

 

ELB(Elastic Load Balancer)란 확장성과 고가용성을 지원하기 위한 서비스로서 인스턴스로 들어오는 트래픽을 관리해 주는 역할을 합니다. ELB의 대한 전반적인 내용은 이전 포스트에서 정리했습니다.

 

이번에는 ELB의 각 타입 ALB(Appliaction Load Balancer), NLB(Network Load Balancer) 그리고 GWLB(Gateway Load Balancer)의 대해 정리해 보겠습니다.

 

 


 

OSI 7 Layers 

 

The structure of OSI 7 Layer

 

ELB 타입들을 설명하면서 레이어 계층에 관한 이야기가 등장합니다. 만약 네트워크에 대한 CS지식이 전무한 경우 이해가 어려울 수 있습니다. 따라서 본격적으로 설명에 들어가기 전 OSI 7 Layer에 대해서 간단하게 알아봅시다.

 

OSI 7 Layer은 네트워크 통신을 단계별로 나눈 모델로, 각 계층이 특정 역할을 담당하여 데이터 통신이 이루어집니다. 외우기 보다는 가볍게 읽고 넘어가시면 좋을 것 같습니다.

1. Physical Layer(물리 계층): 하드웨어적 연결을 담당하며, 전기 신호나 물리적 매체를 통해 데이터를 전송합니다. (케이블, 전압 등)
2. Data Link Layer(데이터 링크 계층): 물리 계층에서 전달된 데이터를 프레임으로 변환하고, 오류 제어 및 흐름 제어를 수행합니다. (MAC 주소, 스위치 등)
3. Network Layer(네트워크 계층): 데이터를 패킷으로 분할하고, 서로 다른 네트워크 간에 데이터를 라우팅 합니다. (IP 주소, 라우터 등)
4. Transport Layer(전송 계층): 데이터 전송의 신뢰성을 보장하고, 데이터 분할 및 재조립을 관리하며, 오류 검출과 흐름 제어를 수행합니다. (TCP/UDP 등)
5. Session Layer(세션 계층): 통신 세션의 설정, 유지, 종료를 관리하며, 장시간 통신이 필요한 응용 간의 연결을 제어합니다.
6. Presentation Layer(표현 계층): 데이터 형식의 변환, 암호화, 압축 등을 처리하여 데이터를 통신할 수 있는 형태로 변환합니다. (데이터 인코딩, 암호화 등)
7. Application Layer(응용 계층): 사용자와 직접 상호작용하는 계층으로, 네트워크 서비스 및 애플리케이션을 제공합니다. (HTTP, FTP, 이메일 등)

 

깊이 있게 설명하기에는 주제와 벗어나는 이야기 이기 때문에 간단하게 정리했습니다. 이후의 내용을 이해하는 데에 조금이나마 도움이 되었으면 좋겠습니다.

 

 


 

 

ALB(Application Load Balancer)

What is ALB(Application Load Balancer)?

 

ALB(Application Load Balancer)란 네트워크 레이어 7 계층에서 동작하는 타입의 ELB입니다. 머신간 다수의 HTTP 애플리케이션 라우팅에 사용합니다. 지원하는 통신 방법은 HTTP/HTTPS 그리고 WebSocket입니다.

 

ALB의 특징으로 경로 라우팅을 지원합니다.

URL 패스에 기반한 라우팅이 가능합니다.
URL의 호스트 이름에 기반한 라우팅이 가능합니다.
쿼리 문자열과 헤더에 기반한 라우팅이 가능합니다.

 

모바일 사용자는 1번 그룹, 데스크톱 사용자는 2번 그룹으로 트래픽을 보내자고 가정합시다. 이를 위해 타겟 그룹을 둘로 나누어줍니다. 이후, 쿼리 문자열에 기반하여 경로 라우팅을 사용합니다.

 

사용자로부터 신호가 오면 ELB는 쿼리 문자열을 확인합니다. 이후 결과에 따라서 사용자 트래픽을 분산하여 각 그룹에 전송합니다.

 

What is Dyanmic Port Mapping?

 

ALB는 동적 포트 매핑을 지원하기 때문에 고정되지 않은 ECS instance의 동적 포트 리다이렉션이 가능합니다.

 

ECS instance는 하나의 인스턴스에 여러 컨테이너가 실행됩니다. 이때, 각 컨테이너는 서로 다른 임의의 포트에서 서비스됩니다. 동적 포트 매핑을 사용하면 ALB가 대신 임의로 지정된 포트로 트래픽을 전송합니다.

 

따라서 ALB는 마이크로 서비스나 컨테이너 기반 애플리케이션에 사용할 때 추천됩니다. 

 

ALB의 대해 알아두면 좋은 정보
1. 고정 호스트 네임이 부여됩니다.
2. 애플리케이션 서버는 클라이언트 IP를 직접적으로 알 수 없습니다. 이를 위해서 헤더를 확인해야 합니다. (X-Forwarded-For)
3. 포트와 프로토콜도 마찬가지로 헤더를 확인해야 합니다. (X-Forwarded-Port, X-Forwarded-Protocol)

 

 


 

NLB(Network Load Balancer)

NLB(Network Load Balancer)란 네트워크 레이어 4 계층에서 동작하는 타입의 ELB입니다. 따라서 TCP와 UDP 트래픽을 처리합니다.

 

높은 성능의 로드 밸런서로 초당 수백만건의 트래픽을 처리할 수 있습니다. 지연시간 또한 ALB에 비하여 굉장히 짧습니다.

 

Load Balancing

 

NLB는 AZ(Availability Zone)당 하나의 고정 IP가 존재합니다. 그리고 각 AZ에 Elastic IP를 배정할 수 있습니다. 따라서 여러개의 고정 IP가 있는 애플리케이션 노출 시 유용합니다.

 

한 가지 재미있는 것은 ALB앞에 NLB를 둘 수도 있습니다. 그렇게 하면 NLB로 고정 IP를 얻고 ALB로 HTTP 트래픽 처리를 할 수 있습니다.

 


GWLB(Gateway Load Balancer)

GWLB(Gateway Load Balancer)네트워크 레이어 3 계층에서 동작하는 타입의 ELB입니다. 즉, 모든 로드 밸런서 중 가장 낮은 레이어에서 동작합니다.

주로 aws의 타사 네트워크의 가상 어플라이언스 플릿 관리를 위해 사용합니다. 여기서 가상 어플라이언스 플릿이란 네트워크 관련 작업을 수행하는 여러 개의 가상 장치(Virtual Appliances)로 구성된 집합을 의미합니다.

 

Operation process of GWLB (Gateway Load Balancer)

 

GWLB는 유저가 트래픽을 보내면, 가상 어플라이언스가 존재하는 Target Group으로 트래픽을 전송합니다. 그럼 여러 가상 장치들이 네트워크 트래픽을 분석합니다.

 

이후 분석 결과에 따라 트래픽의 목적지를 결 정합니다. 본래 목적지인 EC2 instance로 보낼 수도 있고 보안에 문제가 있다고 판단되면 트래픽을 버릴 수도 있습니다.

 

 


 

ELB의 모든 타입들에 대해 글로 정리하였습니다. CLB(Classic Load Balancer)는 이제 사용되지 않는 서비스이므로 해당 글에서는 제외되었습니다.

 

이제 ELB에 대한 내용이 모두 정리되었으니 ASG에 대해 살펴볼 수 있게 되었습니다. 로드 밸런서에 대한 내용은 길고 복잡하지만 정말 중요한 서비스이므로 꼭 완벽히 이해하고 넘어가야 할 것 같습니다.