AWS 기술 블로그

Application Load Balancer 자동 대상 가중치를 통해 애플리케이션 가용성 향상

본 글은 원본 Improving availability with Application Load Balancer automatic target weights 번역글 입니다.

이 블로그에서는 웹 애플리케이션 사용자가 경험하는 오류 수를 줄일 수 있는 Automatic Target Weights(ATW)에 대해 살펴봅니다. ATW는 Application Load Balancer(ALB)뒤에 있는 대상에 대한 회색 실패를 감지하고 완화할 수 있는 기능을 제공합니다. 회색 실패는 ALB 대상이 활성 로드 밸런서 상태 확인을 통과하여 정상으로 보이지만 여전히 오류를 반환하는 경우에 발생합니다. 이 시나리오는 애플리케이션 버그, 종속성 실패, 간혈적인 네트워크 패킷 손실, 새로 시작된 대상의 콜드 캐시, CPU 과부하 등 여러 가지 원인으로 인해 발생할 수 있습니다.

애플리케이션 가용성을 향상시키고 이러한 회색 실패를 해결하기 위해 ALB는 이상 감지와 가중 랜덤이라는 로드 밸런싱 알고리즘을 포함하는 ATW기능을 출시했습니다. ATW의 이상 감지는 HTTP 반환 상태 코드와 TCP/TLS 오류를 분석하여 동일한 대상 그룹의 다른 대상에 비해 불균형한 오류비율을 보이는 대상을 식별합니다. ATW가 이상 대상을 식별하면 성능이 떨어지는 대상으로의 트래픽을 줄이고 이러한 오류를 보이지 않는 대상에 더 많은 트래픽을 할당합니다. 회색 실패가 감소하거나 중지되면 ALB는 이러한 대상으로의 트래픽을 서서히 다시 증가시킵니다.

이상 감지

ATW 기능에는 두 가지 측면이 있습니다: 이상 감지와 이상 완화입니다. 이상 감지는 최소 3개의 정상 대상이 있는 HTTP/HTTPS 대상 그룹에서 자동으로 활성화됩니다. 이는 HTTP/TCP/TLS 응답을 기반으로 회색 실패의 징후를 보이는 대상을 찾습니다.

등록된 대상 콘솔(그림 1)을 보면 “Anomaly detection result”라는 새로운 열이 있음을 알 수 있습니다. 이 열은 정상적으로 작동하는 대상에 대해 “Normal”로 표시됩니다. 그러나 대상이 회색 실패를 경험하고 있다면 “Anomalous”로 표시됩니다. 이는 애플리케이션의 버그, 과부화된 서버 또는 잘못된 구성으로 인한 결과일 수 있습니다.

Figure 1—Target group with anomalous targets

ATW는 각 타겟의 응답을 살펴 5초마다 이상 징후 탐지 결과를 계산합니다. 다른 대상보다 HTTP 5xx, TCP 또는 TLS 오류의 비율(오류 수를 총 요청 수로 나눈 값)이 현저히 높은 대상은 비정상적인 것으로 간주됩니다.

이상 완화

웹 애플리케이션 사용자가 경험하는 오류를 줄이려면 회색 실패가 발생하는 대상으로 전송되는 요청 수를 줄이는 이상 완화를 활성화해야 합니다. AWS 콘솔, AWS CloudFormation, API 또는 CLI를 사용하여 ATW 완화 모드를 활성화할 수 있습니다. 콘솔을 사용하여 활성화하려면 대상 그룹 속성 섹션으로 이동하여 로드 밸런싱 알고리즘 “Weighted random”을 선택하고 “Turn on anomaly mitigation”을 선택했는지 확인하십시요

Figure 2—Load balancing algorithm

또는 CLI를 사용하여 이상 징후 완화를 활성화할 수 도 있습니다.
aws elbv2 modify-target-group-attributes --target-group-arn <Target Group ARN> \
--attributes Key=load_balancing.algorithm.type,Value=weighted_random \
key=load_balancing.algorithm.anomaly_mitigation,Value=on

이제 대상 그룹의 등록된 대상을 보면 “Mitigation in effect”라는 제목의 새 열이 표시됩니다.

Figure 3—Mitigation in effect

이상 완화를 활성화하고 ATW가 이상 대상을 감지하면 ALB는 해당 대상으로 전송되는 트래픽의 양을 줄입니다. 이상 대상이 계속해서 다른 대상보다 현저히 높은 비율의 5xx/TCP/TLS 오류를 경험한다면 가중치는 계속 하향 조정되어 트래픽을 더욱 줄입니다. 대상이 5xx/TCP/TLS 오류의 비율이 낮아지는 등 회복의 징후를 보이면 ATW는 대상 동적 가중치를 증가시켜 이상 대상으로의 트래픽을 서서히 증가시킵니다.

DescribeTargetHealth API 또는 CLI를 사용하여 유사한 정보를 검색할 수 있습니다.
aws elbv2 describe-target-health \
--targets Id=<Target ID>,Port=<Target Port> \
--target-group-arn <Target Group ARN> \
--include AnomalyDetection

각 대상에 대해 응답에는 “Result”를 “anomalous”로 설명하는 “AnomlayDetection” 섹션이 포함됩니다. 또한 “MitigationInEffect” 상태도 예 또는 아니오로 포함됩니다. 다음 코드조각은 비정상적인 대상에 대한 DescribeTargetHealth의 예시입니다.

{
	“Target”: {
		“Id”: “i-00000000000000000”,
		“Port”: 80
	},
	“HealthCheckPort”: “80”,
	“TargetHealth": {
		“State”: “healthy”
	},
	“AnomalyDetection": {
		“Result”: “anomalous”,
		“MitigationInEffect”: “yes”
	}
}

ATW 이상 완화의 효과 확인

웹 어플리케이션의 상태를 모니터링하고 이상 감지 및 완화가 어떻게 작동하는지 확인하기 위해 CloudWatch 대시보드를 만드는 것이 도움이 될 수 있습니다. 그림 4의 스크린샷은 이상 완화를 황성화하기 전과 후의 예제 웹 어플리케이션 트래픽을 보여줍니다.

Figure 4 – CloudWatch dashboard

그래프의 왼쪽에서 애플리케이션의 이상 징후 완화를 활성화하기 전에 많은 수의 HTTP 5xx오류(80만 건의 요청 중 약 25%)가 발생한 것을 볼 수 있습니다. ‘비정상 호스트 수’ 그래프에서는 12개 대상 중 4개가 회색 장애를 경험했음을 보여줍니다.

기간의 절반이 지나면 이상 징후 완화 활성화의 영향을 확인할 수 있습니다. 경감된 호스트 수가 4개로 급증한 것을 알 수 있습니다. 동시에 HTTP 5xx 오류 수는 10,000건 미만으로 떨어지고 HTTP 2xx 응답 수는 200,000건 급증합니다.

이 예에서 ATW 이상 징후 탐지 및 완화는 다른 방법으로는 사용자가 경험했을 오류의 96%를 자동으로 제거했습니다.

ATW 이상 완화 및 오토 스케일링 그룹

랜덤 가중 로드 밸런싱 알고리즘과 함께 오토 스케일링 그룹 정책을 사용할 수 있습니다. 그러나 평균 CPU 사용률을 기반으로 하는 동적 스케일링 정책이 있는 경우, 개별 인스턴스의 CPU사용률은 변경되지만 메트릭(전체 평균)은 개별 대상이 ATW 완화 중일 때 변경되지 않습니다.

완회된 대상으로 인해 손실된 용량을 고려한 평균 CPU 사용률을 계산하기 위해 사용자 지정 CloudWatch메트릭을 생성할 수 있습니다. 이 메트릭은 오토 스케일링 그룹 평균 CPU 사용률을 사용하고 완화되지 않은 대상의 수를 기반으로 메트릭 값을 조정합니다.

사용자 지정 지표는 다음과 같습니다.
(EC2_AutoScalingGroup_CpuUtilization * AutoScaling_GroupInServiceInstances) / (AutoScaling_GroupInServiceInstances - MitigatedHostCount)

고려사항

ATW 작동 방식에 대해 알아야 할 몇 가지 사항은 다음과 같습니다.

  • ATW는 3개 이상의 대상이 있는 대상 그룹에서만 사용할 수 있습니다.
  • 교차 영역이 활성화된 경우 ATW는 대상 그룹의 모든 대상 중 최대 50%에 대한 실패를 감지하고 완화합니다.
  • 교차 영역이 비활성화된 경우 ATW는 가용 영역(AZ)당 최대 50%의 대상에 대한 실패를 감지하고 완화합니다.
  • 요청 속도가 대상당 초당 2개 미만인 경우 ATW가 이상 대상을 감지하지 못할 수 있습니다.
  • 대부분의 대상이 회색 실패를 경험하고 있을 때 ATW는 이상치를 감지하거나 완화를 수행할 수 없습니다.
  • ATW 감지 및 완화 기능을 사용할 때 추가 요금은 없습니다.

결론

ATW는 이제 모든 상용 AWS 리전의 기존 및 새로 생성된 ALB에서 사용할 수 있습니다. 지금 바로 실험을 시작해보시기 바랍니다. 이 기능에 대해 자세히 알아보려면 문서를 참조하십시요.

Nambong Ha

Nambong Ha

하남봉 솔루션즈 아키텍트는 통신분야에서 IT 인프라 자동화 연구개발 및 아키텍트 경험을 바탕으로 Telco의 다양한 워크로드를 클라우드로 마이그레이션 하기 위한 기술 지원 및 아키텍처 설계를 돕고 있습니다.