Amazon SQS 기반 크기 조정 구성 - Amazon EC2 Auto Scaling

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon SQS 기반 크기 조정 구성

이 섹션에서는 Amazon Amazon SQS를 기반으로 조정을 구성하는 방법을 설명합니다.

1단계: CloudWatch 사용자 지정 지표 생성

사용자 지정 지표는 지표 이름과 선택한 네임스페이스를 사용하여 정의됩니다. 사용자 지정 지표를 위한 네임스페이스는 AWS/로 시작할 수 없습니다. 사용자 지정 지표 게시에 대한 자세한 설명은 Amazon CloudWatch 사용자 가이드사용자 지정 지표 게시 주제를 참조하세요.

다음 절차에 따라 AWS 먼저 계정에서 정보를 읽어 사용자 지정 지표를 생성합니다. 그런 다음, 앞 섹션 에서 권장한 인스턴스당 백로그 지표를 계산합니다. 마지막으로 이 수치를 1분 단위로 CloudWatch에 게시합니다. 가능하면 시스템 로드 변화에 빠르게 대응할 수 있도록 1분 단위로 지표를 조정하는 것이 좋습니다.

CloudWatch 사용자 지정 지표(AWS CLI)를 생성하려면
  1. SQS get-queue-attributes 명령을 사용하여 대기열에서 대기 중인 메시지 수(ApproximateNumberOfMessages)를 확인합니다.

    aws sqs get-queue-attributes --queue-url https://sqs.region.amazonaws.com/123456789/MyQueue \ --attribute-names ApproximateNumberOfMessages
  2. describe-auto-scaling-groups 명령을 사용하여 그룹의 실행 용량을 가져올 수 있습니다. 이 용량은 수명 주기 상태가 InService인 인스턴스 수입니다. 이 명령은 Auto Scaling 그룹의 인스턴스와 해당 수명 주기 상태를 반환합니다.

    aws autoscaling describe-auto-scaling-groups --auto-scaling-group-names my-asg
  3. 대기열에서 검색할 수 있는 대략적인 메시지 수를 그룹의 실행 용량으로 나누어 인스턴스당 백로그를 계산합니다.

  4. 1분마다 실행되는 스크립트를 만들어 인스턴스당 백로그 값을 검색하고 이를 CloudWatch 사용자 지정 지표에 게시합니다. 사용자 지정 지표를 게시할 때 지표의 이름, 네임스페이스, 단위, 값 및 0개 이상의 차원을 지정합니다. 차원은 차원 이름과 차원 값으로 구성됩니다.

    사용자 지정 지표를 게시하려면 이탤릭체로 표시된 자리 표시자 값을 원하는 지표 이름, 지표의 값, 네임스페이스("AWS"로 시작하지 않는 한) 및 차원(옵션)으로 바꾼 다음 다음 put-metric-data 명령을 실행합니다.

    aws cloudwatch put-metric-data --metric-name MyBacklogPerInstance --namespace MyNamespace \ --unit None --value 20 --dimensions MyOptionalMetricDimensionName=MyOptionalMetricDimensionValue

애플리케이션에서 해당 지표를 생성하면 데이터가 CloudWatch로 전송됩니다. 이 지표는 CloudWatch 콘솔에 표시됩니다. 에 로그인 AWS Management Console 하고 CloudWatch 페이지로 이동하여 액세스할 수 있습니다. 그런 다음 지표 페이지로 이동하거나 검색 상자에서 검색하여 지표를 볼 수 있습니다. 자세한 설명은 Amazon CloudWatch 사용자 가이드사용 가능한 지표 보기를 참조하세요.

2단계: 대상 추적 조정 정책 생성

이제 생성한 지표를 대상 추적 스케일링 정책에 추가할 수 있습니다.

대상 추적 조정 정책(AWS CLI)을 생성하려면
  1. 다음 cat 명령을 사용하여 홈 디렉터리에 config.json라는 명칭의 JSON 파일에 조정 정책에 대한 목표값을 저장하고 사용자 지정 지표 사양을 지정합니다. user input placeholder를 사용자의 정보로 바꿉니다. TargetValue에, 인스턴스당 허용 백로그 지표를 계산하여 입력합니다. 이 값을 계산하려면 이전 섹션에서 설명한 대로 보통 지연 시간 값을 확인하여, 이 값을 메시지를 처리하는 데 걸리는 평균 시간으로 나눕니다.

    1단계에서 만든 지표에 대해 어떤 차원도 지정하지 않았다면 사용자 지정 지표 사양에 어떤 차원도 포함하지 마세요.

    $ cat ~/config.json { "TargetValue":100, "CustomizedMetricSpecification":{ "MetricName":"MyBacklogPerInstance", "Namespace":"MyNamespace", "Dimensions":[ { "Name":"MyOptionalMetricDimensionName", "Value":"MyOptionalMetricDimensionValue" } ], "Statistic":"Average", "Unit":"None" } }
  2. put-scaling-policy 명령과 이전 단계에서 만든 config.json 파일을 사용하여 조정 정책을 생성합니다.

    aws autoscaling put-scaling-policy --policy-name sqs100-target-tracking-scaling-policy \ --auto-scaling-group-name my-asg --policy-type TargetTrackingScaling \ --target-tracking-configuration file://~/config.json

    이 정책은 스케일 아웃과 축소에 대해 한 개씩 두 개의 경보를 생성합니다. 또한 CloudWatch에 등록된 정책의 Amazon 리소스 이름(ARN)을 반환합니다. CloudWatch는 지표 임계값이 위반될 때마다 이 이름을 사용하여 조정 기능을 호출합니다.

3단계: 조정 정책 테스트

설정을 마친 후, 조정 정책이 작동하는지 확인합니다. SQS 대기열의 메시지 수를 늘린 다음 Auto Scaling 그룹에서 추가 EC2 인스턴스를 시작했는지 확인하여 테스트할 수 있습니다. 또한 SQS 대기열의 메시지 수를 줄인 다음 Auto Scaling 그룹에서 EC2 인스턴스를 해지했는지 확인하여 테스트할 수 있습니다.

스케일 아웃 기능을 테스트하려면
  1. 대기열에 메시지를 추가하려면 Amazon SQS 표준 대기열 생성 및 메시지 전송 또는 Amazon SQS FIFO 대기열 생성 및 메시지 전송의 단계를 따릅니다. 인스턴스당 백로그 지표가 목표값을 초과하도록 대기열의 메시지 수를 늘려야 합니다.

    변경 사항에 따라 경보를 호출하기까지 몇 분 정도 걸릴 수 있습니다.

  2. describe-auto-scaling-groups 명령을 사용하여 그룹에서 인스턴스를 시작했는지 확인합니다.

    aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name my-asg
스케일 인 기능을 테스트하려면
  1. 대기열에서 메시지를 삭제하려면 메시지 받기 및 삭제(콘솔)의 단계를 따릅니다. 인스턴스당 백로그 지표가 목표값 미만이 되도록 대기열의 메시지 수를 줄여야 합니다.

    변경 사항에 따라 경보를 호출하기까지 몇 분 정도 걸릴 수 있습니다.

  2. describe-auto-scaling-groups 명령을 사용하여 그룹에서 인스턴스를 해지했는지 확인합니다.

    aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name my-asg