AWS - 로드 밸런싱

Jaca·2021년 12월 28일
0

로드 밸런싱

로드 밸런싱이란, 네트워크 기술의 일종으로 네트워크 트래픽을 하나 이상의 서버나 장비로 분산하기 위한 기술.

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

  1. Scale-Up을 통해 CPU, 메모리, 디스크 등의 기능을 업그레이드
    기존보다 높은 성능을 보유한 웹 서버로 시스템을 업그레이드함으로써 문제를 해결함.
    하지만 가격이 부담이며, 하나의 서버에 웹 서비스를 제공하여 가용성에 문제가 생일 수도 있다.
  2. Scale-Out을 통해 저렴한 노드 여러 개를 하나의 클러스토로 구성
    클러스터로 구성하는 경우 클러스터 하나의 노드에 문제가 발생하여도 웹 서비스가 중단되지 않아 가용성이 높다.
    로드 밸런싱은 Scale-Out 방식의 웹 서비스에 주로 사용되며, 네트워크 트래픽을 서비스의 Port 단위로 제어하고, 트래픽을 분산 처리함으로써 높은 가용서오가 부하 분산을 통한 고효율 웹 서비스를 제고함.

로드 밸런싱 방식

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

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

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

  • Response Time
    서버 간의 리소스와 커넥션의 차이가 있는 환경에서 사용되는 방식으로 응답시간을 고려하여 빠른 응답시간을 제공하는 서버로 세션을 맺어주는 방식
    세션에 대한 보장을 제공하지 않는다.

Amazon Elastic Load Blancing

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

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

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

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

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

ELB 주요 특징

상태 확인(Health Check)

ELB와 연결된 인스턴스의 연결 상태를 수시로 체크하여 인스턴스의 OS나 애플리케이션의 문제로 인해 연결 장애나 서비스 가능 여부에 대한 상태 확인을 지속적으로 수행한다.
상태 확인에 실패하면 인스턴스로 트래픽을 전달하지 않는다.

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

세션 연결 고정(Sticky Session)

ELB는 기본적으로 Round Robin 방식으로 트래픽을 분산한다.
이 경우 한 번 연결된 세션은 다음 연결 시 그대로 연결되지 않으며, 다음 번 연결 시 다른 인스턴스로 연결될 수 있어서 애플리케이션의 Session을 유지할 수 없게 된다.
특히 세션 유지가 필요한 백오피스 웹 사이트의 경우 연결이 끊어지거나 웹 사이트의 로그인 및 인증 정보를 유지할 수 없게 된다.

이러한 경우를 막기 위해 Sticky Session을 사용하면 연결된 클라이언트에 HTTP 기반의 쿠기 값을 생성하여 다음 번 연결 요청에 대해 처음 접속했던 서버로 계속 연결하도록 트래픽을 처리한다.

고가용성 구성

ELB는 여러 가용 영역에 있는 여러 대상(EC2 인스턴스, 컨테이너 및 IP 주소)에 걸쳐 트래픽을 자동으로 분산할 수 있다.
특히 고가용성 구송을 위해 Route 53과 같은 다른 서비스와 연계가 가능하다.

SSL Termination 및 보안 기능

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

이러한 과정은 EC2 인스턴스에 추가 부하를 발생시키므로 ESB의 SSL Termination 기능을 사용하게 되면 개별 인스턴스에 SSL 인증서를 직접 설치할 필요가 없다.
ELB에 공인인증서 또는 ACM(Amazon Certificate Manager)에서 무료로 발급할 수 있는 사설 인증서를 등록할 수 있다.

profile
I am me

0개의 댓글