AWS Elastic Load Balancing 이해하고 사용하기 #1
이번 글에서는 Elastic Load Balancing 이해하기 위한 기본 개념을 다룹니다.
다음 편에서는 Elastic Load Balancing를 실제로 사용해보고 테스트해볼 것입니다.
이번 글의 목차는 다음과 같습니다.
- ELB란 무엇인가
- ELB의 특징
- ELB의 종류
ELB란 무엇인가?
Elastic Load Balancing는 들어오는 애플리케이션 트래픽을 Amazon EC2 인스턴스, 컨텐이너, IP 주소, Lambda 함수와 같은 여러 대상에 자동으로 분산시킵니다. Elastic Load Balancing은 단일 가용 영역 또는 여러 가용 영역에서 다양한 애플리케이션 부하를 처리할 수 있습니다. Elastic Load Balancing이 제공하는 세 가지 로드 밸런서는 모두 애플리케이션 내결함성에 필요한 고가용성, 자동 확장/축소, 강력한 보안을 갖추고 있습니다.
내결함성 : 시스템의 다른 부분에 고장이 발생하더라도 시스템이 설계된 대로 계속 작동하는 것을 의미한다.
고가용성 : 전체 시스템에 대하여, 사람이 개입하지 않아도 시스템이 항상 작동하고 액세스 가능, 가동 중지를 최소화하도록 보장하는 것
일반적으로 웹 트래픽 증가에 대한 처리 방식은 크게 두 가지입니다. 로드 밸런싱은 Scale Out 방식의 웹 서비스에 주로 사용됩니다.
- Scale Out(Horizontal Scale) : 노드 여러 개를 하나의 Cluster로 구성하는 방식
- Scale Up(Vertical Scale) : CPU, 메모리, 디스크 등의 사양을 업그레이드하는 방식
ELB의 특징
1. 상태 체크 (Health Check)
상태 체크에 통과하지 못한 인스턴스는 더이상 요청을 전달받지 못합니다.
Elastic Load Balancing는 ELB와 연결된 인스턴스의 연결 상태를 수시로 체크합니다.
상태 체크에 통과하지 못한 인스턴스는 더이상 요청을 전달받지 못합니다.
이를 위해 제한 시간과 간격, HTTP와 HTTPS 상태 확인 빈도, 실패 임계치, 성공 시 응답 코드 등을 설정할 수 있습니다.
2. Sticky Session
Elastic Load Balancing을 이용해 트래픽을 분산할 때 기본적으로 한 번 연결된 세션은 다음 연결 시 그대로 연결하지 않으며, 다음번 연결 시 다른 인스턴스로 연결될 수 있어서 애플리케이션의 세션을 유지할 수 없습니다.
Sticky Session을 사용하면 처음 연결된 클라이언트에 별도의 HTTP 기반 쿠키 값을 생성하여 다음 번 연결 요청에 대해 처음 접속했던 서버로 계속 연결하도록 트래픽을 처리합니다.
3. 고가용성 구성
Elastic Load Balancing은 단일 가용 영역 또는 여러 가용 영역에 있는 여러 대상(EC2, 컨테이너 및 IP 주소)에 걸쳐 트래픽을 자동으로 분산할 수 있습니다. Route53과 같은 다른 서비스들과 연계해서 고가용성 구성을 제공할 수 있습니다.
4. SSL Termination 및 보안 기능
웹 사이트에 SSL 인증서를 적용하여 HTTPS와 같은 방식으로 암호화 통신을 하기 위해서는 개별 웹 서버에 별도의 공인인증서를 구매 후 적용해야 합니다. 이 경우 인증서 만료에 따른 갱신 등 관리가 필요합니다.
또한 개별 EC2 인스턴스에서 SSL 암호화 복호화를 직접 처리하기 때문에 인스턴스에 암호화 및 복호화 처리를 위한 추가 부하가 발생합니다.
ELB의 SSL Termination 기능을 사용하게 되면 개별 인스턴스에 SSL 인증서를 직접 설치할 필요가 없습니다. ELB에 공인인증서 또는 ACM(Amazon Certificate Manager)에서 무료로 발급받을 수 있는 사설 인증서를 등록함으로써, SSL 인증서를 이용한 HTTPS 암호화 및 복호화 서비스를 제공할 수 있습니다.
ELB의 종류
Application Load Balancer
OSI 모델 7계층(Application)에서 작동하며, HTTP와 HTTPS를 사용하는 서비스에 적합합니다.
Network Load Balancer
OSI 모델 4계층(Transport Layer)에서 작동하며, 비교적 짧은 지연시간을 가지고 있고, TCP 트래픽의 로드밸런싱에 적합합니다.
Classic Load Balancer
OSI 모델 4계층(Transport Layer), 3 계층(Network Layer)에서 작동하며, EC2-Classic 네트워크 내에 구축된 애플리케이션을 대상으로 합니다.
다음 글에서 실제로 AWS Elastic Load Balancing를 사용해 분산 환경을 구성해보겠습니다.