Application Load Balancer 리스너

Hoju·2022년 8월 25일
0

Ap

목록 보기
1/3

https://aws.amazon.com/ko/blogs/korea/new-advanced-request-routing-for-aws-application-load-balancers/

이 부분에서는 리스너에 특징인 프로토콜 및 포트를 사용하여 연결 요청을 수신합니다라는 특징이다. 매우 중요한 작업 중 하나이다. 리스너 및 리스너 규칙을 추가, 제거 또는 업데이트를 할 수 있습니다.

리스너 추가

만약 예를 들어, 현재 80에 대한 리스너가 지정되어있다고 가정하자. 그러나 우리는 443에 대한 리스너를 포함 시키고 싶다? 그러면 리스너 추가를 선택해 추가를 할 수 있습니다.

  • 리스너 추가

    • 기본 작업: 리스너의 트래픽에 적용되는 기본 규칙을 지정합니다. 리스너의 규칙에 지정된 다른 조건이 충족되지 않으면 기본 작업이 수행됩니다. 기본 규칙은 조건을 가질 수 없습니다. 작업에는 4가지가 있습니다. 작업에 따라 규칙을 생성할 수 있습니다.
    • 전달: 전달할 대상 그룹을 지정합니다. 가중치 기반입니다.
    • 리디렉션: 한 URL에서 다른 URL로 클라이언트 요청을 리디렉션하는 데 사용됩니다. 리디렉션 루프를 방지하려면 프로토콜, 호스트 이름, 포트 또는 경로 중 하나 이상을 수정해야 합니다. 수정하지 않는 구성 요소는 원래 값을 유지합니다.
    • 고정 응답 반환: 클라이언트 요청을 삭제하고 사용자 지정 HTTP 응답을 반환할 수 있습니다. 2XX, 4XX 또는 5XX 응답 코드를 반환하고 선택적 메시지를 추가할 수 있습니다.
    • 인증: 독립적인 클라이언트 인증이 필요한 여러 애플리케이션을 지원하는 로드 밸런서의 경우 인증 작업이 포함된 각 리스너 규칙에는 고유한 쿠키 이름이 있어야 합니다.
      • OpenID Connect(OIDC) 규정을 준수하는 자격 증명 공급자(IdP)입니다.
      • Amazon Cognito에서 지원하는 사용자 풀입니다.
  • 보안 리스너 설정: 보안 정책을 연결합니다. 즉, HTTPS에서 필요로 하는 정책과 인증서를 연결해주어야합니다. 인증서는 ACM과 IAM에서 가져올 수 있습니다.

리스너 규칙

이 부분이 진짜 Load Balancer에 꽃이라고 할 수 있습니다. 그 이유는 실습을 통해 알아봅시다.

  • +: 새 규칙을 생성합니다.
  • 연필: 규칙을 편집합니다.
  • 위아래: 규칙에 우선순위에 자리를 바꿉니다. 우선 순위는 제일 아래에 있는 리스너 규칙부터 적용됩니다.
  • -: 규칙을 삭제합니다.

규칙을 하나 추가해보겠습니다.


규칙에는 IF(모두 일치) 조건이 있습니다. 조건에는 6가지가 존재합니다. 이 부분은 매우 Shell script와 흡사한 거 같습니다. IF(만약 조건이 맞다면) → Then(실행해라)

  • 호스트 헤더: HTTP 헤더 중 하나인 호스트 헤더(도메인 이름)을 기준으로 삼아 라우팅을 결정하는 규칙입니다. 사용자가 입력한 도메인 이름을 읽고 정확히 일치하는 규칙을 결정합니다
    *.skills.com을 적용하자면 마지막 부분이 skills.com이면 OK인 것 입니다.

  • 경로: 경로는 호스트가 제공하는 자원이 존재하는 위치를 뜻합니다. 사용자가 도메인 네임과 함께 경로를 입력하면 리스너는 그 경로를 읽고 규칙 조건으로 삼을 수 있습니다.

  • HTTP 헤더: 위에서 봤던 호스트 헤더와 경로를 포함한 모든 HTTP 헤더를 의미합니다. 즉 사용자가 원하는 공통 헤더 혹은 요청 헤더를 골라 지정하여 라우팅 규칙으로 삼을 수 있습니다. 또는 쿠키 값대로 응답을 해줄 수 있습니다.

    예를들어서 이 상황도 가능하다. Header Key를 User-Agent로 설정하고 브라우저를 Value설정하면 예를들어 User-Agent=Firefox로 설정하고 사용자는 Firefox로 접근하는 모든 대상에게 “Not Fonud Page”로 요청에 대해 응답을 할 수 있게 설정할 수 있다.
    즉, 정확한 명칭은 “ALB를 이용하여 콘텐츠 스위칭” 입니다
    https://my-studyroom.tistory.com/entry/AWS-ALB를-이용하여-컨텐츠-관리하기

  • HTTP 요청 메서드: HTTP 요청 메서드는 사용자가 서버에게 자신의 요청 목적 혹은 종류를 알리는 수단을 의미합니다. 종류에는 CRUD, HEAD 등이 있습니다. 예를 들어 GET 메서드는 서버의 리소스 전달을 요청하는 메서드이고 HEAF 메서드는 메시지 헤더, 문서 정보를 요청하는 메서드 입니다. 이처럼 요청 메서드를 규칙 조건으로 삼아 규칙 작업을 실시할 수 있습니다.

    예를 들어 현재 ALB DNS에 wget 요청을 denied하고 싶다면 HTTP Request Method는 GET으로 하고 고정 응답반환을 통해 error를 발생시켜야한다.

  • 쿼리 문자열: 키/값 페어를 하나 이상 추가합니다. 각 키/값 페어에 대해 키를 생략하고 값만 지정할 수 있습니다. 즉 예를 들어 user=test로 오는 요청은 ~것을 해주겠다! 이렇게 됩니다. (A, B Testing 유용함)

  • 소스 IP: Source IP(소스 IP)를 선택하고 CIDR 블록을 하나 이상 추가. 예를 들자면 나의 Source IP를 입력하고 특정 타겟 그룹으로 라우팅되도록 설정할 수 있다!


규칙에 대한(IF) THEN을 설정해주겠습니다.

작업에는 3가지가 있습니다.

  • 전달 대상: 들어오는 요청을 지정한 타겟 그룹으로 라우팅합니다. 아래 처럼 대상 그룹을 지정 후 트래픽을 가중치 기반으로 할 수 있습니다.

  • 리디렉션 대상: HTTP Status Code 301 또는 302를 반환하는데, 가장 많이 쓰이는 경우는 HTTPS로 요청을 리다이렉트 시킬 때이빈다. 아래 처럼 리디렉션 대상을 리디렉션 할 수 있으며 경로와 쿼리까지 지정할 수 있습니다.

  • 고정 응답 반환: 원하는 응답 코드가 포함된 정적 응답을 생성합니다. 콘텐츠 유형도 선택가능합니다.

  • Authenticate: 이 것은 HTTPS 리스너만 해당되는 사항입니다. Cognito 또는 OIDC 공급자를 사용하여 요청을 인증합니다.

profile
Devops가 되고 싶은 청소년

0개의 댓글