내용으로 건너뛰기

Application Load Balancer에서 경로 기반 라우팅을 설정하려면 어떻게 해야 합니까?

5분 분량
0

Application Load Balancer 뒤에서 여러 마이크로서비스를 실행할 계획입니다. URL 경로를 기반으로 특정 대상 그룹에 요청을 전달하려고 합니다.

간략한 설명

Application Load Balancer를 사용하면 URL을 기반으로 요청을 대상 그룹에 전달하는 규칙이 있는 리스너를 생성할 수 있습니다. 경로 패턴 규칙은 URL의 경로에만 적용되며 URL의 쿼리 파라미터에는 적용되지 않습니다. 경로 패턴에 대한 자세한 내용은 경로 조건을 참조하십시오.

참고: Classic Load Balancer, Network Load Balancer 또는 Gateway Load Balancer에서는 이 기능이 지원되지 않습니다.

Application Load Balancer에서 경로 기반 라우팅을 설정하려면 다음 단계를 완료하십시오.

  1. 대상 그룹을 생성합니다.
  2. 리스너 규칙을 구성합니다.

전제 조건:

해결 방법

대상 그룹 생성

인스턴스를 생성한 후 대상 그룹에 등록합니다. Application Load Balancer는 구성된 리스너 규칙에 따라 지정된 포트 및 프로토콜에 기반하여 등록된 대상에 요청을 보냅니다. 하지만 대상을 개별적으로 등록할 경우 포트 정보를 재정의할 수 있습니다. 자세한 내용은 Application Load Balancer의 대상 그룹 생성을 참조하십시오.

예를 들어 서비스 A와 서비스 B라는 두 개의 서비스가 있다고 가정해 보겠습니다. 이러한 서비스를 실행하는 애플리케이션은 포트 80을 사용합니다. 서비스 A는 경로 /svcA에서 애플리케이션을 실행하고 서비스 B는 경로 /svcB에서 애플리케이션을 실행합니다.

  • 프로토콜HTTP로 하고 포트80으로 하여 각각에 애플리케이션이 배포된 두 개의 대상 그룹을 생성합니다.
  • 서비스 A를 실행하는 Amazon EC2 인스턴스를 target-group-A에 등록합니다. 이 대상 그룹의 경우 HealthCheckProtocolHTTP로 설정하고 HealthCheckPath/svcA로 설정할 수 있습니다.
  • 서비스 B를 실행하는 Amazon EC2 인스턴스를 target-group-B에 등록합니다. 이 대상 그룹의 경우 HealthCheckProtocolHTTP로 설정하고 HealthCheckPath/svcB로 설정할 수 있습니다.

언제든지 대상 그룹에 대상을 추가하거나 제거할 수 있습니다. 자세한 내용은 Application Load Balancer 대상 그룹에 대상 등록을 참조하십시오.

대상 그룹을 지정한 후 로드 밸런서는 활성화된 가용 영역에 있는 모든 대상의 상태를 지속적으로 모니터링합니다. 로드 밸런서는 등록된 대상 중 정상인 대상으로 요청을 라우팅합니다. 자세한 내용은 Application Load Balancer 대상 그룹의 상태 확인을 참조하십시오.

리스너 규칙 구성

Application Load Balancer용 리스너를 생성할 때 기본 규칙 외에 하나 이상의 규칙을 정의할 수 있습니다. 규칙은 우선 순위, 작업 및 하나 이상의 조건으로 구성됩니다. 기본 규칙의 조건은 정의할 수 없습니다. 정의된 규칙의 조건이 하나도 충족되지 않으면 기본 규칙에 대한 작업이 수행됩니다.

Application Load Balancer에서 경로 기반 라우팅을 구현하려면 리스너 규칙을 구성해야 합니다. 요청을 라우팅하려는 위치를 기반으로 각 경로 패턴에 대해 하나의 규칙을 구성하십시오.

리스너 규칙 예

다음 예에서는 서비스 A와 B의 리스너 규칙을 보여줍니다.

리스너 규칙 1: 요청 URL 경로에 /svcA 문자열이 포함된 경우 요청을 target-group-A로 전달합니다. target-group-A에는 지정된 경로에서 애플리케이션을 실행하는 서비스 A가 포함되어 있기 때문에 이 작업을 수행합니다.

리스너 규칙 2: 요청 URL 경로에 /svcB 문자열이 포함된 경우 해당 요청을 target-group-B로 전달합니다. target-group-B에는 지정된 경로에서 애플리케이션을 실행하는 서비스 B가 포함되어 있기 때문에 이 작업을 수행합니다.

조건 및 작업으로 리스너 규칙을 업데이트하려면 다음 단계를 완료하십시오.

  1. Amazon EC2 콘솔을 엽니다.
  2. 탐색 창의 로드 밸런싱 아래에서 로드 밸런서를 선택합니다.
  3. 로드 밸런서를 선택한 다음, 리스너 및 규칙을 선택합니다.
  4. 리스너를 업데이트하려면 리스너 및 규칙 탭을 선택한 다음, 프로토콜:포트 열의 텍스트를 선택하여 리스너의 세부 정보 페이지를 엽니다.
  5. 규칙 탭의 리스너 규칙 섹션에서 편집할 규칙을 선택합니다.
  6. 작업을 선택한 다음, 규칙 편집을 선택합니다.
  7. 규칙 추가를 선택합니다.
  8. 필요에 따라 이름과 태그를 수정합니다. 태그를 추가하려면 추가적인 태그 추가를 선택합니다.
  9. 다음을 선택합니다.
  10. /svcA에 대한 경로 기반 규칙을 추가하려면 조건 추가를 선택하고 경로를 선택한 다음, 경로 패턴 /svcA를 입력합니다. 확인을 선택합니다.
  11. 다음을 선택합니다.
  12. 전달 작업을 추가하려면 라우팅 작업을 대상 그룹으로 전달을 선택한 다음, 메뉴에서 대상 그룹 target-group-A를 선택합니다.
  13. 다음을 선택합니다.
  14. 적절한 우선 순위를 선택합니다.
  15. 규칙의 세부 정보 및 업데이트된 구성을 검토합니다. 선택 사항에 문제가 없으면 변경 내용 저장을 선택합니다.

다음과 같이 변경하여 경로 /svcB에 대해 이전 단계를 반복하십시오.

  • 10단계에서 경로 패턴 /svcB를 입력합니다.
  • 12단계에서 대상 그룹 target-group-B f를 선택합니다.

자세한 내용은 Application Load Balancer의 리스너 규칙을 참조하십시오.

참고: 경로 기반 라우팅 규칙은 정확히 일치하는 항목을 찾습니다. 애플리케이션이 요청을 이러한 경로에서 더 멀리 라우팅해야 하는 경우 경로 기반 라우팅 규칙의 조건에 와일드카드를 포함시키십시오. 요청을 라우팅할 때 이러한 경로에 있는 모든 문서를 고려하려면 /svcA* 또는 /svcB*와 유사한 경로 패턴을 사용하십시오.

경로 기반 라우팅 테스트

경로 기반 라우팅을 테스트하려면 웹 브라우저에서 Application Load Balancer의 DNS 이름을 복사한 다음, URL 경로 /svcA 또는 /svcB를 추가합니다.

예를 들어 Application Load Balancer에 DNS 이름으로 alb-demo-1234567890.us-west-2.elb.amazonaws.com이 있다고 가정해 보겠습니다.

  • http://alb-demo-1234567890.us-west-2.elb.amazonaws.com/svcA는 서비스 A를 반환해야 합니다.
  • http://alb-demo-1234567890.us-west-2.elb.amazonaws.com/svcB는 서비스 B를 반환해야 합니다.

Application Load Balancer 리스너가 요청을 수신하면 리스너는 경로 조건에 따라 해당 요청을 적절한 대상 그룹에 전달합니다.

경로 기반 라우팅을 사용하는 경우 단일 Application Load Balancer 뒤에 여러 마이크로서비스를 호스팅할 수 있습니다. 리스너 규칙 및 대상 그룹을 기반으로 한 각 서비스로 트래픽을 라우팅할 수 있습니다. 또한 host 헤더, user-agent 헤더 또는 쿼리 파라미터 값과 같은 조건에 따라 트래픽을 라우팅할 수도 있습니다. 자세한 내용은 AWS Application Load Balancer의 고급 요청 라우팅을 참조하십시오.

관련 정보

Application Load Balancer의 상태 확인 실패 문제를 해결하려면 어떻게 해야 합니까?

Application Load Balancer 문제 해결