Scalabilità per i cluster Memcached - Amazon ElastiCache

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Scalabilità per i cluster Memcached

ElastiCache for Memcached offre un servizio di caching in memoria completamente gestito che implementa, gestisce e ridimensiona verticalmente Memcached nel cloud. AWS

Scalabilità verticale su richiesta

Con la scalabilità verticale, ElastiCache per Memcached fornisce un sistema di caching della memoria distribuito ad alte prestazioni ampiamente utilizzato per velocizzare le applicazioni dinamiche alleviando il carico del database. Memorizza dati e oggetti nella RAM, riducendo la necessità di leggere da fonti di dati esterne.

È possibile utilizzare ElastiCache i cluster progettati internamente da Memcached per la scalabilità verticale. È possibile applicare la scalabilità verticale ai cluster esistenti e a quelli nuovi. Ciò può fornire flessibilità nell'allocazione delle risorse, consentendo agli utenti di adattarsi in modo efficiente ai carichi di lavoro in evoluzione senza alterare l'architettura del cluster. Questa capacità di scalabilità migliora le prestazioni aumentando la capacità della cache nei periodi di alta domanda e riducendola per ottimizzare i costi nei periodi di bassa domanda. Ciò semplifica le operazioni, elimina la necessità di creare nuovi cluster per modificare i requisiti di risorse e consente risposte rapide alle fluttuazioni del traffico. Nel complesso, la scalabilità verticale per le cache progettate autonomamente da Memcached può aiutare a migliorare l'efficienza dei costi, migliorare l'utilizzo delle risorse e persino consentire agli utenti di modificare il tipo di istanza Memcached. Tutto ciò consente agli utenti di allineare più facilmente la propria infrastruttura di caching alle effettive esigenze delle applicazioni.

Nota
  • Le modifiche al tipo di cache e nodo progettate autonomamente sono disponibili solo per le versioni 1.5 o successive del motore Memcached.

  • Auto Discovery deve essere abilitato per poter utilizzare il ridimensionamento verticale.

Configurazione del ridimensionamento verticale su richiesta per i cluster Memcached ElastiCache

È possibile configurare la scalabilità verticale su richiesta per Memcached con, che contiene due parametri: scale-config

  1. ScaleIntervalMinutes: Tempo (in minuti) tra i batch di scalabilità durante il processo di aggiornamento di Memcached

  2. ScalePercentage: percentuale di nodi da scalare contemporaneamente durante il processo di aggiornamento di Memcached

Conversione di un tipo di nodo Memcached esistente in una cache scalabile verticalmente tramite la CLI

Per convertire una cache Memcached progettata autonomamente in una cache scalabile verticalmente, puoi utilizzarla tramite elasticache modify-cache-cluster la CLI.

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

Configurazione della scalabilità verticale con la CLI

Per configurare la scalatura verticale per la cache progettata autonomamente da Memcached tramite la CLI, usa elasticache modify-cache-cluster with e i suoi parametri e. scale-config ScalePercentage ScaleIntervalMinutes

  • scale-interval-minutes: definisce il tempo (in minuti) tra i batch di ridimensionamento. Questa impostazione può variare da 2 a 30 minuti. Se non viene specificato alcun valore, viene applicato il valore predefinito di 5 minuti.

  • scale-percentage: specifica la percentuale di nodi da scalare contemporaneamente in ogni batch. Questa impostazione può variare da 10 a 100. L'impostazione viene arrotondata per eccesso quando si divide, quindi ad esempio se il risultato è 49,5 viene applicata un'impostazione di 50. Se non viene specificato alcun valore, viene applicato il valore predefinito 20.

Queste opzioni di configurazione vi consentiranno di ottimizzare il processo di scalabilità in base alle vostre esigenze specifiche, bilanciando tra la riduzione al minimo delle interruzioni del cluster e l'ottimizzazione della velocità di scalabilità. Il parametro scale-config sarà applicabile solo ai tipi di motori Memcached e verrà ignorato per gli altri motori di cache, garantendo la retrocompatibilità con l'utilizzo delle API esistenti per altri cluster.

Chiamata 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

Risultato:

Restituisce l'ID del cluster di cache e la modifica in sospeso.

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

Elenca le impostazioni di ridimensionamento verticale della cache Memcached

Puoi recuperare le opzioni di ridimensionamento per le tue cache Memcached e vedere quali sono le opzioni correnti per il ridimensionamento verticale.

Chiamata API

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

Risultato:

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

Ridimensionamento verticale per Memcached con AWS Management Console

Per convertire una cache esistente progettata da Memcached in una cache scalabile verticalmente attraverso il, segui questi passaggi. https://console.aws.amazon.com/elasticache/

  1. Accedi a AWS Management Console e apri la console all'indirizzo. ElastiCache https://console.aws.amazon.com/elasticache/

  2. Seleziona la cache Memcached da convertire.

  3. Seleziona la scheda Modifica.

  4. Vai alla sezione Impostazioni cache e seleziona il tipo di nodo desiderato.

  5. Seleziona Anteprima delle modifiche e rivedi le modifiche.

  6. Selezionare Modify (Modifica).

Scalabilità orizzontale automatizzata per Memcached

ElastiCache ora si integra con il servizio AWS Application Auto Scaling (AAS) per includere la scalabilità orizzontale automatizzata per i cluster Memcached. È possibile definire policy di scalabilità tramite il servizio AWS Application Auto Scaling e regolare automaticamente il numero di nodi nei cluster Memcached secondo necessità, in base a metriche o pianificazioni predefinite.

Nota

La scalabilità orizzontale automatizzata non è attualmente disponibile nelle regioni di Pechino e Ningxia.

Questi sono i metodi disponibili per scalare automaticamente orizzontalmente le cache progettate autonomamente.

  • Scalabilità pianificata: la scalabilità basata su una pianificazione consente di impostare una pianificazione di ridimensionamento personalizzata per modifiche prevedibili del carico. Ad esempio, ogni settimana il traffico verso l'applicazione Web inizia ad aumentare di mercoledì, rimane elevato di giovedì e inizia a scendere di venerdì. È possibile configurare Auto Scaling per aumentare la capacità il mercoledì e diminuirla il venerdì.

  • Tracciamento degli obiettivi: con le politiche di scalabilità del tracciamento degli obiettivi, scegli una metrica di scalabilità e imposti un valore obiettivo. Application Auto Scaling crea e gestisce gli CloudWatch allarmi che attivano la politica di scalabilità e calcola la regolazione della scalabilità in base alla metrica e al valore target. La policy di dimensionamento aggiunge o rimuove la capacità in base alle necessità, per mantenere il parametro al valore di destinazione specificato o vicino a esso.

Come configurare la scalabilità orizzontale per una cache autoprogettata ElastiCache per Memcached tramite la CLI

Per la scalabilità orizzontale con ElastiCache Memcached, puoi avere una policy di tracciamento degli obiettivi, una policy pianificata o entrambe.

  1. Registra una risorsa come obiettivo scalabile

    Chiama l'RegisterScalableTargetAPI in AWS Application Auto Scaling per registrare la destinazione per la dimensione scalabile. elasticache:cache-cluster:Nodes

    API:. ApplicationAutoScaling RegisterScalableTarget

    Input:

    { "ScalableDimension": "elasticache:cache-cluster:Nodes", "ResourceId": "cache-cluster/test-cluster-1", "ServiceNamespace": "elasticache", "MinCapacity": 20, "MaxCapacity": 50 }
  2. Crea una politica di ridimensionamento del tracciamento di Target

    Successivamente, puoi creare una politica di ridimensionamento di tracciamento di destinazione per la risorsa chiamando l'API put scaling policy.

  3. Metrica predefinita

    Di seguito è riportata una politica scalabile in base alla dimensione del nodo di cache, utilizzando la metrica predefinita ElastiCacheCPUUtilization, impostata su 50 per il cluster di cache test-cluster-1. Quando si eliminano i nodi per la scalabilità in, verranno rimossi gli ultimi n nodi.

    API:. ApplicationAutoScaling PutScalingPolicy

    Input:

    { "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" }

    Output:

    { "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. Metrica personalizzata

    Puoi anche impostare una politica di scalabilità sulla dimensione utilizzando una percentuale personalizzata basata sulla metrica di Cloudwatch.

    Input:

    { "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. Operazioni pianificate

    Quando devi scalare orizzontalmente per un particolare evento e poi ampliarlo dopo l'evento, puoi creare due azioni pianificate chiamando l'API. PutScheduledAction

    Politica 1: Scalabilità orizzontale

    Il at comando in --schedule pianifica l'esecuzione dell'azione una sola volta in una data e ora specificate nelle future. Il campo schedulazione supporta anche rate (minute, hour, day ecc.) e cron (per l'espressione cron).

    Alla data e all'ora specificate, Application Auto Scaling aggiorna i valori MinCapacity e MaxCapacity. Application Auto Scaling è scalabile fino a MinCapacity portare i nodi della cache a 70.

    API:. ApplicationAutoScaling PutScheduledAction

    Input:

    { "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", }

    Politica 2: Scalabilità

    Alla data e all'ora specificate, Application Auto Scaling aggiorna la tabella MinCapacity e MaxCapacity la scala in modo da riportare i nodi della cache MaxCapacity a 60.

    API:. ApplicationAutoScaling PutScheduledAction

    Input:

    { "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. Visualizza le attività di scalabilità

    È possibile visualizzare le attività di scalabilità utilizzando l'DescribeScalingActivitiesAPI.

    API: ApplicationAutoScaling. DescribeScalingActivities

    Output:

    { "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. Modifica/elimina la politica di ridimensionamento

    È possibile modificare o eliminare le politiche chiamando nuovamente PutScalingPolicy l'API o DeleteScalingPolicy chiamando o Action. DeleteScheduled

  8. Annulla la registrazione degli obiettivi scalabili

    È possibile annullare la registrazione del target scalabile tramite l'API. DeregisterScalableTarget L'annullamento della registrazione di un target scalabile elimina le politiche di scalabilità e le azioni pianificate ad esso associate.

    API:. ApplicationAutoScaling DeregisterScalableTarget

    Input:

    { "ResourceId": "elasticache/cache-cluster/test-cluster-1", "ServiceNamespace": "elasticache", "ScalableDimension": "elasticache:cache-cluster:Nodes" }
  9. Pulizia delle politiche di scalabilità

  10. Politiche di scalabilità multiple

    È possibile creare più politiche di scalabilità. Di seguito sono riportati i principali richiami al comportamento di Auto Scaling Target Tracking.

    • È possibile avere più policy di dimensionamento del monitoraggio di target per un target scalabile, purché ciascuna di esse utilizzi un parametro diverso.

    • Lo scopo di Application Auto Scaling è sempre quello di assegnare la priorità alla disponibilità, quindi il suo comportamento varia a seconda che le policy di monitoraggio degli obiettivi siano pronte o meno per l'aumento o la riduzione orizzontale. L'obiettivo scalabile viene aumentato se una qualsiasi delle policy di monitoraggio dei target è pronta per l'aumento e viene ridotto solo se tutte le policy di monitoraggio dei target (con la porzione di riduzione abilitata) sono pronte per essere ridotte.

    • Se più policy impongono all'obiettivo scalabile una riduzione o un aumento orizzontale allo stesso tempo, Application Auto Scaling dimensiona in base alla policy che fornisce la capacità massima sia per la riduzione sia per l'aumento orizzontale. Ciò offre maggiore flessibilità per coprire scenari diversi e garantisce che vi sia sempre capacità sufficiente per elaborare i carichi di lavoro delle applicazioni.

    Nota

    AWS Application Auto Scaling non mette in coda le politiche di scalabilità. Application Auto Scaling attenderà il completamento del primo ridimensionamento, quindi si raffredderà e quindi ripeterà l'algoritmo precedente.

Ridimensiona automaticamente orizzontalmente una cache Memcached tramite AWS Management Console

Per convertire una cache Memcached progettata autonomamente da Memcached in una cache scalabile orizzontalmente tramite il, segui questi passaggi. https://console.aws.amazon.com/elasticache/

  1. Accedi a AWS Management Console e apri la console all'indirizzo. ElastiCache https://console.aws.amazon.com/elasticache/

  2. Seleziona la cache Memcached da convertire.

  3. Vai alla scheda Autoscaling.

  4. Seleziona la politica di ridimensionamento da applicare, selezionando Aggiungi ridimensionamento dinamico o Aggiungi ridimensionamento pianificato.

  5. Se necessario, inserisci i dettagli per la politica selezionata.

  6. Fai clic su Create (Crea).