AWS에서 제공하는 로드 밸런싱 서비스로, 다수의 EC2 인스턴스를 사용하여 트래픽을 분산시킨다.
로드밸런서의 특징
요청 분산 : 각각의 EC2와 연동하여 트래픽 분산이 가능하다.
단일 액세스 포인트 공개 : Route53과 연동되어 하나의 액세스포인트로 연동이 가능하다.
인스턴스의 헬스체크 가능 : 인스턴스들이 동작하고있는지 검증이 가능하다.
HTTPS 제공 : ACM과 연동하여 HTTPS 인증을통해 보안강화가 가능하다.
고가용성 제공 : AZ을 알아서 분리해 사용이 가능하다.
공개트래픽과 내부트래픽 분리 : 악성유저에게 내부정보를 공개하지않고 서비스가 가능하다.
ELB 종류
Application Load Balancer: OSI 모델 7계층에서 동작하며, HTTP/HTTPS 트래픽을 처리한다. 또한, 컨테이너화된 애플리케이션과 연동하여 사용할 수 있다.
Network Load Balancer: OSI 모델 4계층에서 동작하며, TCP/UDP 트래픽을 처리한다. 높은 처리량을 필요로 하는 애플리케이션에 적합하다.
Classic Load Balancer: OSI 모델 4~7계층에서 동작하며, HTTP/HTTPS, TCP/UDP 트래픽을 처리한다. 가장 오래된 형태의 로드 밸런서이며, 대부분의 경우 Application Load Balancer나 Network Load Balancer를 사용하는 것이 좋다.
Scalability vs Availability
Scalability
시스템이 커지거나 작아질 수 있는 능력을 말한다.
사용자 수, 데이터 양, 처리량 등이 증가할 때 시스템의 성능과 처리 능력을 유지하거나 향상시키는 것을 의미한다.
확장성 있는 시스템 디자인 및 구현이 필요하다.
Availability
시스템이 정상적으로 작동하고 사용가능상태인지를 유지하는 능력을 의미한다.
시스템의 안정성을 높이고 장애대응능력을 강화하는것이 필요하다.
Load Balancer 생성 및 연결 하기
위에서 소개한 로드밸런서들의 종류를 선택할 수 있다.
로드밸런서의 설정은 다음과 같으며, 보안그룹과 EC2 인스턴스들의 집합인 그룹을 설정하여 로드밸런서에게 인스턴스들을 위임이 가능하다.
DNS 주소를 통하여 각각의 인스턴스들에게 접근하는것을 로드밸런서가 제어하고 있는것을 확인 가능하다.
하지만 지금 상황에서는 로드밸런서 DNS를 사용하지않고 각각의 인스턴스의 퍼블릭 IP를통해서도 접근이 가능하다. 이를 수정해보자.
보안그룹을 로드밸런서로만 인바운드가 가능하도록 지정하고, 생성된 보안그룹을 각각의 인스턴스에게 지정해주면 된다.
SSL 적용하기
현재 로드밸런서는 HTTP 통신으로만 인바운드가가능하기에 보안적측면에서 레벨이 너무 낮다 이를 위해 인바운드에 HTTPS 를 적용하고 로드밸런서와 인스턴스들은 이미 외부의 진입을 막고 있기에 HTTP 를 적용해 보겠다.
로드밸런서의 리너스추가 버튼을 누른다.
리스너의 HTTPS 를 등록해주고, ACM(AWS 인증서발급) 혹은 외부의 인증서를 발급받아 인증서를 등록해주면 SSL적용이 완료된다.