Application Load Balancer 대상 그룹 속성 편집
Application Load Balancer 대상 그룹을 생성한 후 대상 그룹 속성을 편집할 수 있습니다.
대상 그룹 속성
등록 취소 지연
Elastic Load Balancing은 등록 취소 중인 대상으로 요청을 전송하는 것을 중지합니다. 기본적으로 Elastic Load Balancing은 등록 취소 프로세스를 완료하기 전에 300초 동안 대기하는데, 이는 대상에 대해 진행 중인 요청을 완료하는 데 도움이 될 수 있습니다. Elastic Load Balancing이 대기하는 시간을 변경하려면 등록 취소 지연 값을 업데이트합니다.
등록 취소하는 대상의 초기 상태는 draining
입니다. 등록 취소 지연이 경과한 후 등록 취소 프로세스가 완료되며 대상 상태는 unused
입니다. 대상이 Auto Scaling 그룹의 일부인 경우 종료 및 대체될 수 있습니다.
등록을 취소하는 대상에 진행 중인 요청이 없고 활성 연결이 없는 경우 Elastic Load Balancing은 등록 취소 지연 시간이 경과할 때까지 대기하지 않고 등록 취소 프로세스를 즉시 완료합니다. 하지만 대상 등록 취소가 완료되더라도 대상 상태는 등록 취소 지연 제한 시간이 초과될 때까지 draining
으로 표시됩니다. 제한 시간이 초과되면 대상은 unused
상태로 전환됩니다.
등록 취소 지연이 경과되기 전에 등록을 취소하는 대상이 연결을 종료하면 클라이언트는 500 레벨 오류 응답을 수신합니다.
콘솔을 사용하여 등록 취소 지연 값을 업데이트하려면
https://console.aws.amazon.com/ec2/
에서 Amazon EC2 콘솔을 엽니다. -
탐색 창의 Load Balancing 아래에서 대상 그룹을 선택합니다.
-
대상 그룹의 이름을 선택하여 세부 정보 페이지를 엽니다.
-
그룹 세부 정보 탭의 속성 섹션에서 편집을 선택합니다.
-
속성 편집 페이지에서 필요에 따라 등록 취소 지연 값을 변경합니다.
-
Save changes(변경 사항 저장)를 선택합니다.
AWS CLI를 사용하여 등록 취소 지연 값을 업데이트하려면
deregistration_delay.timeout_seconds
속성과 함께 modify-target-group-attributes 명령을 사용합니다.
느린 시작 모드
기본적으로, 대상은 대상 그룹으로 등록되자 마자 전체 요청 공유를 받기 시작하고 초기 상태 확인을 전달합니다. 느린 시작 모드를 사용하면 로드 밸런서가 대상으로 전체 요청 공유를 보내기 전에 대상에 워밍업 시간이 제공됩니다.
대상 그룹에 대해 느린 시작을 활성화한 후 대상 그룹이 정상으로 간주하면 해당 대상이 느린 시작 모드로 들어갑니다. 느린 시작 모드의 대상은 구성된 느린 시작 기간이 경과하거나 대상이 비정상 상태가 되면 느린 시작 모드를 종료합니다. 느린 시작 모드에서는 로드 밸런서가 대상으로 보낼 수 있는 요청의 수를 선형으로 증가시킵니다. 정상 대상이 느린 시작 모드를 종료한 후에는 로드 밸런서가 대상으로 전체 요청 공유를 보낼 수 있습니다.
고려 사항
-
대상 그룹을 위해 느린 시작을 활성화하면, 대상 그룹으로 이미 등록된 정상 대상은 느린 시작 모드를 시작하지 않습니다.
-
비어있는 대상 그룹을 위해 느린 시작을 활성화한 다음 단일 등록 작업을 사용하여 대상을 등록하면, 이러한 대상들은 느린 시작 모드를 시작하지 않습니다. 느린 시작 모드 상태가 아닌 정상 대상이 최소한 하나 이상 있는 경우에만 새로 등록된 대상이 느린 시작 모드를 시작합니다.
-
느린 시작 모드에서 대상을 등록 취소하는 경우 대상이 느린 시작 모드를 종료합니다. 동일한 대상을 다시 등록할 경우 대상 그룹이 정상으로 간주하면 느린 시작 모드로 전환됩니다.
-
느린 시작 모드의 대상이 비정상 상태가 되면 대상이 느린 시작 모드를 종료합니다. 대상이 정상 상태가 되면 다시 느린 시작 모드로 전환됩니다.
-
최소 미해결 요청 또는 가중치 기반 무작위 라우팅 알고리즘을 사용할 때는 느린 시작 모드를 활성화할 수 없습니다.
콘솔을 사용하여 느린 시작 지속시간 값을 업데이트하려면
https://console.aws.amazon.com/ec2/
에서 Amazon EC2 콘솔을 엽니다. -
탐색 창의 Load Balancing 아래에서 대상 그룹을 선택합니다.
-
대상 그룹의 이름을 선택하여 세부 정보 페이지를 엽니다.
-
그룹 세부 정보 탭의 속성 섹션에서 편집을 선택합니다.
-
속성 편집 페이지에서 필요에 따라 느린 시작 기간의 값을 변경합니다. 느린 시작 모드를 비활성화하려면 지속시간을 0으로 설정합니다.
-
Save changes(변경 사항 저장)를 선택합니다.
AWS CLI를 사용하여 느린 시작 지속시간 값을 업데이트하려면
slow_start.duration_seconds
속성과 함께 modify-target-group-attributes 명령을 사용합니다.
Application Load Balancer 대상 그룹에 대한 교차 영역 로드 밸런싱
로드 밸런서의 노드는 클라이언트로부터 요청을 가져와서 등록된 대상에 분산합니다. 교차 영역 로드 밸런싱이 켜진 경우 각 로드 밸런서 노드가 등록된 모든 가용 영역에 있는 등록된 대상 간에 트래픽을 분산합니다. 교차 영역 로드 밸런싱이 꺼진 경우 각 로드 밸런서 노드가 해당 가용 영역에 있는 등록된 대상 간에만 트래픽을 분산합니다. 이는 영역 장애 도메인이 지역보다 선호되는 경우 정상 영역이 비정상 영역의 영향을 받지 않도록 하거나 전반적인 지연 시간을 개선하기 위한 것일 수 있습니다.
Application Load Balancer를 사용하면 교차 영역 로드 밸런싱이 로드 밸런서 수준에서 항상 켜져 있으며 끌 수 없습니다. 대상 그룹의 경우 기본적으로 로드 밸런서 설정을 사용하지만 대상 그룹 수준에서 교차 영역 로드 밸런싱을 명시적으로 해제하여 기본값을 재정의할 수 있습니다.
고려 사항
-
교차 영역 로드 밸런싱이 꺼져 있는 경우 대상 고정성이 지원되지 않습니다.
-
교차 영역 로드 밸런싱이 꺼져 있는 경우 대상으로서의 Lambda 함수는 지원되지 않습니다.
-
대상에 매개 변수
AvailabilityZone
이(가)all
(으)로 설정된 경우ModifyTargetGroupAttributes
API를 통해 교차 영역 로드 밸런싱을 끄려고 하면 오류가 발생합니다. -
대상을 등록할 때는
AvailabilityZone
파라미터가 필요합니다. 교차 영역 로드 밸런싱이 꺼진 경우에만 특정 가용 영역 값을 사용할 수 있습니다. 그렇지 않으면 파라미터가 무시되고all
(으)로 처리됩니다.
모범 사례
-
대상 그룹별로 활용할 것으로 예상되는 모든 가용 영역에서 충분한 대상 용량을 계획하세요. 참여하는 모든 가용 영역에서 충분한 용량을 계획할 수 없다면 교차 영역 로드 밸런싱을 유지하는 것이 좋습니다.
-
여러 대상 그룹으로 Application Load Balancer를 구성할 때는 모든 대상 그룹이 구성된 지역 내의 동일한 가용 영역에 속해 있는지 확인하세요. 이는 교차 영역 로드 밸런싱이 꺼져 있는 동안 가용 영역이 비어 있는 것을 방지하기 위한 것입니다. 빈 가용 영역으로 들어오는 모든 HTTP 요청에 대해 503 오류를 트리거하기 때문입니다.
-
빈 서브넷을 생성하지 마십시오. Application Load Balancer는 빈 서브넷의 DNS를 통해 영역 IP 주소를 노출하며, 이로 인해 HTTP 요청에 대해 503 오류가 발생합니다.
-
교차 영역 로드 밸런싱이 해제된 대상 그룹의 가용 영역당 계획된 대상 용량이 충분하지만 가용 영역의 모든 대상이 비정상 상태가 되는 경우가 있을 수 있습니다. 비정상 대상이 모두 포함된 대상 그룹이 하나 이상 있는 경우 로드 밸런서 노드의 IP 주소가 DNS에서 제거됩니다. 대상 그룹에 정상 대상이 하나 이상 있으면 IP 주소가 DNS로 복원됩니다.
교차 영역 로드 밸런싱 해제
Application Load Balancer 대상 그룹에 대해 언제든지 교차 영역 로드 밸런싱을 끌 수 있습니다.
콘솔을 사용하여 교차 영역 로드 밸런싱을 해제하려면
https://console.aws.amazon.com/ec2/
에서 Amazon EC2 콘솔을 엽니다. -
탐색 창의 Load Balancing(로드 밸런싱)에서 Target Groups(대상 그룹)을 선택합니다.
-
대상 그룹의 이름을 선택하여 세부 정보 페이지를 엽니다.
-
Attributes(속성) 탭에서 Edit(편집)을 선택합니다.
-
Edit target group attributes(대상 그룹 속성 편집) 페이지에서 Cross-zone load balancing(교차 영역 로드 밸런싱)에 대해 Off(해제)를 선택합니다.
-
Save changes(변경 사항 저장)를 선택합니다.
AWS CLI을(를) 사용하여 교차 영역 로드 밸런싱을 해제하려면
modify-target-group-attributes 명령을 사용하고 load_balancing.cross_zone.enabled
속성을 false
(으)로 설정합니다.
aws elbv2 modify-target-group-attributes --target-group-arn
my-targetgroup-arn
--attributes Key=load_balancing.cross_zone.enabled,Value=false
다음은 응답의 예입니다.
{
"Attributes": [
{
"Key": "load_balancing.cross_zone.enabled",
"Value": "false"
},
]
}
교차 영역 로드 밸런싱 설정
Application Load Balancer 대상 그룹에 대해 언제든지 교차 영역 로드 밸런싱을 켤 수 있습니다. 대상 그룹 수준의 교차 영역 로드 밸런싱 설정은 로드 밸런서 수준의 설정을 재정의합니다.
콘솔을 사용하여 교차 영역 로드 밸런싱을 설정하려면
https://console.aws.amazon.com/ec2/
에서 Amazon EC2 콘솔을 엽니다. -
탐색 창의 Load Balancing(로드 밸런싱)에서 Target Groups(대상 그룹)을 선택합니다.
-
대상 그룹의 이름을 선택하여 세부 정보 페이지를 엽니다.
-
Attributes(속성) 탭에서 Edit(편집)을 선택합니다.
-
Edit target group attributes(대상 그룹 속성 편집) 페이지에서 Cross-zone load balancing(교차 영역 로드 밸런싱)에 대해 On(사용)을 선택합니다.
-
Save changes(변경 사항 저장)를 선택합니다.
AWS CLI을(를) 사용하여 교차 영역 로드 밸런싱을 설정하려면
modify-target-group-attributes 명령을 사용하고 load_balancing.cross_zone.enabled
속성을 true
(으)로 설정합니다.
aws elbv2 modify-target-group-attributes --target-group-arn
my-targetgroup-arn
--attributes Key=load_balancing.cross_zone.enabled,Value=true
다음은 응답의 예입니다.
{
"Attributes": [
{
"Key": "load_balancing.cross_zone.enabled",
"Value": "true"
},
]
}
자동 대상 가중치(ATW)
자동 대상 가중치(ATW)는 애플리케이션을 실행하는 대상을 지속적으로 모니터링하여 이상이라고 하는 심각한 성능 편차를 감지합니다. ATW는 실시간 데이터 이상 탐지를 통해 대상으로 라우팅되는 트래픽의 양을 동적으로 조정할 수 있는 기능을 제공합니다.
자동 대상 가중치(ATW)는 계정의 모든 Application Load Balancer에서 이상 탐지를 자동으로 수행합니다. 이상 대상이 식별되면 ATW는 라우팅되는 트래픽의 양을 줄여 자동으로 안정화를 시도할 수 있습니다. 이를 이상 완화라고 합니다. ATW는 트래픽 배포를 지속적으로 최적화하여 대상별 성공률을 극대화하는 동시에 대상 그룹 실패율을 최소화합니다.
고려 사항:
-
이상 탐지는 대상이 반환하는 HTTP 5xx 응답 코드와 대상에 대한 연결 실패를 모니터링합니다. 이상 탐지는 항상 켜지며 끌 수 없습니다.
-
Lambda를 대상으로 사용하는 경우 ATW는 지원되지 않습니다.
이상 탐지
ATW 이상 탐지는 대상 그룹 내 다른 대상과 비교하여 동작에서 상당한 편차를 나타내는 모든 대상을 모니터링합니다. 이러한 편차, 즉 이상은 한 대상의 오류 백분율과 대상 그룹 내 다른 대상의 오류 백분율을 비교하여 결정됩니다. 이러한 오류는 연결 오류와 HTTP 오류 코드 모두일 수 있습니다. 피어보다 훨씬 더 많은 오류를 보고하는 대상이 이상으로 간주됩니다.
이상 탐지를 위해서는 대상 그룹에 최소 3개의 정상 대상이 필요합니다. 대상이 대상 그룹에 등록되면 먼저 상태 확인을 통과하여 트래픽 수신을 시작해야 합니다. 대상이 트래픽을 수신하면 ATW는 대상 모니터링을 시작하고 이상 결과를 지속적으로 게시합니다. 이상이 없는 대상의 경우 이상 결과는 normal
입니다. 이상이 있는 대상의 경우 이상 결과는 anomalous
입니다.
ATW 이상 탐지는 대상 그룹 상태 확인과 독립적으로 작동합니다. 대상은 모든 대상 그룹 상태 확인을 통과할 수 있지만 오류율 증가로 인해 여전히 비정상으로 표시될 수 있습니다. 비정상으로 분류되는 대상은 대상 그룹 상태 확인 상태에 영향을 주지 않습니다.
이상 탐지 상태
ATW는 대상에서 수행하는 이상 탐지의 상태를 지속적으로 게시합니다. AWS Management Console 또는 AWS CLI를 사용하여 언제든지 현재 상태를 볼 수 있습니다.
콘솔을 사용하여 이상 탐지 상태를 보려면
https://console.aws.amazon.com/ec2/
에서 Amazon EC2 콘솔을 엽니다. -
탐색 창의 Load Balancing 아래에서 대상 그룹을 선택합니다.
-
대상 그룹의 이름을 선택하여 세부 정보 페이지를 엽니다.
-
대상 그룹 세부 정보 페이지에서 대상 탭을 선택합니다.
-
등록된 대상 표의 이상 탐지 결과 열에서 각 대상의 이상 상태를 볼 수 있습니다.
이상이 탐지되지 않은 경우 결과는
normal
입니다.이상이 탐지된 경우 결과는
anomalous
입니다.
AWS CLI를 사용하여 이상 탐지 결과를 보려면
Include.member.N
속성 값을 AnomalyDetection
으로 설정하여 describe-target-health 명령을 사용합니다.
이상 완화
중요
ATW의 이상 완화 기능은 가중치 기반 무작위 라우팅 알고리즘을 사용하는 경우에만 사용할 수 있습니다.
ATW 이상 완화는 자동으로 이상 대상을 배제하고 트래픽을 라우팅하여 복구 기회를 제공합니다.
완화 도중:
-
ATW는 이상 대상으로 라우팅되는 트래픽의 양을 주기적으로 조정합니다. 현재 이 주기는 5초입니다.
-
ATW는 이상 대상에 라우팅되는 트래픽 양을 이상 완화를 수행하는 데 필요한 최소 양으로 줄입니다.
-
더 이상 이상으로 탐지되지 않는 대상은 대상 그룹의 다른 정상 대상과 동등해질 때까지 점차적으로 더 많은 트래픽이 라우팅됩니다.
ATW 이상 완화 활성화
언제든지 이상 완화 기능을 켤 수 있습니다.
콘솔을 사용하여 이상 완화를 켜려면
https://console.aws.amazon.com/ec2/
에서 Amazon EC2 콘솔을 엽니다. -
탐색 창의 Load Balancing 아래에서 대상 그룹을 선택합니다.
-
대상 그룹의 이름을 선택하여 세부 정보 페이지를 엽니다.
-
대상 그룹 세부 정보 페이지의 속성 섹션에서 편집을 선택합니다.
-
대상 그룹 속성 편집 페이지에 있는 트래픽 구성 섹션의 로드 밸런싱 알고리즘 아래에서 가중치 기반 무작위가 선택되었는지 확인합니다.
참고: 가중치 기반 무작위 알고리즘을 처음 선택하면 이상 탐지가 기본적으로 켜집니다.
-
이상 완화에서 이상 완화 켜기가 선택되어 있는지 확인합니다.
-
Save changes(변경 사항 저장)를 선택합니다.
AWS CLI를 사용하여 이상 완화를 켜려면
load_balancing.algorithm.anomaly_mitigation
속성과 함께 modify-target-group-attributes 명령을 사용합니다.
이상 완화 상태
ATW가 대상에 대해 완화를 수행할 때마다 AWS Management Console 또는 AWS CLI를 사용하여 언제든지 현재 상태를 볼 수 있습니다.
콘솔을 사용하여 이상 완화 상태를 보려면
https://console.aws.amazon.com/ec2/
에서 Amazon EC2 콘솔을 엽니다. -
탐색 창의 Load Balancing 아래에서 대상 그룹을 선택합니다.
-
대상 그룹의 이름을 선택하여 세부 정보 페이지를 엽니다.
-
대상 그룹 세부 정보 페이지에서 대상 탭을 선택합니다.
-
등록된 대상 표의 완화 적용 중 열에서 각 대상의 이상 완화 상태를 볼 수 있습니다.
완화가 진행 중이지 않은 경우 상태는
yes
입니다.완화가 진행 중인 경우 상태는
no
입니다.
AWS CLI를 사용하여 이상 완화 상태를 보려면
Include.member.N
속성 값을 AnomalyDetection
으로 설정하여 describe-target-health 명령을 사용합니다.
Application Load Balancer에 대한 고정 세션
기본적으로, Application Load Balancer는 선택한 로드 밸런싱 알고리즘에 따라 각 요청을 등록된 대상으로 독립적으로 라우팅합니다. 한편, 고정 세션 기능(세션 어피니티라고도 함)을 사용해 로드 밸런서가 사용자의 세션을 특정 대상에 바인딩하도록 할 수 있습니다. 이렇게 하면 세션 중에 사용자로부터 들어오는 모든 요청이 동일한 대상으로 전송됩니다. 이 기능은 클라이언트에게 지속적인 경험을 제공하기 위해 상태 정보를 유지하는 서버에 유용합니다. 고정 세션을 사용하려면 클라이언트가 쿠키를 지원해야 합니다.
Application Load Balancer는 기간 기반 쿠키와 애플리케이션 기반 쿠키를 둘 다 지원합니다. 고정 세션은 대상 그룹 레벨에서 활성화됩니다. 전체 대상 그룹에 대해 기간 기반 고정, 애플리케이션 기반 고정, 고정 없음을 조합하여 사용할 수 있습니다.
고정 세션 관리에서 핵심은 로드 밸런서가 얼마나 오래 사용자 요청을 동일한 대상으로 일관되게 라우팅하는지를 결정하는 것입니다. 애플리케이션이 자체 세션 쿠키를 가지고 있는 경우에는 애플리케이션 기반 고정을 사용할 수 있으며 로드 밸런서 세션 쿠키는 애플리케이션의 세션 쿠키에 지정된 기간을 따릅니다. 애플리케이션이 자체 세션 쿠키를 가지고 있지 않은 경우에는 기간 기반 고정을 사용하여 원하는 기간이 지정된 로드 밸런서 세션 쿠키를 생성할 수 있습니다.
로드 밸런서 생성 쿠키의 내용은 회전 키를 사용하여 암호화됩니다. 로드 밸런서가 생성한 쿠키는 해독하거나 변경할 수 없습니다.
두 고정 유형 모두에서, Application Load Balancer는 모든 요청 후에 생성하는 쿠키의 만료 기간을 재설정합니다. 쿠키가 만료되면 세션은 더 이상 고정되지 않으며 클라이언트는 쿠키 저장소에서 쿠키를 제거해야 합니다.
요구 사항
-
HTTP/HTTPS 로드 밸런서입니다.
-
각 가용 영역에 있는 하나 이상의 정상 상태 인스턴스입니다.
고려 사항
-
교차 영역 로드 밸런싱이 비활성화된 경우 스티키 세션이 지원되지 않습니다. 교차 영역 로드 밸런싱이 비활성화된 상태에서 고정 세션을 활성화하려고 시도하면 실패합니다.
-
애플리케이션 기반 쿠키의 경우, 각 대상 그룹에 대해 쿠키 이름을 개별적으로 지정해야 합니다. 그러나 기간 기반 쿠키의 경우,
AWSALB
은(는) 모든 대상 그룹에서 사용되는 유일한 이름입니다. -
Application Load Balancer의 여러 계층을 사용하는 경우, 애플리케이션 기반 쿠키를 사용하여 모든 계층에서 고정 세션을 활성화할 수 있습니다. 그러나 기간 기반 쿠키를 사용하면 하나의 레이어에서만 고정 세션을 활성화할 수 있습니다.
AWSALB
이(가) 사용할 수 있는 유일한 이름이기 때문입니다. -
Application Load Balancer가
AWSALBCORS
및AWSALB
기간 기반 고정성 쿠키를 모두 수신하면AWSALBCORS
의 값이 우선합니다. -
애플리케이션 기반 고정은 가중 대상 그룹에서 작동하지 않습니다.
-
대상 그룹이 여러 개인 전달 작업이 있고 하나 이상의 대상 그룹에 고정 세션이 활성화되어 있으면 대상 그룹 레벨에서 고정을 활성화해야 합니다.
-
WebSocket 연결은 본질적으로 고정됩니다. 클라이언트가 WebSocket에 대한 연결 업그레이드를 요청하는 경우, HTTP 101 상태 코드를 반환하여 연결 업그레이드를 승인하는 대상은 WebSocket 연결에 사용되는 대상입니다. WebSocket 업그레이드가 완료되면 쿠키 기반 고정성이 사용되지 않습니다.
-
Application Load Balancer는 쿠키 헤더에서
Max-Age
속성 대신Expires
속성을 사용합니다. -
Application Load Balancer는 URL로 인코딩된 쿠키 값을 지원하지 않습니다.
기간 기반 고정
기간 기반 고정은 로드 밸런서 생성 쿠키(AWSALB
)를 사용하여 대상 그룹의 동일한 대상으로 요청을 라우팅합니다. 쿠키는 세션을 대상에 매핑하는 데 사용됩니다. 애플리케이션에 자체 세션 쿠키가 없는 경우, 고유한 고정 기간을 지정하고 로드 밸런서가 사용자 요청을 동일한 대상으로 일관되게 라우팅하는 기간을 관리할 수 있습니다.
처음 클라이언트의 요청을 받으면 로드 밸런서는 (선택한 알고리즘을 기반으로) 요청을 대상으로 라우팅하고 AWSALB
(이)라는 쿠키를 생성합니다. 선택한 대상에 대한 정보를 인코딩하고, 쿠키를 암호화하고, 클라이언트에 대한 응답에 쿠키를 포함합니다. 로드 밸런서에서 생성된 쿠키는 만료 기간이 7일이며 이는 구성할 수 없습니다.
후속 요청에서 클라이언트는 AWSALB
쿠키를 포함해야 합니다. 로드 밸런서는 쿠키를 포함하는 클라이언트로부터 요청을 수신하면 이를 감지하고 해당 요청을 동일한 대상으로 라우팅합니다. 쿠키가 있지만 디코딩할 수 없거나 등록이 해제되었거나 비정상 상태인 대상을 참조하는 경우 로드 밸런서는 새 대상을 선택하고 새 대상에 대한 정보로 쿠키를 업데이트합니다.
크로스 오리진 리소스 공유(CORS) 요청의 경우 고정성을 활성화하려면 SameSite=None; Secure
가 필요합니다. 이러한 브라우저를 지원하기 위해 로드 밸런서는 항상 원래 고정성 쿠키와 동일한 정보 및 SameSite
속성을 포함하는 두 번째 고정성 쿠키 AWSALBCORS
를 생성합니다. 클라이언트는 CORS가 아닌 요청을 포함하여 두 쿠키를 모두 수신합니다.
콘솔을 사용하여 기간 기반 고정을 활성화하는 방법
https://console.aws.amazon.com/ec2/
에서 Amazon EC2 콘솔을 엽니다. -
탐색 창의 Load Balancing 아래에서 대상 그룹을 선택합니다.
-
대상 그룹의 이름을 선택하여 세부 정보 페이지를 엽니다.
-
그룹 세부 정보 탭의 속성 섹션에서 편집을 선택합니다.
-
[Edit attributes] 페이지에서 다음을 수행합니다.
-
고정성을 선택합니다.
-
고정 유형에서 로드 밸런서 생성 쿠키를 선택합니다.
-
[Stickiness duration]에서 1초에서 7일 사이의 값을 지정합니다.
-
Save changes(변경 사항 저장)를 선택합니다.
-
AWS CLI를 사용하여 기간 기반 고정 활성화
stickiness.enabled
및 stickiness.lb_cookie.duration_seconds
속성과 함께 modify-target-group-attributes 명령을 사용합니다.
다음 명령을 사용하여 기간 기반 고정을 활성화합니다.
aws elbv2 modify-target-group-attributes --target-group-arn
ARN
--attributes Key=stickiness.enabled,Value=true
Key=stickiness.lb_cookie.duration_seconds,Value=time-in-seconds
다음 예와 유사하게 출력되어야 합니다:
{
"Attributes": [
...
{
"Key": "stickiness.enabled",
"Value": "true"
},
{
"Key": "stickiness.lb_cookie.duration_seconds",
"Value": "86500"
},
...
]
}
애플리케이션 기반 고정
애플리케이션 기반 고정은 클라이언트 대상 고정에 대한 사용자 고유의 기준을 설정할 수 있는 유연성을 제공합니다. 애플리케이션 기반 고정을 활성화하면 로드 밸런서는 선택한 알고리즘을 기반으로 첫 번째 요청을 대상 그룹 내의 대상으로 라우팅합니다. 대상은 고정을 활성화하기 위해 로드 밸런서에 구성된 쿠키와 일치하는 사용자 지정 애플리케이션 쿠키를 설정해야 합니다. 이 사용자 지정 쿠키에는 애플리케이션에 필요한 모든 쿠키 속성이 포함될 수 있습니다.
Application Load Balancer가 대상으로부터 사용자 지정 애플리케이션 쿠키를 수신하면, 애플리케이션 쿠키라는 암호화된 새 쿠키가 자동으로 생성되어 고정 정보를 캡처합니다. 이 로드 밸런서에서 생성한 애플리케이션 쿠키는 애플리케이션 기반 고정성이 활성화된 각 대상 그룹에 대한 고정 정보를 캡처합니다.
로드 밸런서에서 생성한 애플리케이션 쿠키는 대상에 의해 설정된 사용자 지정 쿠키의 속성을 복사하지 않습니다. 여기에는 구성할 수 없는 7일의 자체 만료 기간이 있습니다. 클라이언트에 대한 응답에서 Application Load Balancer는 사용자 지정 쿠키의 값 또는 만료 속성이 아니라, 대상 그룹 수준에서 사용자 지정 쿠키가 구성된 이름만 검증합니다. 이름이 일치하는 한, 로드 밸런서는 클라이언트에 대한 응답에서 로드 밸런서가 생성한 애플리케이션 쿠키 및 대상에서 설정한 사용자 지정 쿠키와 같이 두 쿠키를 모두 전송합니다.
후속 요청에서, 클라이언트는 고정을 유지하기 위해 쿠키를 둘 다 다시 보내야 합니다. 로드 밸런서는 애플리케이션 쿠키를 해독하고 구성된 고정 기간이 여전히 유효한지 여부를 확인합니다. 그런 다음 쿠키에 있는 정보를 사용하여 대상 그룹 내의 동일한 대상으로 요청을 전송하여 고정을 유지합니다. 또한, 로드 밸런서는 사용자 지정 애플리케이션 쿠키를 검사하거나 수정하지 않고 대상으로 프록시합니다. 후속 응답에서 로드 밸런서가 생성한 애플리케이션 쿠키의 만료 및 로드 밸런서에 구성된 고정 기간이 재설정됩니다. 클라이언트와 대상 사이의 고정성을 유지하려면 쿠키의 만료 및 고정 기간이 경과하지 않아야 합니다.
대상이 실패하거나 비정상 상태가 되면 로드 밸런서는 해당 대상으로의 요청 라우팅을 중지하고 선택한 로드 밸런싱 알고리즘을 기반으로 정상 상태의 대상을 새로 선정합니다. 로드 밸런서는 세션을 정상 상태의 새 대상에 “고정”된 것으로 간주하고, 실패한 대상이 다시 오더라도 요청을 정상 상태의 새 대상으로 계속 라우팅합니다.
Cross-Origin Resource Sharing(CORS) 요청을 사용하는 경우 고정성을 활성화하려면 사용자 에이전트 버전이 Chromium80 이상인 경우에만 로드 밸런서가 SameSite=None; Secure
속성을 로드 밸런서가 생성한 애플리케이션 쿠키에 추가합니다.
대부분의 브라우저는 쿠키를 4K로 제한하기 때문에 로드 밸런서는 애플리케이션 쿠키를 4K보다 큰 여러 쿠키로 분할합니다. Application Load Balancer는 최대 16K 크기의 쿠키를 지원하므로 클라이언트로 전송하는 샤드를 최대 4개까지 생성할 수 있습니다. 클라이언트에 표시되는 애플리케이션 쿠키 이름은 "AWSALBAPP-"로 시작하며 조각 번호를 포함합니다. 예를 들어, 쿠키 크기가 0-4K이면 클라이언트에 AWSALBAPP-0이 표시됩니다. 쿠키 크기가 4-8K인 경우 클라이언트에 AWSALBAPP-0, AWSALBAPP-1 등으로 표시됩니다.
콘솔을 사용하여 애플리케이션 기반 고정을 활성화하는 방법
https://console.aws.amazon.com/ec2/
에서 Amazon EC2 콘솔을 엽니다. -
탐색 창의 Load Balancing 아래에서 대상 그룹을 선택합니다.
-
대상 그룹의 이름을 선택하여 세부 정보 페이지를 엽니다.
-
그룹 세부 정보 탭의 속성 섹션에서 편집을 선택합니다.
-
[Edit attributes] 페이지에서 다음을 수행합니다.
-
고정성을 선택합니다.
-
고정 유형에서 애플리케이션 기반 쿠키를 선택합니다.
-
[Stickiness duration]에서 1초에서 7일 사이의 값을 지정합니다.
-
앱 쿠키 이름에서 애플리케이션 기반 쿠키의 이름을 입력합니다.
쿠키 이름에는
AWSALB
,AWSALBAPP
또는AWSALBTG
을(를) 사용하지 마세요. 이 단어는 로드 밸런서에서 사용하도록 예약되어 있습니다. -
Save changes(변경 사항 저장)를 선택합니다.
-
AWS CLI를 사용하여 애플리케이션 기반 고정 활성화
modify-target-group-attributes 명령을 다음 속성과 함께 사용합니다.
-
stickiness.enabled
-
stickiness.type
-
stickiness.app_cookie.cookie_name
-
stickiness.app_cookie.duration_seconds
애플리케이션 기반 고정을 활성화하려면 다음 명령을 사용합니다.
aws elbv2 modify-target-group-attributes --target-group-arn
ARN
--attributes Key=stickiness.enabled,Value=true
Key=stickiness.type,Value=app_cookie
Key=stickiness.app_cookie.cookie_name,Value=my-cookie-name
Key=stickiness.app_cookie.duration_seconds,Value=time-in-seconds
다음 예와 유사하게 출력되어야 합니다:
{
"Attributes": [
...
{
"Key": "stickiness.enabled",
"Value": "true"
},
{
"Key": "stickiness.app_cookie.cookie_name",
"Value": "MyCookie"
},
{
"Key": "stickiness.type",
"Value": "app_cookie"
},
{
"Key": "stickiness.app_cookie.duration_seconds",
"Value": "86500"
},
...
]
}
수동 재조정
확장 시 대상 수가 크게 증가하면 고정으로 인해 하중이 불균등하게 분산될 가능성이 있습니다. 이 시나리오에서는 다음 두 옵션을 사용하여 대상에 대한 부하를 재조정할 수 있습니다.
-
애플리케이션에 의해 생성된 쿠키에 대한 만료일을 현재 날짜 및 시간 이전으로 설정합니다. 이렇게 하면 클라이언트가 쿠키를 Application Load Balancer에 보내지 못하게 되어, 고정을 설정하는 프로세스가 다시 시작됩니다.
-
로드 밸런서의 애플리케이션 기반 고정 구성에서 매우 짧은 기간을 설정합니다(예: 1초). 이렇게 하면 대상에 의해 설정된 쿠키가 만료되지 않은 경우에도 Application Load Balancer가 고정을 다시 설정합니다.