[AWS] 로드밸런서
ELB
수신되는 트래픽
을 하나 이상의 AZ에 있는 EC2 인스턴스, 컨테이너, IP주소 등에 자동으로분산
한다.Health check
를 통해 등록된 대상의 상태를 계속 모니터링하고, 트래픽을 정상인 대상에게만 라우팅한다.- Route53, CloudFront등을 사용한다면, 이들 서비스는 특정 주소에 대한 요청을 개별 서버가 아닌, 로드밸런서에 전달하는 역할을 한다.
- Auto Scaling과 연동할 수 있다.
- 지속적으로 IP주소가 바뀌기때문에 항상 도메인 기반으로 사용해야한다.
- 네트워크 로드밸런서는 elastic IP를 붙여서 주소기반으로 사용할 수 있다.
- ELB에는 3가지 종류가 존재하며,
- Application Load Balancer(7계층)
- Network Load Balancer(4계층)
- Gateway Load Balancer(3계층)
- Classic Load Balancer(지원안됨) 가 있으며, 각각 작동하는 네트워크 계층이 다르다.
- 내용이 너무 많으니, ALB에대해서만 일단 알아보자.
Application Load Balancer
개요
- OSI 7계층 중 어플리케이션 계층에서 작동한다.
- 요청 수신 후, 우선순위에 따라 Listener규칙을 평가해 적용할 규칙을 결정하고, Target Group에서 Target을 선택한다.
구성요소
Listener
프로토콜과 포트를 확인
해서 클라이언트의 요청을 확인한다.- 리스너의 Rule 정의에따라 등록된 target으로 어떻게 라우팅할지 결정된다.
- Rule이 충족되면 해당 작업이 수행된다.
Target Group
- 지정한 프로토콜, 포트번호를 사용해 EC2인스턴스와 같은 Target으로 요청을 라우팅한다.
- 여러 Target Group에 Target을 등록해둘 수 있다.
- Health Check는
Target Group에 등록된 모든 Target에서 수행
된다.
- 구성
- Target Type
- 인스턴스
- IP(Private)주소
- Lambda
- ALB
- 프로토콜
- HTTP
- HTTPS : ALB로 쉽게 HTTPS 설정가능
- gRPC
- 라우팅 알고리즘 등등
- Target Type
Auto scaling group과 연동
- ELB의 매력은 Target group에 대한 Health check를 통해, unhealthy한 인스턴스가 있다면, 해당 인스턴스를 재시작할 수 있다는 점이다.
- Auto Scaling Group에 로드밸런서의 타겟그룹을 설정하고, health check를 ELB로 설정하면된다.
댓글남기기