Memcached의 클러스터의 온디맨드 스케일링 - Amazon ElastiCache

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

Memcached의 클러스터의 온디맨드 스케일링

ElastiCache for Memcached는AWS클라우드에서 Memcached를 배포, 운영 및 수직 확장하는 완전 관리형 인 메모리 캐싱 서비스를 제공합니다.

온디맨드 수직적 스케일링

수직적 스케일링을 통해 ElastiCache for Memcached는 데이터베이스 로드를 완화하여 동적 애플리케이션의 속도를 높이는 데 널리 사용되는 고성능 분산 메모리 캐싱 시스템을 제공합니다. RAM에 데이터와 객체를 저장하므로 외부 데이터 소스에서 읽을 필요가 줄어듭니다.

기존 노드 기반 클러스터와 새 클러스터에 수직적 스케일링을 적용할 수 있습니다. 이를 통해 리소스 할당의 유연성을 제공하여 사용자가 클러스터 아키텍처를 변경하지 않고도 변화하는 워크로드에 효율적으로 적응할 수 있습니다. 이러한 규모 조정 기능은 수요가 많은 기간에는 캐시 용량을 늘리고 수요가 적은 기간에는 비용을 최적화하도록 스케일 다운하여 성능을 개선합니다. 이렇게 하면 작업이 간소화되고, 리소스 요구 사항을 이동하기 위해 새 클러스터를 생성할 필요가 없으며, 트래픽 변동에 신속하게 대응할 수 있습니다. 전반적으로 Memcached 노드 기반 클러스터의 수직적 스케일링은 비용 효율성을 높이고 리소스 사용률을 개선하며 사용자가 Memcached 인스턴스 유형을 변경하도록 하는 데 도움이 될 수 있습니다. 이를 통해 사용자는 실제 애플리케이션 요구 사항에 맞게 캐싱 인프라를 더 쉽게 조정할 수 있습니다.

참고
  • 노드 유형 수정은 엔진 버전이 1.5 이상인 노드 기반 Memcached 클러스터에서만 사용할 수 있습니다.

  • 수직적 스케일링을 사용하려면 자동 검색을 활성화해야 합니다.

노드 기반 Memcached 클러스터에 대한 온디맨드 수직적 스케일링 설정

두 개의 파라미터가 포함된 scale-config를 사용하여 Memcached에 대한 온디맨드 수직적 스케일링을 구성할 수 있습니다.

  1. ScaleIntervalMinutes: Memcached 업그레이드 프로세스 중 조정 배치 간 시간(분)

  2. ScalePercentage: Memcached 업그레이드 프로세스 중에 동시에 규모를 조정할 노드의 백분율

기존 Memcached 노드 유형을 CLI를 통해 수직적으로 스케일링할 수 있는 캐시로 변환

기존 Memcached 노드 기반 클러스터를 수직적으로 스케일링할 수 있는 캐시로 변환하려면 CLI를 통해elasticache modify-cache-cluster를 사용할 수 있습니다.

aws elasticache modify-cache-cluster \ --cache-cluster-id <your-cluster-id> \ --cache-node-type <new-node-type> \ --scale-config <scale-config> \ --apply-immediately

CLI를 사용하여 수직적 스케일링 설정

CLI를 통해 노드 기반 Memcached 클러스터에 대한 수직적 스케일링을 설정하려면 scale-config 및 해당 파라미터 ScalePercentageScaleIntervalMinutes와 함께 elasticache modify-cache-cluster를 사용합니다.

  • scale-interval-minutes: 조정 배치 간의 시간(분)을 정의합니다. 이 설정의 범위는 2~30분입니다. 값을 지정하지 않으면 기본값으로 5분이 적용됩니다.

  • scale-percentage: 각 배치에서 동시에 규모를 조정할 노드의 비율을 지정합니다. 이 설정의 범위는 10~100입니다. 분할 시 설정이 반올림되므로 예를 들어 결과가 49.5인 경우 50의 설정이 적용됩니다. 값을 지정하지 않으면 기본값으로 20이 적용됩니다.

이러한 구성 옵션을 사용하면 특정 요구 사항에 따라 스케일링 프로세스를 미세 조정하여 클러스터 중단을 최소화하고 스케일링 속도를 최적화할 수 있습니다. scale-config 파라미터는 Memcached 엔진 유형에만 적용되며 다른 캐시 엔진에는 무시되므로 다른 클러스터의 기존 API 사용과 이전 버전과의 호환성이 보장됩니다.

API 직접 호출

aws elasticache modify-cache-cluster \ --cache-cluster-id <your-cluster-id> \ --cache-node-type <new-node-type> \ --scale-config '{ "ScalePercentage": 30, "ScaleIntervalMinutes": 2 }' --apply-immediately

결과:

클러스터 ID와 보류 중인 변경 사항을 반환합니다.

{ "CacheCluster": { "CacheNodeType": "old_insance_type", ... ... "PendingModifiedValues": { "CacheNodeType": "new_instance_type" }, } }

Memcached 캐시 수직적 스케일링 설정 나열

Memcached 캐시에 대한 조정 옵션을 검색하고 수직적 스케일링에 대한 현재 옵션을 확인할 수 있습니다.

API 직접 호출

aws elasticache list-allowed-node-type-modifications --cache-cluster-id <your-cluster-id>

결과:

{ "ScaleUpModifications": [ "cache.x.xxxx", "cache.x.xxxx" ], "ScaleDownModifications": [ "cache.x.xxxx", "cache.x.xxxx", "cache.x.xxxx" ] }

를 사용한 Memcached의 수직 조정AWS Management Console

다음 단계에 따라를 사용하여 노드 기반 Memcached 클러스터를 수직 확장 가능 클러스터로AWS Management Console변환합니다.

  1. 에 로그인AWS Management Console하고 https://console.aws.amazon.com/elasticache/ ElastiCache 콘솔을 엽니다.

  2. 변환할 Memcached 클러스터를 선택합니다.

  3. 수정 탭을 선택합니다.

  4. 캐시 설정 섹션으로 이동하여 원하는 노드 유형을 선택합니다.

  5. 변경 사항 미리 보기를 선택하고 변경 사항을 검토합니다.

  6. 수정을 선택합니다.

Memcached의 자동 수평적 스케일링

이제 ElastiCache는AWS Application Auto Scaling(AAS) 서비스와 통합되어 Memcached 클러스터에 대한 자동 수평 조정을 포함합니다.AWS Application Auto Scaling 서비스를 통해 조정 정책을 정의하고 사전 정의된 지표 또는 일정에 따라 필요에 따라 Memcached 클러스터의 노드 수를 자동으로 조정할 수 있습니다.

참고

현재 베이징 및 닝샤 리전에서는 자동 수평적 스케일링을 사용할 수 없습니다.

다음은 노드 기반 클러스터에 자동 수평적 스케일링을 수행하는 데 사용할 수 있는 방법입니다.

  • 예약된 스케일링: 일정을 기반으로 스케일링을 수행하면 예측 가능한 로드 변경에 맞게 스케일링 일정을 설정할 수 있습니다. 예를 들어, 매주 수요일에 웹 애플리케이션에 대한 트래픽이 증가하고 목요일까지 높은 상태로 유지되다가 금요일이 줄어들기 시작합니다. Auto Scaling이 수요일에 용량을 늘리고 금요일에 용량을 줄이도록 구성할 수 있습니다.

  • 대상 추적: 대상 추적 스케일링 정책을 사용하는 경우 스케일링 지표를 선택하고 대상 값을 설정합니다. Application Auto Scaling은 스케일링 정책을 트리거하는 CloudWatch 경보를 생성 및 관리하고 지표와 대상 값을 기준으로 스케일링 조절을 계산합니다. 스케일링 정책은 필요에 따라 용량을 추가하거나 제거하여 지표를 지정한 목푯값으로, 혹은 목표 값에 가깝게 유지합니다.

CLI를 통해 노드 기반 Memcached 클러스터에 대한 수평적 스케일링을 설정하는 방법

노드 기반 Memcached 클러스터를 수평적으로 스케일링하는 경우 대상 추적 정책, 예약된 정책 또는 둘 다를 사용할 수 있습니다.

  1. 리소스를 확장 가능 대상으로 등록

    AWS Application Auto Scaling에서 RegisterScalableTarget API를 호출하여 확장 가능한 차원에 대한 대상을 등록합니다elasticache:cache-cluster:Nodes.

    API: ApplicationAutoScaling.RegisterScalableTarget

    입력:

    { "ScalableDimension": "elasticache:cache-cluster:Nodes", "ResourceId": "cache-cluster/test-cluster-1", "ServiceNamespace": "elasticache", "MinCapacity": 20, "MaxCapacity": 50 }
  2. 대상 추적 스케일링 정책 생성

    다음으로 put 스케일링 정책 API를 직접 호출하여 리소스에 대한 대상 추적 스케일링 정책을 생성할 수 있습니다.

  3. 사전 정의된 지표

    다음은 클러스터 test-cluster-1에 대해 50으로 설정된 사전 정의된 지표 ElastiCacheCPUUtilization을 사용하여 캐시 노드의 차원에 따라 규모가 조정되는 정책입니다. 스케일 인을 위해 노드를 삭제하면 마지막 n개의 노드가 제거됩니다.

    API: ApplicationAutoScaling.PutScalingPolicy

    입력:

    { "PolicyName": "cpu50-target-tracking-scaling-policy", "PolicyType": "TargetTrackingScaling", "TargetTrackingScalingPolicyConfiguration": { "TargetValue": 50, "PredefinedMetricSpecification": { "PredefinedMetricType": "ElastiCacheCPUUtilization" }, "ScaleOutCooldown": 600, "ScaleInCooldown": 600 }, "ServiceNamespace": "elasticache", "ScalableDimension": "elasticache:cache-cluster:Nodes", "ResourceId": "cache-cluster/test-cluster-1" }

    출력:

    { "PolicyARN": "arn:aws:autoscaling:us-west-2:012345678910:scalingPolicy:6d8972f3-efc8-437c-92d1-6270f29a66e7:resource/elasticache/cache-cluster/test-cluster-1:policyName/cpu50-target-tracking-scaling-policy", "Alarms": [ { "AlarmARN": "arn:aws:cloudwatch:us-west-2:012345678910:alarm:TargetTracking-elasticache/cache-cluster/test-cluster-1-AlarmHigh-d4f0770c-b46e-434a-a60f-3b36d653feca", "AlarmName": "TargetTracking-elasticache/cache-cluster/test-cluster-1-AlarmHigh-d4f0770c-b46e-434a-a60f-3b36d653feca" }, { "AlarmARN": "arn:aws:cloudwatch:us-west-2:012345678910:alarm:TargetTracking-elasticache/cache-cluster/test-cluster-1-AlarmLow-1b437334-d19b-4a63-a812-6c67aaf2910d", "AlarmName": "TargetTracking-elasticache/cache-cluster/test-cluster-1-AlarmLow-1b437334-d19b-4a63-a812-6c67aaf2910d" } ] }
  4. 사용자 지정 지표

    Cloudwatch 지표를 기반으로 하는 사용자 지정 백분율을 사용하여 차원에 대한 스케일링 정책을 설정할 수도 있습니다.

    입력:

    { "PolicyName": "cpu50-target-tracking-scaling-policy", "PolicyType": "TargetTrackingScaling", "TargetTrackingScalingPolicyConfiguration": { "CustomizedMetricSpecification": { "Dimensions": [ { "Name": "MyMetricDimension", "Value": "DimensionValue" } ], "MetricName": "MyCustomMetric", "Namespace": "MyNamespace", "Statistic": "Average", "Unit": "Percent" }, "TargetValue": 40, "ScaleOutCooldown": 600, "ScaleInCooldown": 600 }, "ServiceNamespace": "elasticache", "ScalableDimension": "elasticache:cache-cluster:Nodes", "ResourceId": "cache-cluster/test-cluster-1" }
  5. 예약된 작업

    특정 이벤트에 대해 스케일 아웃한 다음 이벤트 후에 스케일 인해야 하는 경우 PutScheduledAction API를 직접 호출하여 2개의 예약된 작업을 생성할 수 있습니다.

    정책 1: 스케일 아웃

    --schedule 일정의 at 명령은 미래의 지정된 날짜 및 시간에 한 번 실행되도록 작업을 예약합니다. 일정 필드는 rate(분, 시간, 일 등) 및 cron(cron 표현식)도 지원합니다.

    지정된 날짜 및 시간이 되면 Application Auto Scaling이 MinCapacityMaxCapacity 값을 업데이트합니다. Application Auto Scaling은 캐시 노드를 70으로 설정하기 위해 MinCapacity로 스케일 아웃합니다.

    API: ApplicationAutoScaling.PutScheduledAction

    입력:

    { "ResourceId": "elasticache:ache-cluster:test-cluster-1", "ScalableDimension": "elasticache:cache-cluster:Nodes", "ScalableTargetAction": { "MaxCapacity": 100, "MinCapacity": 70 }, "Schedule": "at(2020-05-20T17:05:00)", "ScheduledActionName": "ScalingOutScheduledAction", "ServiceNamespace": "elasticache", }

    정책 2: 스케일 인

    지정된 날짜 및 시간이 되면 Application Auto Scaling이 테이블의 MinCapacityMaxCapacity를 업데이트하고 MaxCapacity로 스케일 인하여 캐시 노드를 60으로 돌려놓습니다.

    API: ApplicationAutoScaling.PutScheduledAction

    입력:

    { "ResourceId": "elasticache:cache-cluster:test-cluster-1", "ScalableDimension": "elasticache:cache-cluster:Nodes", "ScalableTargetAction": { "MaxCapacity": 60, "MinCapacity": 40 }, "Schedule": "at(2020-05-21T17:05:00)", "ScheduledActionName": "ScalingInScheduledAction", "ServiceNamespace": "elasticache", }
  6. 스케일링 활동 보기

    DescribeScalingActivities API를 사용하여 스케일링 활동을 볼 수 있습니다.

    API: ApplicationAutoScaling.DescribeScalingActivities

    출력:

    { "ScalingActivities": [ { "ScalableDimension": "elasticache:elasticache:DesiredCount", "Description": "Setting desired count to 30.", "ResourceId": "elasticache/cache-cluster/test-cluster-1", "ActivityId": "4d759079-a31f-4d0c-8468-504c56e2eecf", "StartTime": 1462574194.658, "elasticacheNamespace": "elasticache", "EndTime": 1462574276.686, "Cause": "monitor alarm TargetTracking-elasticache/cache-cluster/test-cluster-1-AlarmHigh-d4f0770c-b46e-434a-a60f-3b36d653feca in state ALARM triggered policy cpu50-target-tracking-scaling-policy", "StatusMessage": "Failed to set desired count to 30", "StatusCode": "Failed" }, { "ScalableDimension": "elasticache:elasticache:DesiredCount", "Description": "Setting desired count to 25.", "ResourceId": "elasticache/cache-cluster/test-cluster-1", "ActivityId": "90aff0eb-dd6a-443c-889b-b809e78061c1", "StartTime": 1462574254.223, "elasticacheNamespace": "elasticache", "EndTime": 1462574333.492, "Cause": "monitor alarm TargetTracking-elasticache/cache-cluster/test-cluster-1-AlarmHigh-d4f0770c-b46e-434a-a60f-3b36d653feca in state ALARM triggered policy cpu50-target-tracking-scaling-policy", "StatusMessage": "Successfully set desired count to 25. Change successfully fulfilled by elasticache.", "StatusCode": "Successful" } ] }
  7. 스케일링 정책 편집/삭제

    PutScalingPolicy API를 다시 직접 호출하거나 DeleteScalingPolicy 또는 DeleteScheduled 작업을 직접 호출하여 정책을 편집하거나 삭제할 수 있습니다.

  8. 스케일링 가능 대상 등록 취소

    DeregisterScalableTarget API를 통해 스케일링 가능 대상의 등록을 취소할 수 있습니다. 스케일링 가능 대상을 등록 취소하면 스케일링 정책과 이와 연결된 예약된 작업이 삭제됩니다.

    API: ApplicationAutoScaling.DeregisterScalableTarget

    입력:

    { "ResourceId": "elasticache/cache-cluster/test-cluster-1", "ServiceNamespace": "elasticache", "ScalableDimension": "elasticache:cache-cluster:Nodes" }
  9. 스케일링 정책 정리

  10. 여러 스케일링 정책

    여러 스케일링 정책을 생성할 수 있습니다. 다음은 Auto Scaling 대상 추적의 동작에 대한 주요 콜아웃입니다.

    • 각각 다른 지표를 사용한다는 전제하에 확장 가능한 대상에 대해 다수의 대상 추적 스케일링 정책을 보유할 수 있습니다.

    • Application Auto Scaling은 항상 가용성을 우선시하므로, 대상 추적 정책이 확장 또는 축소를 허용하는지에 따라 그 동작이 달라집니다. 대상 추적 정책 중 하나라도 확장을 허용할 경우 확장 가능한 대상을 확장하지만 모든 대상 추적 정책(축소 부분이 활성화됨)이 축소를 허용하는 경우에만 대상을 축소합니다.

    • 여러 정책이 확장 가능한 대상에 확장 또는 축소를 동시에 지시하는 경우 Application Auto Scaling은 축소와 확장 모두에 대해 가장 큰 용량을 제공하는 정책에 따라 조정합니다. 이로써 다양한 시나리오를 수용할 만큼 폭넓은 유연성을 발휘할 뿐만 아니라 애플리케이션 워크로드를 처리하는 데 필요한 용량을 항상 충분히 확보할 수 있습니다.

    참고

    AWS Application Auto Scaling은 조정 정책을 대기열에 추가하지 않습니다. Application Auto Scaling은 첫 번째 스케일링이 완료될 때까지 기다린 다음 휴지 상태로 전환한 다음 위의 알고리즘을 반복합니다.

를 통해 노드 기반 Memcached 클러스터를 자동으로 수평적으로 조정AWS Management Console

다음 단계에 따라AWS Management Console를 사용하여 기존 노드 기반 Memcached 클러스터를 수평적으로 확장 가능한 클러스터로 변환합니다.

  1. 에 로그인AWS Management Console하고 https://console.aws.amazon.com/elasticache/ ElastiCache 콘솔을 엽니다.

  2. 변환할 Memcached 캐시를 선택합니다.

  3. 자동 크기 조정 탭으로 이동합니다.

  4. 동적 크기 조정 추가 또는 예약된 크기 조정 추가를 선택하여 적용할 조정 정책을 선택합니다.

  5. 필요에 따라 선택한 정책의 세부 정보를 입력합니다.

  6. 생성을 클릭합니다.