기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon SQS 기반 크기 조정 구성
이 섹션에서는 Amazon Amazon SQS를 기반으로 조정을 구성하는 방법을 설명합니다.
1단계: CloudWatch 사용자 지정 지표 생성
사용자 지정 지표는 지표 이름과 선택한 네임스페이스를 사용하여 정의됩니다. 사용자 지정 지표를 위한 네임스페이스는 AWS/
로 시작할 수 없습니다. 사용자 지정 지표 게시에 대한 자세한 설명은 Amazon CloudWatch 사용자 가이드의 사용자 지정 지표 게시 주제를 참조하세요.
다음 절차에 따라 AWS 먼저 계정에서 정보를 읽어 사용자 지정 지표를 생성합니다. 그런 다음, 앞 섹션 에서 권장한 인스턴스당 백로그 지표를 계산합니다. 마지막으로 이 수치를 1분 단위로 CloudWatch에 게시합니다. 가능하면 시스템 로드 변화에 빠르게 대응할 수 있도록 1분 단위로 지표를 조정하는 것이 좋습니다.
CloudWatch 사용자 지정 지표(AWS CLI)를 생성하려면
-
SQS get-queue-attributes
명령을 사용하여 대기열에서 대기 중인 메시지 수( ApproximateNumberOfMessages
)를 확인합니다.aws sqs get-queue-attributes --queue-url
https://sqs.region.amazonaws.com/123456789/MyQueue
\ --attribute-names ApproximateNumberOfMessages -
describe-auto-scaling-groups
명령을 사용하여 그룹의 실행 용량을 가져올 수 있습니다. 이 용량은 수명 주기 상태가 InService
인 인스턴스 수입니다. 이 명령은 Auto Scaling 그룹의 인스턴스와 해당 수명 주기 상태를 반환합니다.aws autoscaling describe-auto-scaling-groups --auto-scaling-group-names
my-asg
-
대기열에서 검색할 수 있는 대략적인 메시지 수를 그룹의 실행 용량으로 나누어 인스턴스당 백로그를 계산합니다.
-
1분마다 실행되는 스크립트를 만들어 인스턴스당 백로그 값을 검색하고 이를 CloudWatch 사용자 지정 지표에 게시합니다. 사용자 지정 지표를 게시할 때 지표의 이름, 네임스페이스, 단위, 값 및 0개 이상의 차원을 지정합니다. 차원은 차원 이름과 차원 값으로 구성됩니다.
사용자 지정 지표를 게시하려면
이탤릭체
로 표시된 자리 표시자 값을 원하는 지표 이름, 지표의 값, 네임스페이스("AWS
"로 시작하지 않는 한) 및 차원(옵션)으로 바꾼 다음 다음 put-metric-data명령을 실행합니다. aws cloudwatch put-metric-data --metric-name
MyBacklogPerInstance
--namespaceMyNamespace
\ --unit None --value20
--dimensionsMyOptionalMetricDimensionName=MyOptionalMetricDimensionValue
애플리케이션에서 해당 지표를 생성하면 데이터가 CloudWatch로 전송됩니다. 이 지표는 CloudWatch 콘솔에 표시됩니다. 에 로그인 AWS Management Console 하고 CloudWatch 페이지로 이동하여 액세스할 수 있습니다. 그런 다음 지표 페이지로 이동하거나 검색 상자에서 검색하여 지표를 볼 수 있습니다. 자세한 설명은 Amazon CloudWatch 사용자 가이드의 사용 가능한 지표 보기를 참조하세요.
2단계: 대상 추적 조정 정책 생성
이제 생성한 지표를 대상 추적 스케일링 정책에 추가할 수 있습니다.
대상 추적 조정 정책(AWS CLI)을 생성하려면
-
다음
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" } } -
put-scaling-policy
명령과 이전 단계에서 만든 config.json
파일을 사용하여 조정 정책을 생성합니다.aws autoscaling put-scaling-policy --policy-name
sqs100-target-tracking-scaling-policy
\ --auto-scaling-group-namemy-asg
--policy-type TargetTrackingScaling \ --target-tracking-configurationfile://~/config.json
이 정책은 스케일 아웃과 축소에 대해 한 개씩 두 개의 경보를 생성합니다. 또한 CloudWatch에 등록된 정책의 Amazon 리소스 이름(ARN)을 반환합니다. CloudWatch는 지표 임계값이 위반될 때마다 이 이름을 사용하여 조정 기능을 호출합니다.
3단계: 조정 정책 테스트
설정을 마친 후, 조정 정책이 작동하는지 확인합니다. SQS 대기열의 메시지 수를 늘린 다음 Auto Scaling 그룹에서 추가 EC2 인스턴스를 시작했는지 확인하여 테스트할 수 있습니다. 또한 SQS 대기열의 메시지 수를 줄인 다음 Auto Scaling 그룹에서 EC2 인스턴스를 해지했는지 확인하여 테스트할 수 있습니다.
스케일 아웃 기능을 테스트하려면
-
대기열에 메시지를 추가하려면 Amazon SQS 표준 대기열 생성 및 메시지 전송 또는 Amazon SQS FIFO 대기열 생성 및 메시지 전송의 단계를 따릅니다. 인스턴스당 백로그 지표가 목표값을 초과하도록 대기열의 메시지 수를 늘려야 합니다.
변경 사항에 따라 경보를 호출하기까지 몇 분 정도 걸릴 수 있습니다.
-
describe-auto-scaling-groups
명령을 사용하여 그룹에서 인스턴스를 시작했는지 확인합니다. aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name
my-asg
스케일 인 기능을 테스트하려면
-
대기열에서 메시지를 삭제하려면 메시지 받기 및 삭제(콘솔)의 단계를 따릅니다. 인스턴스당 백로그 지표가 목표값 미만이 되도록 대기열의 메시지 수를 줄여야 합니다.
변경 사항에 따라 경보를 호출하기까지 몇 분 정도 걸릴 수 있습니다.
-
describe-auto-scaling-groups
명령을 사용하여 그룹에서 인스턴스를 해지했는지 확인합니다. aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name
my-asg