로드 밸런싱이란, 네트워크 기술의 일종으로 네트워크 트래픽을 하나 이상의 서버나 장비로 분산하기 위한 기술.
일반적인 웹 트래픽 증가에 대한 처리 방식은 크게 두 가지
Round Robin
Real 서버로의 세션 연결을 순차적으로 맺어주는 방식
연결되어 있는 세션 수에 상관 없이 순차적으로 연결시키는 방식으로 세션에 대한 보장을 제공하지 않는다.
Hash
해쉬 알고리즘을 이용한 로드밸런싱 방식
클라이언트와 서버 간에 연결된 세션을 계속 유지해주는 방식으로 클라이언트가 특정 서버로 연결된 이후 동일 서버로만 연결되는 구조로 세션에 대한 보장을 제공한다.
Least Connection
세션 수를 고려하여 가장 작은 세션을 보유한 서버로 세션을 맺어주는 연결 방식
세션에 대한 보장을 제공하지 않는다.
Response Time
서버 간의 리소스와 커넥션의 차이가 있는 환경에서 사용되는 방식으로 응답시간을 고려하여 빠른 응답시간을 제공하는 서버로 세션을 맺어주는 방식
세션에 대한 보장을 제공하지 않는다.
단일 가용 영역 또는 여러 가용 영역에서 EC2 인스턴트 및 컨테이너, IP 주소 같은 동일한 서비스를 제공하기 위해 준비된 여러 대상으로 애플리케이션 및 네트워크 트래픽을 자동으로 분산시킴
Elastic Load Blancing은 세 가지의 로드 밸런서 중 하나의 서비스를 선택하여 사용할 수 있으며, 이를 통해 애플리케이션의 내결함성 보장을 위해 필요한 고가용성, 부하 분산, 자동 확대/축소, 강력한 보안 기능을 제공함
또 ELB를 생성하는 것이 로드 밸런싱 서비스를 인터넷에 연결할 것인지 아닌지에 따라 Internet-facing 여부를 선택하게 된다.
이 항목 선택 여부에 따라 ELB가 Internal ELB과 External ELB로 구분된다.
항목 | External ELB | Internal ELB |
---|---|---|
인터넷 연결 | 연결 가능 | 연결 불가 |
사용 가능 IP | Public IP, Private IP | Private IP |
접속 가능 영역 | 인터넷, VPC 내부 | VPC 내부 |
ELB와 연결된 인스턴스의 연결 상태를 수시로 체크하여 인스턴스의 OS나 애플리케이션의 문제로 인해 연결 장애나 서비스 가능 여부에 대한 상태 확인을 지속적으로 수행한다.
상태 확인에 실패하면 인스턴스로 트래픽을 전달하지 않는다.
이를 위해 HTTP와 HTTPS 상태 확인 빈도, 실패 임계치, 성공 시 응답 코드로 임의 설정이 가능하며, 자세한 상태 확인과 실패 원인은 API를 통해 확인은 AWS 콘솔에도 표시 된다.
ELB는 기본적으로 Round Robin 방식으로 트래픽을 분산한다.
이 경우 한 번 연결된 세션은 다음 연결 시 그대로 연결되지 않으며, 다음 번 연결 시 다른 인스턴스로 연결될 수 있어서 애플리케이션의 Session을 유지할 수 없게 된다.
특히 세션 유지가 필요한 백오피스 웹 사이트의 경우 연결이 끊어지거나 웹 사이트의 로그인 및 인증 정보를 유지할 수 없게 된다.
이러한 경우를 막기 위해 Sticky Session을 사용하면 연결된 클라이언트에 HTTP 기반의 쿠기 값을 생성하여 다음 번 연결 요청에 대해 처음 접속했던 서버로 계속 연결하도록 트래픽을 처리한다.
ELB는 여러 가용 영역에 있는 여러 대상(EC2 인스턴스, 컨테이너 및 IP 주소)에 걸쳐 트래픽을 자동으로 분산할 수 있다.
특히 고가용성 구송을 위해 Route 53과 같은 다른 서비스와 연계가 가능하다.
웹 사이트에 SSL 인증서를 적용하여 HTTPS와 같은 방식으로 암호화 통신을 하기 위해서는 개별 웹 서버에 별도의 공인인증서를 구매 후 적용하여야 한다.
이 경우 개별 인증서를 각 인스턴스에 직접 적용하고 관리를 해야한다.
이러한 과정은 EC2 인스턴스에 추가 부하를 발생시키므로 ESB의 SSL Termination 기능을 사용하게 되면 개별 인스턴스에 SSL 인증서를 직접 설치할 필요가 없다.
ELB에 공인인증서 또는 ACM(Amazon Certificate Manager)에서 무료로 발급할 수 있는 사설 인증서를 등록할 수 있다.