본문 바로가기

Infrastructure/Cloud Computing

[AWS] ELB

로드 밸런싱이란?

로드 밸런싱(Load Balancing)이란 네트워크 트래픽을 하나 이상의 서버나 장비로 분산하기 위해 사용되는 기술이다. 이렇게 로드 밸런싱을 수행하는 소프트웨어나 하드웨어를 로드 밸런서(Load Balancer)라고 한다. 로드 밸런싱을 통해 인터넷 트래픽을 여러 장비로 분산하여 처리할 수 있다.

그림1

대부분의 서비스들은 트래픽이 증가하면 일반적으로 두 가지 방식으로 처리한다.

1. Scale Up을 통하여 리소스(CPU, Memory, Disk)의 기능을 업그레이드: 기존보다 높은 성능으로 업그레이드 하여 증가한 트래픽을 처리하는 방식이다. 만약 하나의 애플리케이션이 모든 트래픽을 감당하고 있는 상황에서 애플리케이션이 실행되는 인스턴스의 사양만 증가시킨다면 여전히 고가용성을 유지할 수 없다. 결국 또 트래픽이 증가하면 애플리케이션이 다운될 것이기 때문이다. 또한 필요로 하는 성능이 높아질수록 비용이 기하급수적으로 증가한다.

2. Scale Out을 통해 여러 개의 인스턴스를 Cluster로 구성: 1번 방식과는 다르게 여러 개의 인스턴스로 구성되어 있기 때문에 하나의 인스턴스가 중단되더라도 서비스 운영에는 큰 지장이 없다. 고가용성을 유지할 수 있다. 로드 밸런싱은 이렇게 Scale Out되도록 설계된 서비스에 주로 사용된다. 네트워크 트래픽을 서비스의 포트 단위로 제어하고 트래픽을 분산하여 처리한다.

로드 밸런싱 방식

1. 라운드 로빈(Round Robin): 분산되어 있는 서버로의 Session 연결을 순차적으로 맺어주는 방식이다. 연결되어 있는 Session수와 상관 없이 순차적으로 연결시키므로 Session에 대한 보장을 제공하지 않는다.

2. 해시(Hash): Hash 알고리즘을 이용한 로드 밸런싱 방식이다. Client와 Server간에 연결된 Session을 계속 유지시키는 방식으로 Clinet가 특정 Server로 연결된 이후 동일 서버로만의 연결을 보장하여 Session에 대해 보장을 제공한다.

3. 적은 연결(Least Connection): Session 수를 고려하여 가장 작은 Session을 보유한 서버로 Session을 맺어주는 연결 방식이다. Session에 대한 보장을 제공하지 않는다.

4. 응답 시간(Response Time): 서버의 응답시간을 확인하여 빠른 응답시간을 제공하는 서버로 Session을 맺어주는 방식으로 Session에 대한 보장을 제공하지 않는다.


ELB란?

ELB(Elastic Load Balancing)은 단일 가용이나 여러 가용 영역에서 실행되는 EC2 인스턴스 및 컨테이너에서 실행되는 동일한 기능을 제공하는 애플리케이션 및 네트워크 트래픽을 자동으로 분산시켜주는 서비스다. 애플리케이션의 내결함성을 확보하며 네티워크 트래픽을 원할하게 여러 EC2 인스턴스에 배포하여 부하를 자동 분산처리한다. 이러한 트래픽 분산으로 고가용성 자동 조정 및 보안 서비스를 제공한다.

ELB의 종류 및 유형

작성일 기준으로 총 네 가지의 유형이 있다.

1. Application Load Balancer: OSI 모델 7계층(Application)에서 작동하며 HTTP, HTTPS와 같은 로드 밸런싱 서비스에 적합하다. 마이크로 서비스 및 컨테이너 기반 애플리케이션 서비스에 최적화된 로드 밸런싱을 제공한다. SSL/TLS와 같은 암호화 및 프로토콜을 사용하여 보안성을 보장한다.

그림2

2. Network Load Balancer: OSI 모델 4계층(Transport)에서 작동하며 TCP 트래픽의 로드 밸런싱 서비스에 적합하다. 짧은 지연 시간과 초당 수백만 개의 요청처리가 가능하며 가용 영역당 1개의 주소를 사용하여 트래픽의 변동이 심한 서비스에 최적화되어 있다.

3. Classic Load Balancer: OSI 모델 4계층(Transport), 3계층(Network)에서 작동하며 EC2-Classic 네트워크 내에 구축된 애플리케이션을 대상으로 한다.

그림3

4. Gateway Load Balancer: OSI 모델 3계층(Network)에서 작동하며 단일 진입점인 네트워크 게이트웨이로 모든 트래픽을 결합한다. 방화벽, 침입 탐지 및 방지 시스템, 심층 패킷 검사 시스템과 같은 가상 어플라이언스를 결합하여 수요에 따라 가상 어플라이언스를 조절하면서 트래픽을 분산한다.

ELB를 생성할 때 인터넷 통신이 가능(Internet Facing) 유무를 선택한다. 선택 여부에 따라 ELB가 Internal ELB가 될 수도 External ELB가 될 수도 있다. Internal ELB의 경우 인터넷 연결이 가능하며 Public IP, Private IP 모두 사용가능하며 인터넷과 VPC내부에서 접속이 가능하다. External ELB의 경우 인터넷 연결이 불가능하며 Private IP만 사용 가능하다. 또한 VPC 내부에서만 사용이 가능하다.


ELB의 주요 특징

1. 상태 확인 서비스(Health Check): ELB는 자신과 연결된 노드의 상태를 수시로 확인하여 노드의 OS나 애플리케이션의 문제로 서비스 제공이 불가능한지를 확인(Health Check)한다. 만약 Health Check가 실패하는 경우 ELB는 문제가 발생한 노트로 트래픽을 전달하지 않는다. HTTP, HTTPS 방식은 특정 웹 페이지의 접속 시도에 따른 응답 코드가 200인 경우 정상인 노드라고 판단한다. TCP 방식으로 Health Check를 진행하는 경우 서비스의 포트 개방 여부 및 연결 가능 여부로 노드의 정상 유무를 판단한다.

그림4

2. Sticky Session: ELB를 통해 트래픽을 분산하는 경우 따로 선택을 하지 않으면 Round Robin 방식으로 트래픽을 분산한다. 이러한 경우 클라이언트가 HTTP, HTTPS 요청을 했을 때 처음에 요청한 서버와 다음으로 요청한 서버가 같지 않을 수 있으며 이러한 경우 Session이 유지되지 않는다.(HTTP는 무상태 프로토콜이기 때문) 만약 자신이 개발한 애플리케이션이 Session을 유지해줘야한다면 Sticky Session을 사용하여 처음에 연결된 서버에 계속 연결하도록 트래픽을 처리할 수 있다.

3. 고가용성(High Available): ELB는 하나의 가용 영역 또는 여러 가용 영역에 있는 여러 인스턴스나 컨테이너에 트래픽을 자동으로 분산할 수 있다. 아래의 그림 기준으로 Data Center A가 있는 AZ에 문제가 생겨서 서비스가 불가능하다고 가정하였을 때 Data Center B에 있는 Web Server로 트래픽을 분산하여 고가용성을 유지한다.

그림5

4. SSL Termination 및 보안 기능: 서비스는 SSL 인증서를 적용하여 HTTPS와 같은 방식으로 암호화 통신을 한다. 이러한 암호화를 위하여 공인인증서를 구매하여 모든 웹 서버에 적용하여 사용하여야한다. 이렇게 인증서가 웹 서버에 직접적으로 장착되어 있다면 만료 및 갱신에 따른 관리가 필요하며 웹 서버가 설치되어 있는 인스턴스는 SSL 암호화 및 복호화를 직접 처리해야하므로 추가 부하가 발생하게 된다. ELB는 이렇게 비효율적 인증서 관리를 SSL Termination 기능을 사용하여 효율적으로 관리해준다. AWS의 ACM(Amazon Certificate Manager)를 통해 발급받거나 사설 업체를 통해 발급받은 인증서를 ELB에 설정하여 손쉽게 SSL 인증서를 관리할 수 있다.

그림6

이 글은 아마존 웹 서비스 AWS Discovery Book 도서와 AWS 공식문서를 참고하여 작성하였다.

이미지 출처:

'Infrastructure > Cloud Computing' 카테고리의 다른 글

[AWS] CloudFront  (0) 2022.02.18
[AWS] Auto Scaling  (0) 2022.02.17
[AWS] Route53  (0) 2022.02.16
[AWS] RDS  (0) 2022.02.16
[AWS] Network  (0) 2022.02.14