기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon을 기반으로 스케일링을 구성합니다. SQS
이 섹션에서는 Amazon Amazon을 기반으로 규모 조정을 구성하는 방법을 설명합니다SQS.
1단계: CloudWatch 사용자 지정 지표 생성
사용자 지정 지표는 지표 이름과 선택한 네임스페이스를 사용하여 정의됩니다. 사용자 지정 지표를 위한 네임스페이스는 AWS/
로 시작할 수 없습니다. 사용자 지정 지표 게시에 대한 자세한 내용은 Amazon CloudWatch User Guide의 사용자 지정 지표 게시 주제를 참조하십시오.
이 절차에 따라 먼저 AWS 계정에서 정보를 읽고 사용자 지정 지표를 생성하십시오. 그런 다음, 앞 섹션 에서 권장한 인스턴스당 백로그 지표를 계산합니다. 마지막으로, 이 수치를 1분 단위로 CloudWatch 세분화하여 게시하십시오. 가능하면 시스템 로드 변화에 빠르게 대응할 수 있도록 1분 단위로 지표를 조정하는 것이 좋습니다.
CloudWatch 사용자 지정 지표를 만들려면 ()AWS CLI
-
SQSget-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개 이상의 차원을 지정합니다. 차원은 차원 이름과 차원 값으로 구성됩니다.
사용자 지정 지표를 게시하려면 자리 표시자 값을 다음으로 바꾸십시오.
italics
선호하는 지표 이름, 지표 값, 네임스페이스 ("AWS
“로 시작하지 않는 한) 및 차원 (선택 사항) 을 입력하고 다음 명령을 실행합니다. put-metric-dataaws 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" } } -
이전 단계에서 생성한
config.json
파일과 함께 put-scaling-policy명령을 사용하여 조정 정책을 생성합니다.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
이 정책은 스케일 아웃과 축소에 대해 한 개씩 두 개의 경보를 생성합니다. 또한 등록된 정책의 Amazon Resource Name (ARN) 을 반환하며 CloudWatch, 이 이름을 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