1. ELB의 필요 이유
VPC 내 단일 서버를 통하여 서비스를 사용자가 접급하는 환경이 있다고 생각해보자. 만약에 단일 서버라면 그 서버에 문제가 일어날 경우에는 정상적인 서비스를 사용자에게 제공할 수 없다.
아래의 이미지를 보면 하나의 서버만을 구축하였기에, 해당 서버가 장애가 발생하면 서비스를 이용할 수 없는 치명적인 문제가 발생한다.
위의 같이 하나의 서버에서 장애가 발생하더라도 지속적인 서비스를 제공하기 위해서는 서버를 다중화 구성하여 서비스의 연속성을 보장하는 고가용성 구성이 필요해진다.
위의 그림을 보면 다수의 서버를 구성하여 서비스를 제공하게 되는 데, 인스턴스 AAA가 장애가 발생한다고 하더라도, BBB나 CCC가 존재하기에 서비스를 받을 수 있다. 하지만 서비스의 타깃을 사용자 입장에서 일일이 지정을 해주어야한다는 문제가 존재하는 데, 이 문제를 해결하기 위해서는 부하 분산 기술인 Load Balancer를 사용하면 되는 데, Load Balancer은 서버의 상태를 파악하고 데이터를 분산하여 전달하는 접점 역할을 한다.
2. ELB, Eastic Load Balancing
ELB는 AWS에서 제공하는 로드밸런싱 기술이다. 로드 밸런서는 위의 나온 것과 같이 EC2 인스턴스의 상태를 지속적으로 확인하고 데이터를 분산하여 전달하는 단일 접점 역할을 수행한다.
ELB는 정상적인 다수의 서버로 데이터를 분산하여 전달하는 역할을 하기에, 사용자는 일일이 서버의 타깃을 지정하는 것이 아닌 로드 밸런서를 타깃으로 하면 로드 밸런서가 알아서 정상적인 서버로 부하 분산 처리한다.
로드 밸런서는 자신이 서비스 하는 대상을 정의하는 Listener와 부하 분산 대상을 정의 하는 Target Group으로 이루어져이다.
Listener
리스너는 프로토콜 및 포트를 사용하여 연결 요처어을 확인하는 프로세스이며, 로드 밸런서에서 서비스하고자 하는 프로토콜과 포트를 지정하는 규칙을 생성한다.
Target Group
하나 이상의 대상을 라우팅하여 부하 부난을 하는 데 사용한다. Target Group에 속한 대상에 대해 주기적으로 확인하는 프로세스를 통하여 상태를 확인하는 Health Check를 수행하고, 정상적인 상태의 대상에게만 데이터를 제공한다.
3. ELB의 종류
ELB는 HTTP나 HTTPS와 같이 Web Application에 대한 분산 처리를 제공하는 Application Load Balancer, TCP, UDP 프로토콜에 대한 Port 정보를 정의하여 네트워크 기반의 분산 처리를 제공하는 Network Load Balancer, VPC의 예전 버전인 EC2-Classic에 대해서도 분산 처리를 제공하는 이전 세대의 로드 밸런서인 Classic Load Balancer으로 3가지 유형이 있다.
ALB, Application Load Balancer
ALB는 HTTP와 HTTPS에 특화된 Application Level의 Load Balancer다. 다른 로드 밸런서에 비하여 속도가 느릴 수도 있지만, HTTP(S)에 대하여 세부적이고 다양한 정책으로 라우팅을 할 수 있다. URL 경로 기반 라우팅, 호스트 기반 라우팅, HTTP 헤더 기반 라우팅 등과 같이 다양한 규칙을 생성하여, Forward, Re-Direction, 지정 HTTP 응답 등의 작업을 수행할 수 있으며, Lambda 함수를 호출하여 요청을 처리할 수도 있다.
NLB, Network Load Balancer
NLB는 TCP, UDP, TLS 프로토콜에 대하여 로드 밸런싱을 수행할 수 있는 OSI 4계층 Level의 Load Balancer다. 빠른 처리 속도가 특징이며, 고정 IP나 탄력적 IP를 보유할 수 있고, VPC Endpoint 서비스로 연결하여 Private Link 구성이 가능하다.
ELB는 퍼블릭 주소를 가지고 있기에, 인터넷을 통해 요청을 로드 밸런서에 등록된 EC2 Instance로 라우팅 하거나, 프라이빗 주소만 가지고 있기에 로드 밸런서를 위한 VPC 내부에 Access 하여 등록된 EC2 Instance 등의 컴퓨터 자원으로 라우팅하는 2가지의 통신 유형이 있다.
ELB는 인입된는 트래픽을 다수의 대상으로 분산하여 고가용성을 유지하고, 대상 그룹에 대한 keepalive를 통해 주기적으로 상태를 확인하고 보안 그룹을 적용하여 보안 옵션을 적용할 수 있으며, 4계층과 7계층을 로드 밸런싱이 가능하고 ELB 성능을 실시간 모니터링도 가능하다.
'DevOps > AWS' 카테고리의 다른 글
[AWS] DNS와 Route53 (0) | 2023.03.11 |
---|---|
[AWS] VPC 엔드포인트에 대해 알아보자 (0) | 2023.01.31 |
[AWS] VPC의 Resource - subnet, gateway, acl, security group (0) | 2023.01.29 |
[AWS] VPC에 대해 알아보자 - OSI 7 Layer, IP, Subnet Mask (0) | 2023.01.29 |
[AWS] Cloud와 AWS란 무엇인가? (0) | 2023.01.03 |