Escalado de clústeres para Memcached bajo demanda - Amazon ElastiCache

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Escalado de clústeres para Memcached bajo demanda

ElastiCache for Memcached ofrece un servicio de almacenamiento en caché en memoria totalmente gestionado que implementa, opera y escala verticalmente Memcached en la nube.AWS

Escalado vertical bajo demanda

Gracias a su escalado vertical, Memcached ofrece un sistema de almacenamiento en caché de memoria distribuida de alto rendimiento que se utiliza ampliamente ElastiCache para acelerar las aplicaciones dinámicas al reducir la carga de las bases de datos. Los datos y objetos se almacenan en la RAM, lo que reduce la necesidad de leer orígenes de datos externos.

Puede aplicar el escalado vertical tanto a los clústeres basados en nodos existentes como a los nuevos. Esto puede proporcionar flexibilidad a la hora de asignar recursos, lo que permite a los usuarios adaptarse de manera eficiente a las cargas de trabajo cambiantes sin tener que alterar la arquitectura del clúster. Esta capacidad de escalado mejora el rendimiento al aumentar la capacidad de caché durante los períodos de alta demanda y reducirla verticalmente para optimizar los costos durante los períodos de poca demanda. Además, simplifica las operaciones, elimina la necesidad de crear nuevos clústeres para satisfacer los cambios en los requisitos de los recursos y permite responder rápidamente a las fluctuaciones del tráfico. En general, el escalado vertical de los clústeres basados en nodos para Memcached puede ayudar a aumentar la rentabilidad, mejorar la utilización de los recursos e incluso permitir a los usuarios cambiar el tipo de instancia de Memcached. Todo ello facilita a los usuarios alinear su infraestructura de almacenamiento en caché con las necesidades reales de las aplicaciones.

nota
  • Las modificaciones del tipo de nodo solo están disponibles para los clústeres de Memcached basados en nodos con la versión 1.5 o posterior del motor.

  • La detección automática debe estar habilitada para poder utilizar el escalado vertical.

Configuración del escalado vertical bajo demanda para clústeres de Memcached basados en nodos

Puede configurar el escalado vertical bajo demanda para Memcached con scale-config, que contiene dos parámetros:

  1. ScaleIntervalMinutes: Tiempo (en minutos) entre el escalado de los lotes durante el proceso de actualización de Memcached

  2. ScalePercentage: Porcentaje de nodos que se escalarán simultáneamente durante el proceso de actualización de Memcached

Conversión de un tipo de nodo de Memcached existente en una caché que pueda escalarse verticalmente desde la CLI

Para convertir un clúster basado en nodos de Memcached existente en una caché que pueda escalarse verticalmente, puede usar elasticache modify-cache-cluster en 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

Configuración del escalado vertical con la CLI

Para configurar el escalado vertical de un clúster de Memcached basado en nodos mediante la CLI, utilice elasticache modify-cache-cluster con scale-config y sus parámetros ScalePercentage y ScaleIntervalMinutes.

  • scale-interval-minutes: Define el tiempo (en minutos) entre el escalado de los lotes. Este valor puede definirse entre 2 y 30 minutos. Si no se especifica ningún valor, se utiliza el valor predeterminado de 5 minutos.

  • scale-percentage: especifica el porcentaje de nodos que se escalará simultáneamente en cada lote. Este ajuste puede definirse entre 10 y 100 minutos. El valor se redondea al alza al dividir, por lo que si, por ejemplo, el resultado es 49,5, se aplica una configuración de 50. Si no se especifica ningún valor, se utiliza el valor predeterminado de 20.

Estas opciones de configuración le permitirán refinar el proceso de escalado de acuerdo con sus necesidades específicas, estableciendo un equilibro entre minimizar las interrupciones del clúster y optimizar la velocidad de escalado. El parámetro scale-config solo se aplicará a los tipos de motor de Memcached y se omitirá en el caso de otros motores de caché, lo que garantizará la compatibilidad con el uso de las API existente en otros clústeres.

Llamada a la 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

Resultado:

Devuelve el ID del clúster y el cambio pendiente.

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

Enumeración de la configuración de escalado vertical de su caché de Memcached

Puede recuperar las opciones de escalado de sus cachés de Memcached y ver cuáles son sus opciones actuales de escalado vertical.

Llamada a la API

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

Resultado:

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

Escalado vertical para Memcached con Consola de administración de AWS

Siga estos pasos para utilizar el Consola de administración de AWS para convertir un clúster de Memcached basado en nodos en un clúster escalable verticalmente.

  1. Inicie sesión en Consola de administración de AWS y abra la consola en. ElastiCache https://console.aws.amazon.com/elasticache/

  2. Seleccione el clúster de Memcached que desee convertir.

  3. Seleccione la pestaña Modificar.

  4. Vaya a la sección Configuración de la caché y seleccione el tipo de nodo deseado.

  5. Seleccione Vista previa de los cambios y revise los cambios.

  6. Seleccione Modificar.

Escalado horizontal automatizado para Memcached

ElastiCache ahora se integra con el servicio AWS Application Auto Scaling (AAS) para incluir el escalado horizontal automatizado para los clústeres de Memcached. Puede definir políticas de escalado a través del servicio AWS Application Auto Scaling y ajustar automáticamente la cantidad de nodos en los clústeres de Memcached según sea necesario, en función de métricas o planificaciones predefinidas.

nota

El escalado horizontal automatizado no está disponible actualmente en las regiones de Pekín y Ningxia.

Estos son los métodos disponibles para escalar automáticamente de forma horizontal los clústeres basados en nodos.

  • Escalado programado: el escalado basado en una programación le permite definir su propia programación de escalado para los cambios en las cargas predecibles. Por ejemplo, cada semana el tráfico de su aplicación web empieza a aumentar los miércoles, sigue siendo alto el jueves y comienza a disminuir el viernes. Puede configurar el escalado automático para aumentar la capacidad los miércoles y reducirla los viernes.

  • Seguimiento de destinos: las políticas de escalado de seguimiento de destinos le permiten elegir una métrica de escalado y establecer un valor de destino. Application Auto Scaling crea y administra las CloudWatch alarmas que activan la política de escalado y calcula el ajuste de escalado en función de la métrica y el valor objetivo. La política de escalado amplía o reduce la capacidad en función de las necesidades para mantener la métrica en el valor objetivo especificado o en un valor próximo.

Cómo configurar el escalado horizontal para un clúster de Memcached basado en nodos mediante la CLI

Al escalar horizontalmente un clúster de Memcached basado en nodos, puede utilizar una política de seguimiento de destinos, una política programada o ambas.

  1. Registro de un recurso como destino escalable

    Llame a la RegisterScalableTarget API en AWS Application Auto Scaling para registrar el objetivo de la dimensión escalableelasticache: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. Creación de una política de escalado de seguimiento de destino

    A continuación, puede crear una política de escalado de seguimiento de destino para el recurso llamando a la API de la política de escalado.

  3. Métrica predefinida

    A continuación se muestra una política que aplica el escalado a la dimensión del nodo de caché con la métrica predefinida ElastiCacheCPUUtilization, establecida en 50 para el clúster test-cluster-1. Al eliminar nodos para reducirlos horizontalmente, se borran los últimos n nodos.

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

    Salida:

    { "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. Métrica personalizada

    También puede establecer una política de escalado en función de la dimensión usando un porcentaje personalizado que se base en la métrica de 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. Acciones programadas

    Cuando tenga que escalar horizontalmente para un evento determinado y, después, reducir horizontalmente, puede crear dos acciones programadas llamando a la API PutScheduledAction.

    Política 1: escalado horizontal

    El comando at en --schedule programa la acción que se va a ejecutar una sola vez en una fecha y hora específicas en el futuro. El campo de programación también admite frecuencias (minuto, hora, día, etc.) y cron (para la expresión cron).

    En la fecha y la hora especificadas, Escalado automático de aplicaciones actualiza los valores MinCapacity y MaxCapacity. Application Auto Scaling se amplía MinCapacity hasta situar los nodos de caché en 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", }

    Política 2: reducción horizontal

    En la fecha y la hora especificadas, Escalado automático de aplicaciones actualiza los valores MinCapacity y MaxCapacity de la tabla y reduce horizontalmente a MaxCapacity para devolver los nodos de caché 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. Visualización de las actividades de escalado

    Puede ver las actividades de escalado mediante la API DescribeScalingActivities.

    API: ApplicationAutoScaling. DescribeScalingActivities

    Salida:

    { "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. Edición o eliminación de la política de escalado

    Para editar o eliminar políticas, vuelva a llamar a la API PutScalingPolicy o llame a la acción DeleteScalingPolicy o DeleteScheduled.

  8. Anulación del registro de los destinos escalables

    Puede anular el registro del destino escalable a través de la API DeregisterScalableTarget. Al anular el registro de un destino escalable, se eliminan las políticas de escalado y las acciones programadas asociadas a él.

    API: ApplicationAutoScaling. DeregisterScalableTarget

    Input:

    { "ResourceId": "elasticache/cache-cluster/test-cluster-1", "ServiceNamespace": "elasticache", "ScalableDimension": "elasticache:cache-cluster:Nodes" }
  9. Limpieza de las políticas de escalado

  10. Políticas de escalado múltiple

    Puede crear varias políticas de escalado. A continuación, se muestran los principales comentarios sobre el comportamiento del Seguimiento de destinos de escalado automático.

    • Puede tener varias políticas de escalado de seguimiento de destino para un destino escalable, siempre que cada una de ellas utilice una métrica diferente.

    • El objetivo de Auto Scaling de aplicaciones siempre es dar prioridad a la disponibilidad, por lo que su comportamiento varía en rol de si las políticas de seguimiento de destino están listas para el escalado horizontal o reducción horizontal. Realizará un escalado ascendente del destino escalable si cualquiera de las políticas de seguimiento de destino está lista para el escalado ascendente, pero solo realizará el escalado descendente si todas las políticas de seguimiento de destino (que tienen la parte de escalado descendente habilitada) están listas para el escalado descendente.

    • Si varias políticas indican al destino escalable que escale horizontalmente o reduzca horizontalmente al mismo tiempo, Auto Scaling de aplicaciones se escala en función de la política que proporciona la mayor capacidad para escalar horizontalmente y reducir horizontalmente Esto brinda una mayor flexibilidad para abordar diferentes situaciones y garantizar que siempre haya capacidad suficiente para procesar las cargas de trabajo de la aplicación.

    nota

    AWS Application Auto Scaling no aplica políticas de escalado de colas. El escalado automático de aplicaciones esperará a que se complete el primer escalado, luego descansará y, a continuación, repetirá el algoritmo anterior.

Escale automáticamente y de forma horizontal un clúster de Memcached basado en nodos mediante el Consola de administración de AWS

Siga estos pasos para utilizar el Consola de administración de AWS para convertir un clúster de Memcached existente basado en nodos en un clúster escalable horizontalmente.

  1. Inicie sesión en Consola de administración de AWS y abra la consola en. ElastiCache https://console.aws.amazon.com/elasticache/

  2. Seleccione la caché de Memcached que desee convertir.

  3. Vaya a la pestaña Escalado automático.

  4. Para elegir la política de escalado que desee aplicar, seleccione Agregar escalado dinámico o Agregar escalado programado.

  5. Rellene los detalles de la política seleccionada según sea necesario.

  6. Haga clic en Crear.