[AWS] Amazon Elastic Load Balancing(ELB)

로드 밸런싱(Load Balancing)

로드 밸런싱이란 네트워크 기술의 일종으로 네트워크 트래픽을 하나 이상의 서버나 장비로 분산하기 위해 사용되는 기술로, 로드 밸런싱을 수행하는 소프트웨어나 하드웨어를 로드 밸런서(Load Balance)라고 한다.

로드 밸런싱 서비스를 통해 외부에서 발생되는 많은 인터넷 트래픽을 여러 웹 서버나 장비로 부하를 분산하여 처리할 수 있다.

  • 여러 대의 서버를 두고 서비스를 제공하는 분산 처리 시스템에서 필요한 기술
  • Load Balancing은 Client와 Server Pool 사이에 위치한다.
  • 한 대의 서버로 부하가 집중되지 않도록 트래픽을 관리해 각각의 서버가 최적의 퍼포먼스를 보일 수 있도록 한다.

서버스의 제공 초기 단계라면 적은 수의 클라이언트로 인해 서버 한 대로 요청에 응답하는 것이 가능하다. 하지만 사업의 규모가 확장되고, 클라이언트의 수가 늘어나게 되면 기존 서버만으로는 정상적인 서비스가 불가능하게 된다. 이처럼 증가한 트래픽에 대처할 수 있는 방법은 아래와 같다.

일반적인 웹 트래픽 증가에 대한 처리 방식은 크게 두 가지이다.

Horizontal Vs. Vertical Scaling: How Do They Compare? (n.d.). Cloudzero. https://www.cloudzero.com/blog/horizontal-vs-vertical-scaling

1. Scale-Up을 통해 CPU, 메모리, 디스크 등의 기능을 업그레이드 하는 방식

기존보다 높은 성능을 보유한 웹 서버로 시스템을 업그레이드함으로써 문제를 해결하는 방식

서버 자체의 성능을 확장하는 것을 의미한다.

  • 필요로 하는 성능이 높아질수록 비용이 기하급수적으로 늘어나는 단점
  • 하나의 서버에서 웹 서비스를 제공하여 서버 중지 및 장애로 인해 웹 서비스 가용성에 문제 발생 가능

2. Scale-Out을 통해 저렴한 노드 여러 개를 하나의 Cluster로 구성하는 방식

Cluster로 구성하는 경우 Cluster 내 하나의 노드에 문제가 발생하여도 웹 서비스가 중단되지 않으므로 가용성이 높은 웹 서비스를 구성할 수 있다.

기존 서버와 동일하거나 낮은 성능의 서버를 두 대 이상 증설하여 운영하는 것을 의미한다.

  • 로드 밸런싱은 Scale-Out 방식의 웹 서비스 구성에 주로 사용된다.
  • 네트워크 트래픽을 서비스의 Port 단위로 제어한다.
    • Port : 백엔드 서비스 노출을 시키려면 보통 주소를 가지고 있는데, IP 주소든 도메인 주소든.. 보통 서비스마다 포트라는 것이 할당됨 → 네이버닷컴의 포트 80번
    • 분산 시키는 단위 중 하나일 뿐
  • 트래픽을 분산 처리함으로써 높은 가용성부하 분산을 통한 고효율 웹 서비스를 제공한다.

로드 밸런싱의 방식(Algorithm)

Round Robin Method

Real 서버로의 Session 연결을 순차적으로 맺어주는 방식 연결되어 있는 Session 수에 상관 없이 순차적으로 연결시키는 방식으로 Session에 대한 보장을 제공하지 않는다.

서버에 들어온 요청을 순서대로 돌아가며 배정하는 방식이다. 클라이언트의 요청을 순서대로 분배하기 때문에 여러 대의 서버가 동일한 스펙을 갖고 있고, 서버와의 연결(세션)이 오래 지속되지 않는 경우에 활용하기 적합하다.

Weighted Round Robin Method

각각의 서버마다 가중치를 매기고 가중치가 높은 서버에 클라이언트 요청을 우선적으로 배분한다. 주로 서버의 트래픽 처리 능력이 상이한 경우 사용되는 부하 분산 방식이다.

예를 들어 A라는 서버가 5라는 가중치를 갖고 B라는 서버가 2라는 가중치를 갖는다면, 로드밸런서는 라운드로빈 방식으로 A서버에 5개 B서버에 2개의 요청을 전달한다.

Hash Method

Hash 알고리즘을 이용한 로드 밸런싱 방식 Client와 Server 간에 연결된 Session을 계속 유지해 주는 방식으로 Client가 특정 Server로 연결된 이후 동일 서버로만 연결되는 구조로 Session에 대한 보장을 제공한다.

클라이언트의 IP 주소를 특정 서버로 매핑하여 요청을 처리하는 방식이다. 사용자의 IP를 해싱해 로드를 분배하기 때문에 사용자가 항상 동일한 서버로 연결되는 것을 보장한다.

  • Hasing, 임의의 길이를 지닌 데이터를 고정된 길이의 데이터로 매핑하는 것 또는 그러한 함수

Least Connection Method

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

요청이 들어온 시점에 가장 적은 연결상태를 보이는 서버에 우선적으로 트래픽을 배분한다. 자주 세션이 길어지거나, 서버에 분배된 트래픽들이 일정하지 않은 경우에 적합한 방식이다.

Least Response Time Method

서버 간의 Resource와 Connection의 차이가 있는 환경에서 사용되는 방식으로 응답시간을 고려하여 빠른 응답시간을 제공하는 서버 Session을 맺어주는 방식이며, Session에 대한 보장을 제공하지 않는다.

서버의 현재 연결 상태와 응답시간을 모두 고려하여 트래픽을 배분한다. 가장 적은 연결 상태와 가장 짧은 응답시간을 보이는 서버에 우선적으로 로드를 배분하는 방식이다.

Amazon Elastic Load Balancing

Amazon Elastic Load Balancing은 단일 가용 영역 또는 여러 가용 영역에서 Amazon EC2 인스턴스 및 컨테이너, IP 주소 같은 동일한 서비스를 제공하기 위해 준비된 여러 대상으로 애플리케이션 및 네트워크 트래픽을 자동으로 분산시킨다.

Elastic Load Balancing은 서비스의 목적에 따라 세 가지의 로드 밸런서 중 하나의 서비스를 선택하여 사용할 수 있다. 이를 통해 애플리케이션의 내결함성 보장을 위해 필요한 고가용성, 부하분산, 자동 확대/축소, 강력한 보안 기능을 제공한다.

구분내용
서비스명Amazon Elastic Load Balancing
설명확장성, 성능, 보안성을 통한 애플리케이션 내결함성을 제공하는 로드 밸런서
주요 특징– 수신되는 트래픽을 여러 EC2 인스턴스에 자동 배포
– 애플리케이션의 내결함성을 확보하며, 네트워크 트래픽을 원활하게 대상으로 자동 분산 처리 기능 제공
– 고가용성, 자동 조정 및 강력한 보안 서비스 제공
– Application, Load Balancer, Network Load Balancer, Classic Load Balancer 등 세 가지 유형의 로드 밸런서를 지원하며, 애플리케이션의 필요에 따라 로드 밸런스
프리티어 (Free Tier)– 클래식 및 애플리케이션 로드 밸런서 간에 공유되는 탄력적 로드 밸런서 750시간을 프리티어(Free Tier)로 제공
– 클래식 로드 밸런서의 데이터 처리 15GB, 애플리케이션 로드 밸런서 15GB를 프리티어(Free Tier)로 제공
Amazon ELB(Elastic Load Balancing)

Amazon Elastic Load Balancing(ELB)에서 더 많은 내용을 확인할 수 있다.

ELB의 종류 및 유형

Amazon Elastic Load Balancing은 애플리케이션의 요구사항에 따라 Application Load Balancer, Network Load Balancer, Classic Load Balancer 중 하나의 유형을 선택하여 로드 밸런싱 서비스를 사용할 수 있다.

구분내용적합 서비스
Application Load Balancer– OSI 모델 7계층(Application)에서 작동
– HTTP, HTTPS와 같은 고급 로드 밸런싱 서비스에 적합
– 마이크로 서비스 및 컨테이너 기반 애플리케이션, 최신 애플리케이션 서비스에 최적화된 로드 밸런싱 제공
– SSL/TLS 암호화 및 프로토콜 사용하여 보안성 보장
HTTP/HTTPS 서비스
Network Load Balancer– OSI 모델 4계층(Transport Layer)에서 작동
– TCP 트래픽의 로드 밸런싱 서비스에 적합
– 짧은 지연 시간과 초당 수백만 개의 요청 처리가 가능
– 가용 영역당 1개의 정적 주소를 사용
– 트래픽의 변동이 심한 서비스에 최적화
TCP 트래픽 로드 밸런싱 및 짧은 지연 시간
Classic Load Balance– OSI 모델 4계층(Transport Layer), 3계층(Network Layer)에서 작동
– EC2-Classic 네트워크 내에 구축된 애플리케이션을 대상으로 제공
EC2-Classic 네트워크 구축된 애플리케이션
ELB 종류 및 유형

ELB를 생성하는 것이 로드 밸런싱 서비스를 인터넷에 연결할 것인지 아닌지에 따라 Internet-facing 여부를 선택하게 된다. 이 항목 선택 여부에 따라 ELB가 Internet EBL, External ELB로 구분된다.

항목External Elastic Load BalanceInternet Elastic Load Balance
인터넷 연결연결 가능연결 불가
사용 가능 IPPublic IP, Private IPPrivate IP
접속 가능 영역인터넷, VPC 내부VPC 내부
ELB 인터넷 연결 여부

Amazon Elastic Load Balancing 기능에서 더 많은 내용을 확인할 수 있다.

ELB의 주요 특징

1. 상태 확인 서비스(Health Check)

Elastic Load Balancing은 ELB와 연결된 인스턴스의 연결 상태를 수시로 체크하여 인스턴스의 OS나 애플리케이션의 문제로 인해 연결 장애나 서비스 가능 여부에 대한 Health Check를 지속적으로 수행한다.

이러한 Health Check가 실패하는 경우 해당 인스턴스로 트래픽을 전달하지 않는다.

이를 위해 HTTP와 HTTPS 상태 확인 빈도, 실패 임계치, 성공 시 응답 코드를 임의 설정 가능하며, 자세한 상태 확인과 실패 원인은 API를 통해 확인은 물론 AWS 콘솔에도 표시된다.

TCP 방식으로 Health Check를 수행하는 경우 서비스 Port의 오픈 여부 및 연결 가능 여부를 확인하며, HTTP나 HTTPS 방식은 특정 웹 페이지의 접속 시도에 따른 응답 코드(200)가 정상 반환 여부를 확인해서 Health Check 성공/실패 여부를 판단한다.

2. Sticky Session

Elastic Load Balancing을 통해 트래픽을 부하 분산하는 경우 기본적으로는 Round Robin 방식으로 트래픽을 분산한다.

이 경우 한 번 연결된 Session은 다음 연결 시 그대로 연결되지 않으며, 다음 번 연결 시 다른 인스턴스로 연결될 수 있어서 애플리케이션의 Session을 유지할 수 없게 된다.

특히 세션 유지가 필요한 백오피스 웹 사이트(그룹웨어 등)의 경우 연결이 끊어지거나 웹 사이트의 로그인 및 인증 정보를 유지할 수 없게 된다.

Stick Session을 사용하면 처음 연결된 Client에 별도의 HTTP 기반의 쿠키 값을 생성하여 다음번 연결 요청에 대해 처음 접속했던 서버로 계속 연결하도록 트래픽을 처리하게 된다.

3. 고가용성 구성

Elastic Load Balancing은 단일 가용 영역 또는 여러 가용 영역에 있는 여러 대상(EC2 인스턴스, 컨테이너 및 IP 주소)에 걸쳐 트래픽을 자동으로 분산할 수 있다.

특히 고가용성 구성을 위해 Route 53와 같은 AWS의 다른 서비스와의 연계를 통해 가용성 서비스를 제공할 수 있다.

4. SSL Termination 및 보안 기능

웹 사이트에 SSL 인증서를 적용하여 HTTPS와 같은 방식으로 암호화 통신을 하기 위해서는 개별 웹 서버에 별도의 공인인증서를 구매 후 적용해야 한다. 이 경우 개별 인증서를 각 인스턴스에 직접 적용은 물론 인증서 만료에 따른 갱신 등 관리가 필요하다.

또한 개별 EC2 인스턴스에서 SSL 암호화 및 복호화를 직접 처리하므로 인스턴스에 암호화 및 복호화 처리를 위한 추가 부하가 발생하게 된다.

ELB의 SSL Termination 기능을 사용하게 되면 개별 인스턴스에 SSL 인증서를 직접 설치할 필요가 없다. ELB에 공인인증서 또는 ACM(Amazon Certificate Manager)에서 무료로 발급받을 수 있는 사설 인증서를 등록함으로써, SSL 인증서를 이용한 HTTPS 활용 트래픽 암호화 및 복호화 서비스를 제공할 수 있다.

ACM을 사용하는 경우 추가적인 인증서 발급 비용은 무료이며 별도의 인증서 관리도 필요하지 않다. 그리고 인스턴스의 암호화 및 복호화에 따른 부하를 줄일 수 있다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다