대상 그룹Application Load Balancer - Elastic Load Balancing

문서의 영문과 번역 사이에 충돌이 있는 경우에는 영문 버전을 따릅니다. 번역 버전은 기계 번역을 사용하여 제공합니다.

대상 그룹Application Load Balancer

대상 그룹 은(는) 하나 이상의 등록된 타겟에 요청을 라우팅하는 데 사용됩니다. 각 리스너 규칙을 생성할 때 대상 그룹 및 조건을 지정합니다. 규칙 조건이 충족되면 해당하는 대상 그룹으로 트래픽이 전달됩니다. 서로 다른 유형의 요청에 대해 서로 다른 대상 그룹을 생성할 수 있습니다. 예를 들어, 일반 요청인 경우 하나의 대상 그룹을 생성하고 애플리케이션에 대한 마이크로 서비스의 요청인 경우 다른 대상 그룹을 생성합니다. 자세한 정보는 단원을 참조하십시오.Application Load Balancer components.

대상 그룹 기준으로 로드 밸런서에 대한 상태 확인 설정을 정의합니다. 대상 그룹을 만들거나 나중에 변경할 때 재정의하지 않는 이상 각 대상 그룹은 기본 상태 확인 설정을 사용합니다. 리스너에 대한 규칙에 대상 그룹을 지정한 후, 로드 밸런서는 해당 로드 밸런서에 대해 활성화된 가용 영역의 대상 그룹에 등록된 모든 대상의 상태를 지속적으로 모니터링합니다. 로드 밸런서는 정상 상태로 등록된 대상으로 요청을 라우팅합니다.

라우팅 구성

기본적으로 로드 밸런서는 대상 그룹을 생성할 때 지정한 프로토콜과 포트 번호를 사용하여 대상으로 요청을 라우팅합니다. 또는 대상 그룹에 등록할 때 대상으로 트래픽을 라우팅하는 데 사용되는 포트를 재정의할 수 있습니다.

대상 그룹은 다음과 같은 프로토콜 및 포트를 지원합니다.

  • 프로토콜: HTTP, HTTPS

  • 포트: 1-65535

타겟 그룹이 HTTPS 프로토콜을 사용하여 구성되거나 HTTPS 상태 검사를 사용하는 경우 대상에 대한 TLS 연결은 ELBSecurityPolicy2016-08 정책. 로드 밸런서는 대상에 설치된 인증서를 사용하여 타겟과 TLS 연결을 설정합니다. 로드 밸런서는 이러한 인증서를 검증하지 않습니다. 따라서 자체 서명된 인증서 또는 만료된 인증서를 사용할 수 있습니다. 로드 밸런서가 VPC(Virtual Private Cloud)에 있으므로 로드 밸런서와 대상 간의 트래픽은 패킷 수준에서 인증됩니다. 따라서 대상의 인증서가 유효하지 않더라도 중간자 공격이나 스푸핑이 발생할 위험이 없습니다.

Target type(대상 유형)

대상 그룹을 생성할 때 대상 유형을 지정합니다. 이 값에 따라 이 대상 그룹에 대상을 등록할 때 지정하는 대상의 유형이 결정됩니다. 대상 그룹을 생성한 후에는 대상 유형을 변경할 수 없습니다.

가능한 대상 유형은 다음과 같습니다.

instance

대상이 인스턴스 ID에 의해 지정됩니다.

ip

대상이 IP 주소입니다.

lambda

대상이 Lambda 함수입니다.

대상 유형이 ip인 경우, 다음 CIDR 블록 중 하나에서 IP 주소를 지정할 수 있습니다.

  • 대상 그룹에 대한 VPC의 서브넷

  • 10.0.0.0/8(RFC 1918)

  • 100.64.0.0/10(RFC 6598)

  • 172.16.0.0/12(RFC 1918)

  • 192.168.0.0/16(RFC 1918)

지원되는 이러한 CIDR 블록을 사용하여 다음 항목을 타겟 그룹에 등록할 수 있습니다. classiclink 인스턴스, 부하 분산 장치 VPC(동일한 지역 또는 다른 지역), IP 주소 및 포트(예: 데이터베이스) 및 AWS에 연결된 온프레미스 리소스를 통해 주소지정되는 VPC의 인스턴스 AWS Direct Connect 또는 VPN 연결.

중요

공개적으로 라우팅 가능한 IP 주소는 지정할 수 없습니다.

인스턴스 ID를 사용하여 대상을 지정하면 해당 인스턴스의 기본 네트워크 인터페이스에 지정된 기본 프라이빗 IP 주소를 사용하여 트래픽이 인스턴스로 라우팅됩니다. IP 주소를 사용하여 대상을 지정하면 하나 이상의 네트워크 인터페이스에서 프라이빗 IP 주소를 사용하여 트래픽을 인스턴스로 라우팅할 수 있습니다. 그러면 한 인스턴스의 여러 애플리케이션이 동일한 포트를 사용할 수 있습니다. 각 네트워크 인터페이스에는 자체 보안 그룹이 있을 수 있습니다.

대상 그룹의 대상 유형이 lambda인 경우 단일 Lambda 함수를 등록할 수 있습니다. 로드 밸런서가 Lambda 함수에 대한 요청을 수신하면 Lambda 함수를 호출합니다. 자세한 정보는 단원을 참조하십시오.Lambda 타겟으로 기능.

등록된 대상

로드 밸런서는 클라이언트에 대해 단일 접점의 역할을 하며 정상적으로 등록된 대상 간에 수신 트래픽을 자동으로 분산합니다. 하나 이상의 대상 그룹에 각 대상을 등록할 수 있습니다. 서로 다른 포트를 사용하여 각 EC2 인스턴스 또는 IP 주소를 동일한 대상 그룹에 여러 번 등록할 수 있으며, 이를 통해 로드 밸런서는 요청을 마이크로서비스로 라우팅할 수 있습니다.

애플리케이션에 대한 요구가 증가하면 이를 처리하기 위해 하나 이상의 대상 그룹에 추가 대상을 등록할 수 있습니다. 로드 밸런서는 등록 프로세스가 완료되고 대상이 초기 상태 확인을 통과하자마자 새로 등록된 대상에 대한 라우팅 요청을 시작합니다.

애플리케이션에 대한 요구가 감소하거나 대상을 서비스해야 하는 경우에는 대상 그룹에서 대상 등록을 취소할 수 있습니다. 대상을 등록 취소하면 대상 그룹에서 제거되지만 대상에 영향을 미치지는 않습니다. 등록이 취소되는 즉시 로드 밸런서는 대상으로의 요청 라우팅을 중지합니다. 진행 중인 요청이 완료될 때까지 해당 대상은 draining 상태를 유지합니다. 요청 수신을 다시 시작할 준비가 되면 대상 그룹에 대상을 다시 등록할 수 있습니다.

인스턴스 ID로 대상을 등록하는 경우 Auto Scaling 그룹에 로드 밸런서를 사용할 수 있습니다. 타겟 그룹을 Auto Scaling 그룹, Auto Scaling 는 타겟 그룹과 타겟을 함께 등록하여 시작합니다. 자세한 내용은 부하 분산 장치를 Auto Scaling 그룹 in the Amazon EC2 Auto Scaling 사용 설명서.

Limits

  • 동일한 VPC에서 다른 Application Load Balancer의 IP 주소는 등록할 수 없습니다. 다른 Application Load Balancer가 로드 밸런서 VPC에 피어링된 VPC에 있는 경우 해당 IP 주소를 등록할 수 있습니다.

대상 그룹 속성

타겟 그룹 유형이 다음과 같은 경우 다음 대상 그룹 속성이 지원됩니다. instance 또는 ip:

deregistration_delay.timeout_seconds

시간 Elastic Load Balancing 목표 을(를) 취소하기 전에 기다립니다. 범위는 0–3600초입니다. 기본 값은 300초입니다.

load_balancing.algorithm.type

로드 밸런싱 알고리즘은 요청을 라우팅할 때 로드 밸런서가 대상을 선택하는 방법을 결정합니다. 값은 round_robin 또는 least_outstanding_requests. 기본값은 round_robin.

slow_start.duration_seconds

로드 밸런서가 대상 그룹에 대해 선형으로 증가하는 트래픽 공유를 새로 등록된 대상에 보내는 시간(초 단위). 범위는 330–900초입니다(15분). 기본값은 0초입니다(비활성화).

stickiness.enabled

고정 세션을 활성화할지 여부를 나타냅니다.

stickiness.lb_cookie.duration_seconds

쿠키 만료 기간(초). 이 기간이 지난 후 쿠키는 무효로 간주됩니다. 최소값은 1초이고 최대값은 7일(604800초)입니다. 기본값은 1일(86400초)입니다.

stickiness.type

고정의 유형. 가능한 값은 입니다.lb_cookie.

대상 그룹 유형이 인 경우 다음 대상 그룹 속성이 지원됩니다.lambda:

lambda.multi_value_headers.enabled

로드 밸런서와 Lambda 함수 간에 교환되는 요청 및 응답 헤더에 값 또는 문자열의 배열이 포함됩니다. 가능한 값은 다음과 같습니다. true 또는 false. 기본값은 false. 자세한 내용은 다중 값 헤더.

라우팅 알고리즘

기본적으로 라운드 로빈 라우팅 알고리즘은 대상 그룹 레벨에서 요청을 라우팅하는 데 사용됩니다. 그 대신 최소 미해결 요청 라우팅 알고리즘을 지정할 수 있습니다.

애플리케이션에 대한 요청의 복잡성이 다양하거나 대상의 처리 기능이 다양한 경우 최소 미해결 요청을 사용하는 것이 좋습니다. 요청과 대상이 비슷하거나 대상 간에 똑같이 요청을 배포해야 하는 경우 라운드 로빈을 선택하는 것이 좋습니다. 다음 Cloudwatch 메트릭을 사용하여 라운드 로빈과 최소 미결 요청의 효과를 비교할 수 있습니다. 요청 횟수, 대상 연결 오류, 그리고 목표응답 시간.

Considerations

  • 최소 미해결 요청과 느린 시작 모드를 모두 활성화할 수 없습니다.

  • 고정 세션을 활성화하는 경우 초기 대상 선택 후 대상 그룹의 라우팅 알고리즘을 재정의합니다.

  • HTTP/2에서는 로드 밸런서가 요청을 여러 HTTP/1.1 요청으로 변환하므로 최소 미해결 요청은 각 HTTP/2 요청을 여러 요청으로 처리합니다.

  • WebSockets와 함께 최소 미해결 요청을 사용하는 경우 최소 미해결 요청을 사용하여 대상이 선택됩니다. 로드 밸런서는 이 대상에 대한 연결을 생성하고 이 연결을 통해 모든 메시지를 보냅니다.

New console

새 콘솔을 사용하여 라우팅 알고리즘을 수정하려면

  1. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.

  2. 탐색 창에서 아래 로드 밸런싱, 선택 대상 그룹.

  3. 대상 그룹의 이름을 선택하여 세부 정보 페이지를 엽니다.

  4. On 그룹 세부 정보 탭, 속성 섹션, 선택 편집.

  5. On 속성 편집 페이지, 로드 밸런싱 알고리즘, 선택 라운드 로빈 또는 최소 미결 요청.

  6. 선택 변경 사항 저장.

Old console

이전 콘솔을 사용하여 라우팅 알고리즘을 수정하려면

  1. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.

  2. 탐색 창에서 아래 로드 밸런싱, 선택 대상 그룹.

  3. 대상 그룹을 선택합니다.

  4. On 설명 탭, 선택 속성 편집.

  5. On 속성 편집 페이지, 로드 밸런싱 알고리즘, 선택 라운드 로빈 또는 최소 미결 요청을 선택한 후 저장.

를 사용하여 라우팅 알고리즘을 수정하려면AWS CLI

사용 수정-타겟-그룹-속성 명령을 load_balancing.algorithm.type 속성.

등록 취소 지연

Elastic Load Balancing은 등록 취소 중인 대상으로 요청을 전송하는 것을 중지합니다. 기본적으로 Elastic Load Balancing은 등록 취소 프로세스를 완료하기 전에 300초 동안 대기하는데, 이는 대상에 대해 진행 중인 요청을 완료하는 데 도움이 될 수 있습니다. 필요한 시간을 변경하려면 Elastic Load Balancing 기다렸다가 deregistration 지연 값을 업데이트합니다.

추더링 타겟의 초기 상태는 다음과 같습니다. draining. 탈퇴 지연 후, 등록 취소 프로세스가 완료되고 타겟의 상태가 unused. 타겟이 Auto Scaling 그룹을 종료하고 교체할 수 있습니다.

등록을 취소하는 대상에 진행 중인 요청이 없고 활성 연결이 없는 경우 Elastic Load Balancing은 등록 취소 지연 시간이 경과할 때까지 대기하지 않고 등록 취소 프로세스를 즉시 완료합니다. 하지만 대상 등록 취소가 완료되더라도 대상 상태는 등록 취소 지연이 경과할 때까지 draining으로 표시됩니다.

등록 취소 지연이 경과되기 전에 등록을 취소하는 대상이 연결을 종료하면 클라이언트는 500 레벨 오류 응답을 수신합니다.

New console

새 콘솔을 사용하여 파생 지연 값을 업데이트하려면

  1. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.

  2. 탐색 창에서 아래 로드 밸런싱, 선택 대상 그룹.

  3. 대상 그룹의 이름을 선택하여 세부 정보 페이지를 엽니다.

  4. On 그룹 세부 정보 탭, 속성 섹션, 선택 편집.

  5. On 속성 편집 페이지, 값 변경 데레지스트리 지연 필요에 따라.

  6. 선택 변경 사항 저장.

Old console

이전 콘솔을 사용하여 파생 지연 값을 업데이트하려면

  1. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.

  2. 탐색 창에서 아래 로드 밸런싱, 선택 대상 그룹.

  3. 대상 그룹을 선택합니다.

  4. On 설명 탭, 선택 속성 편집.

  5. On 속성 편집 페이지, 값 변경 데레지스트리 지연 필요에 따라 저장.

를 사용하여 등록 취소 지연 값을 업데이트하려면AWS CLI

사용 수정-타겟-그룹-속성 명령을 deregistration_delay.timeout_seconds 속성.

느린 시작 모드

기본적으로, 대상은 대상 그룹으로 등록되자 마자 전체 요청 공유를 받기 시작하고 초기 상태 확인을 전달합니다. 느린 시작 모드를 사용하면 로드 밸런서가 대상으로 전체 요청 공유를 보내기 전에 대상에 워밍업 시간이 제공됩니다.

대상 그룹에 대해 느린 시작을 활성화한 후 대상 그룹이 정상으로 간주하면 해당 대상이 느린 시작 모드로 들어갑니다. 느린 시작 모드의 대상은 구성된 느린 시작 기간이 경과하거나 대상이 비정상 상태가 되면 느린 시작 모드를 종료합니다. 느린 시작 모드에서는 로드 밸런서가 대상으로 보낼 수 있는 요청의 수를 선형으로 증가시킵니다. 정상 대상이 느린 시작 모드를 종료한 후에는 로드 밸런서가 대상으로 전체 요청 공유를 보낼 수 있습니다.

Considerations

  • 대상 그룹을 위해 느린 시작을 활성화하면, 대상 그룹으로 이미 등록된 정상 대상은 느린 시작 모드를 시작하지 않습니다.

  • 비어있는 대상 그룹을 위해 느린 시작을 활성화한 다음 단일 등록 작업을 사용하여 대상을 등록하면, 이러한 대상들은 느린 시작 모드를 시작하지 않습니다. 느린 시작 모드 상태가 아닌 정상 대상이 최소한 하나 이상 있는 경우에만 새로 등록된 대상이 느린 시작 모드를 시작합니다.

  • 느린 시작 모드에서 대상을 등록 취소하는 경우 대상이 느린 시작 모드를 종료합니다. 동일한 대상을 다시 등록할 경우 대상 그룹이 정상으로 간주하면 느린 시작 모드로 전환됩니다.

  • 느린 시작 모드의 대상이 비정상 상태가 되면 대상이 느린 시작 모드를 종료합니다. 대상이 정상 상태가 되면 다시 느린 시작 모드로 전환됩니다.

  • 느린 시작 모드와 최소 미해결 요청을 모두 활성화할 수 없습니다.

New console

새 콘솔을 사용하여 느린 시작 기간 값을 업데이트하려면

  1. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.

  2. 탐색 창에서 아래 로드 밸런싱, 선택 대상 그룹.

  3. 대상 그룹의 이름을 선택하여 세부 정보 페이지를 엽니다.

  4. On 그룹 세부 정보 탭, 속성 섹션, 선택 편집.

  5. On 속성 편집 페이지, 값 변경 느린 시작 기간 필요에 따라. 느린 시작 모드를 비활성화하려면 지속시간을 0으로 설정합니다.

  6. 선택 변경 사항 저장.

Old console

이전 콘솔을 사용하여 느린 시작 기간 값을 업데이트하려면

  1. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.

  2. 탐색 창에서 아래 로드 밸런싱, 선택 대상 그룹.

  3. 대상 그룹을 선택합니다.

  4. On 설명 탭, 선택 속성 편집.

  5. On 속성 편집 페이지, 값 변경 느린 시작 기간 필요에 따라 저장. 느린 시작 모드를 비활성화하려면 지속시간을 0으로 설정합니다.

를 사용하여 느린 시작 지속시간 값을 업데이트하려면AWS CLI

사용 수정-타겟-그룹-속성 명령을 slow_start.duration_seconds 속성.

고정 세션

고정 세션은 대상 그룹의 동일한 대상으로 요청을 라우팅하는 메커니즘입니다. 이는 클라이언트에게 지속적인 경험을 제공하기 위해 상태 정보를 유지하는 서버에 유용합니다. 고정 세션을 사용하려면 클라이언트는 쿠키를 지원해야 합니다.

로드 밸런서는 클라이언트로부터 요청을 처음 수신하면 요청을 대상으로 라우팅하고, 선택한 대상에 대한 정보를 인코딩하고, 쿠키를 암호화하고, 클라이언트에 대한 응답에 쿠키를 포함하는 AWSALB라는 쿠키를 생성합니다. 클라이언트는 로드 밸런서에 대한 후속 요청에서 수신하는 쿠키를 포함해야 합니다. 로더 밸런서가 클라이언트로부터 쿠키를 포함하는 요청을 수신할 때 고정 세션이 대상 그룹에 대해 활성화되어 있고 요청이 동일한 대상 그룹으로 전송되는 경우, 로드 밸런서는 쿠키를 감지하고 해당 요청을 동일한 대상으로 라우팅합니다. 쿠키가 있지만 디코딩할 수 없거나 등록이 해제되었거나 비정상 상태인 대상을 참조하는 경우 로드 밸런서는 새 대상을 선택하고 새 대상에 대한 정보로 쿠키를 업데이트합니다.

대상 그룹 레벨에서 고정 세션을 활성화합니다. 또한 로드 밸런서가 생성한 쿠키의 고정 시간(초)을 설정할 수도 있습니다. 지속 시간은 요청이 있을 때마다 설정됩니다. 따라서 각 지속 시간이 만료되기 전에 클라이언트에서 요청을 보내는 경우, 고정 세션은 지속됩니다.

CORS(Cross-Origin Resource Sharing) 요청의 경우 고정을 활성화하려면 SameSite=None; Secure가 필요합니다. 이 경우 Elastic Load Balancing 원래 스티커 쿠키와 동일한 정보를 포함하는 두 번째 점착성 쿠키, AWSALBCORS 생성 SameSite 속성. 클라이언트는 두 쿠키를 모두 수신합니다.

Application Load Balancer는 로드 밸런서가 생성한 쿠키만 지원합니다. 이러한 쿠키의 콘텐츠는 교체 키를 사용하여 암호화됩니다. 로드 밸런서가 생성한 쿠키는 해독하거나 변경할 수 없습니다.

Considerations

  • 여러 층을 사용하는 경우 Application Load Balancer로드 밸런서가 동일한 쿠키 이름을 사용하므로 한 레이어에서만 스티커 세션을 활성화할 수 있습니다.

  • WebSocket 연결은 본질적으로 고정됩니다. 클라이언트가 WebSocket에 대한 연결 업그레이드를 요청하는 경우, HTTP 101 상태 코드를 반환하여 연결 업그레이드를 승인하는 대상은 WebSocket 연결에 사용되는 대상입니다. WebSocket 업그레이드가 완료되면 쿠키 기반 고정성이 사용되지 않습니다.

  • Application Load Balancer는 Max-Age 헤더 대신에 쿠키 헤더의 Expires 속성을 사용합니다.

  • Application Load Balancer는 URL로 인코딩된 쿠키 값을 지원하지 않습니다.

New console

새 콘솔을 사용하여 스티커 세션을 활성화하려면

  1. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.

  2. 탐색 창에서 아래 로드 밸런싱, 선택 대상 그룹.

  3. 대상 그룹의 이름을 선택하여 세부 정보 페이지를 엽니다.

  4. On 그룹 세부 정보 탭, 속성 섹션, 선택 편집.

  5. On 속성 편집 페이지, 다음을 수행합니다.

    1. 선택 점착성.

    2. 대상 점착성 지속기간에서 1초 ~ 7일 사이의 값을 지정합니다.

    3. 선택 변경 사항 저장.

Old console

이전 콘솔을 사용하여 스티커 세션을 활성화하려면

  1. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 엽니다.

  2. 탐색 창에서 아래 로드 밸런싱, 선택 대상 그룹.

  3. 대상 그룹을 선택합니다.

  4. On 설명 탭, 선택 속성 편집.

  5. On 속성 편집 페이지, 다음을 수행합니다.

    1. 선택 부하 분산 장치가 생성된 쿠키 점착성 활성화.

    2. 대상 점착성 지속기간에서 1초 ~ 7일 사이의 값을 지정합니다.

    3. 선택 저장.

를 사용하여 고정 세션을 활성화하려면AWS CLI

사용 수정-타겟-그룹-속성 명령을 stickiness.enabled and stickiness.lb_cookie.duration_seconds 속성.