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

Escalado de clústeres para Memcached bajo demanda

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

Escalado vertical bajo demanda

El escalado vertical de ElastiCache para Memcached es un sistema de almacenamiento en caché de memoria distribuido de alto rendimiento que se utiliza ampliamente para acelerar las aplicaciones dinámicas pues alivian la carga de la base 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á de forma simultánea 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 lotes de escalado. 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 la Consola de administración de AWS

Siga estos pasos para utilizar la 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 la Consola de administración de AWS y abra la consola de ElastiCache en 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 está integrado con el servicio Escalado automático de aplicaciones de AWS (AAS) para incluir el escalado horizontal automatizado para los clústeres de Memcached. Puede definir políticas de escalado a través del servicio Escalado automático de aplicaciones de AWS y ajustar automáticamente la cantidad de nodos en los clústeres de Memcached según sea necesario, en función de las métricas o programaciones 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. Auto Scaling de aplicaciones crea y administra las alarmas de CloudWatch que desencadenan la política de escalado y calcula el ajuste de escalado según la métrica y el valor de destino. 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 API RegisterScalableTarget en Escalado automático de aplicaciones de AWS para registrar el destino de la dimensión escalable 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. 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étricas personalizadas

    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. El escalado automático de aplicaciones se escala horizontalmente a MinCapacity para poner 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últiples

    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

    El Escalado automático de aplicaciones de AWS no pone las políticas de escalado en cola. El escalado automático de aplicaciones esperará a que se complete el primer escalado, luego descansará y, a continuación, repetirá el algoritmo anterior.

Escalado horizontal automático de un clúster de Memcached basado en nodos desde la Consola de administración de AWS

Siga estos pasos para utilizar la 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 la Consola de administración de AWS y abra la consola de ElastiCache en 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.