Infra/AWS EC2

Application Load Balancer

호나우지규 2021. 11. 9. 14:15

Application Load Balancer 구성요소

 

로드밸런서는 클라이언트에 대한 단일 접점 역할을 수행함.

로드 밸런서는 여러 가용 영역에서 EC2 인스턴스 같은 여러 대상에 수신 애플리케이션 트래픽을 분산함.

이렇게 하면 애플리케이션의 가용성이 향상됨.

로드 밸런서에 하나 이상의 리스너를 추가할 수 있음.

 

리스너는 구성한 프로토콜 및 포트를 사용하여 클라이언트의 연결 요청을 확인함.

리스너에 대해 규칙에 따라 로드 밸런서가 등록된 대사으로 요청을 라우팅하는 방법이 결정됨.

각 규칙은 우선 순위, 하나 이상의 직업, 하나 이상의 조건으로 구성됨.

규칙에 대한 조건이 충족되면 작업이 수행됨.

각 리스너에 대한 기본 규칙을 정의해야 하며, 필요에 따라 추가 규칙을 정의할 수 있음.

 

각 target group은 지정한 프로토콜과 포트 번호를 사용하여 EC2 인스턴스 같은 하나 이상의 등록된 대상으로 요청을 라우팅함.

여러 target group에 대상을 등록할 수 있음.

target group 기준으로 health check을 구성할 수 있음.

로드 밸런서의 리스너 규칙에서 지정한 target group에 등록된 모든 대상에서 상태 검사가 수행됨.

 

위 다이어그램은 기본 구성 요소를 보여줌.

각 리스너에는 기본 규칙이 포함되어 있고 하나의 리스너에는 요청을 다른 target group으로 라우팅하는 다른 규칙이 포함되어 있음.

하나의 대상은 두개의 target group에 등록됨.

 

 

Application Load Balancer 개요

 

Application Load Balancer는 개방형 시스템 간 상호 연결 (OSI) 모델의 일곱 번째 계층인 애플리케이션 계층에서 작동함.

로드 밸런서는 요청을 받으면 우선 순위에 따라 리스너 규칙을 평가하여 적용할 규칙을 결정한 다음, 규칙 작업의 target group에서 대상을 선택함.

애플리케이션 트래픽의 콘턴츠를 기반으로 다른 target group에 요청을 라우팅하도록 리스너 규칙을 구성할 수 있음.

대상이 여러 개의 target group에 등록이 된 경웨도 각 target group에 대해 독립적으로 라우팅이 수행됨.

target group 레벨에서 사용되는 라우팅 알고리즘을 구성할 수 있음.

기본 라우팅 알고리즘은 라운드 로빈임.

그 대신 최소 미해결 요청 라우팅 알고리즘을 지정할 수 있음.

 

애플리케이션에 대한 요청의 전체적인 흐름을 방해하지 않고 필요에 따라 로드 밸런서에서 대상ㅇ을 추가 및 제거할 수 있음.

애플리케이션에 대한 트래픽이 시간에 따라 변화하므로 Elastic Load Balancing은 로드 밸런서를 확장함.

Elasitc Load Balancing은 대다수의 워크로드에 맞게 자동으로 조정할 수 있음.

 

로드 밸런서가 정상적인 대상에만 요청을 보낼 수 있도록 등록된 대상의 상태를 모니터링하는 데 사용되는 health check을 구성할 수 있음.

 

 

Classic Load Balancer 대신 Application Load Balancer 사용할 때 장점

 

  • 경로 조건에 대한 지원.
    요청의 URL을 기반으로 요청을 전달하는 리스너에 대한 규칙을 구성할 수 있음.
    이를 통해 애플리케이션을 규모가 더욱 작은 서비스로 구성하고, URL 콘텐츠를 기반으로 요청을 올바른 서비스로 라우팅할 수 있음.
  • 호스트 조건에 대한 지원. HTTP 헤더의 호스트 필드를 기반으로 요청을 전달하는 리스너에 대한 규칙을 구성할 수 있음.
    따라서 단일 로드 밸런서를 사용하여 여러 개의 도메인에 요청을 라우팅할 수 있음.
  • HTTP헤더 조건 및 메서드, 쿼리 파라미터, 소스 IP 주소 등 요청의 필드를 기반으로 하는 라우팅을 지원함.
  • 단일 EC2 인스턴스의 여러 애플리케이션으로 요청을 라우팅하는 것을 지원함.
    인스턴스 또는 IP 주소를 각각 다른 포트에 있는 여러 대상 그룹에 등록할 수 있음.
  • 한 URL에서 다른 URL로 요청을 리다이렉션하는 작업을 지원함.
  • 사용자 지정 HTTP 응답 회신을 지원함.
  • 로드 밸런서으 VPC 외부 대상을 포함하여 IP 주소로 대상을 등록하는 것을 지원함.
  • Lambda 함수를 대상으로 등록하는 작업을 지원함.
  • 요청을 라우팅하기 전에 기업 또는 소셜 자격 증명을 통해 애플리케이션의 사용자를 인증할 수 있도록 로드 밸런서를 지원함.
  • 컨테이너화된 애플리케이션을 지원함.
    Amazon Elastic Container Service (Amazon ECS)는 task를 예약할 때 사용되지 않는 포트를 선택하고 이 포트를 사용하여 대상 그룹에 task를 등록할 수 있음.
    이를 통해 클러스터를 효율적으로 사용할 수 있음.
  • health check은 대상 그룹 수준에서 정의되고 많은 CloudWatch 지표가 대상 그룹 수준에서 보고되므로 각 서비스의 상태를 독립적으로 모니터링할 수 있음.
    Auto Scaling Group에 target group을 연결하면 필요에 따라 동적으로 각 서비스를 확장할 수 있음.
  • 액세스 로그는 추가 정보를 포함하여 압축된 형식으로 저장됨.
  • 로드 밸런서 성능을 개선함.

출처 : https://docs.aws.amazon.com/ko_kr/elasticloadbalancing/latest/application/introduction.html