Elastic Load Balancing (ELB)란?
Elastic Load Balancing(ELB)은 둘 이상의 가용 영역에서 EC2 인스턴스, 컨테이너, IP 주소 등 여러 대상에 걸쳐 수신되는 트래픽을 자동으로 분산시켜주는 역할을 합니다.
등록된 대상의 상태를 모니터링하면서 상태가 양호한 대상으로만 트래픽을 라우팅합니다. Elastic Load Balancing은 수신 트래픽의 변화에 따라 로드 밸런서 용량을 자동으로 조정합니다.
ELB는 다음 그림과 같이 가용 영역이 다른 여러 서브넷에 여러대의 인스턴스가 있는 상태에서, 각 인스턴스의 상태를 확인하고 이에 따라 트래픽을 분산시켜주는 역할을 합니다. 만약 ELB가 없었다면, 특정 서버에만 트래픽이 몰려 인스턴스가 죽어버리는 상황이 발생할 수 있겠죠. 결국, 로드밸런서는 서버의 부하를 분산시켜주는 업무를 수행한다고 볼 수 있습니다.
이와 같은 로드 밸런싱의 특징은 다음과 같습니다.
- 고가용성
- 트래픽을 다수의 대상으로 분산하여 고가용성을 유지
- 상태확인
- 로드 밸런싱이 적용된 인스턴스의 상태를 주기적으로 확인
- 보안 기능
- 로드 밸런서에도 보안 그룹을 지정할 수 있음 (80포트 또는 443포트)
- 4계층/7계층 로드밸런싱
- HTTP/HTTPS의 7계층의 애플리케이션 로드 밸런싱과 TCP/UDP의 4계층 로드 밸런싱을 사용할 수 있음
- 운영 모니터링
- Cloud Watch에 모니터링, S3에 로그를 저장 등 상황에 따라 ELB 애플리케이션의 성능을 실시간으로 모니터링 할 수 있음
ELB 동작 방식
AWS가 제공하는 ELB 동작방식에 대한 설명은 다음과 같습니다.
1. 클라이언트가 애플리케이션에 요청을 보냅니다.
2. 로드밸런서의 리스너가 설정했던 프로토콜 및 포트에 맞는 요청을 수신합니다.
3. 수신 수신기는 사용자가 지정한 규칙과 비교하여 수신 요청이 유효한지 확인하고, 유효한 경우 해당 요청을 적절한 대상 그룹으로 라우팅합니다. HTTPS 수신기를 사용하여 TLS 암호화 및 암호 해독 작업을 로드 밸런서로 오프로드할 수 있습니다.
4. 대상 그룹에 있는 하나 이상의 정상적인 서버는 로드 밸런싱 알고리즘 및 수신기에서 지정한 라우팅 규칙에 따라 트래픽을 수신합니다.
📌 로드 밸런서 구축
📚 Subnet & EC2 생성
로드밸런싱 목적이 부하를 분산시켜주기위한 목적이기 때문에 특정 리전(가용 영역)에 문제가 생겼을 때 다른 리전으로 트래픽을 분산시켜줄 수 있어야 합니다. 따라서, 로드밸런서를 적용하기 위해선 아래처럼 가용 영역이 다른 최소 2개 이상의 Subnet이 필요합니다.
가용영역이 다른 두 개의 서브넷에 대한 EC2 인스턴스를 각각 생성합니다.
서브넷 생성이나 EC2 생성에 대한 방법은 이전 포스팅을 참고해주세요
2023.02.14 - [AWS] - AWS EC2 인스턴스 생성 및 설정
AWS EC2 인스턴스 생성 및 설정
EC2란? Amazon Elastic Compute Cloud(Amazon EC2)는 Amazon Web Services(AWS) 클라우드에서 확장 가능 컴퓨팅 용량을 제공합니다. Amazon EC2를 사용하면 하드웨어에 선투자할 필요가 없어 더 빠르게 애플리케이션을
rachel0115.tistory.com
2023.02.26 - [AWS] - [AWS] VPC 가상 네트워크 구성하기 #1 (Public, IGW, 라우팅 테이블)
[AWS] VPC 가상 네트워크 구성하기 #1 (Public, IGW, 라우팅 테이블)
Amazon VPC란? Amazon Virtual Private Cloud(Amazon VPC)를 이용하면 사용자가 정의한 가상 네트워크로 AWS 리소스를 시작할 수 있습니다. 이 가상 네트워크는 AWS의 확장 가능한 인프라를 사용한다는 이점과 함
rachel0115.tistory.com
🔱 로드 밸런서 생성
1. 로드 밸런서 생성
AWS 콘솔 창 - ELB 검색 - 로드밸런서 선택 - 로드 밸런서 생성 버튼 클릭
2. 로드 밸런서 타입 선택
각 옵션은 로드밸런서를 어디에 둘 것인지 선택합니다.
- 선택에 따라, Application / Network / Gateway 단 에서 로드밸런싱 역할을 수행
- 보통 Application 단에서 로드 밸런서를 구축합니다. (ALB)
3. Basic Config
로드 밸런서 이름 지정 및 Scheme와 IP 주소 타입을 결정합니다. 외부 요청에 대해 각 서브넷으로 로드 밸런싱을 수행할 것이기 때문에 Internet-facing을 선택합니다.
- Scheme 탭
- Internet-facing : 인터넷 경계
- Internal : 내부
4. Network mapping
로드 밸런서를 둘 VPC를 선택하고 서로 다른 리전에 대한 Subnet 들을 선택합니다. (선택한 서브넷으로 로드 밸런싱 수행)
5. Security Groups
로드 밸런서에도 보안 그룹을 적용할 수 있습니다. TCP 80 포트로 모니터링할 것이기 때문에 보안 그룹을 생성하고 인바운드 규칙에 해당 조건을 추가합니다.
6. Listeners and routing
리스너는 사용자가 구성한 포트 및 프로토콜을 사용하여 연결 요청을 확인하는 프로세스입니다. 리스너에 대해 정의하는 규칙에 따라 로드 밸런서가 트래픽을 대상 그룹(target group)으로 라우팅하는 방법이 결정됩니다.
우선 리스너 프로토콜을 80으로 설정하고 대상 그룹을 생성합니다.
7. 대상 그룹 생성
EC2에 대해 로드밸런싱을 적용할 것이기 때문에 Instance 를 선택합니다.
대상 그룹 이름 및 포트, VPC를 지정합니다.
로드밸런서는 상태 검사(Health checks)를 통해 인스턴스의 상태를 체크하고 로드밸런싱을 수행합니다. Health check path에 지정된 경로로 요청을 날려 인스턴스의 상태를 검사합니다.
Next 버튼을 눌러 다음 단계로 넘어갑니다.
target을 등록하는 페이지입니다.
선택한 VPC내 Instance들을 볼 수 있는데, 로드밸런싱을 적용할 인스턴스를 선택한 후 포트를 80으로 맞추고 Include as pending below 버튼을 클릭합니다.
그러면 다음과 같이 인스턴스가 추가됩니다. 오른쪽 아래 버튼을 클릭하여 대상 그룹을 생성합니다.
리스너에 생성한 대상 그룹을 선택합니다.
8. 로드 밸런서 생성 마무리
마무리 단계로 이전 설정했던 내용들을 확인하고 Create load balancer 버튼을 클릭하여 로드 밸런서를 생성합니다.
잠시 기다리면 Status가 Active로 바뀌며 활성화 됩니다.
로드밸런서의 DNS name을 복사하여 로드 밸런서를 통해 인스턴스에 접속할 수 있습니다.