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:
ScaleIntervalMinutes: tiempo (en minutos) entre el escalado de los lotes durante el proceso de actualización de Memcached
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.
Inicie sesión en la Consola de administración de AWS y abra la consola de ElastiCache en https://console.aws.amazon.com/elasticache/
. Seleccione el clúster de Memcached que desee convertir.
Seleccione la pestaña Modificar.
Vaya a la sección Configuración de la caché y seleccione el tipo de nodo deseado.
Seleccione Vista previa de los cambios y revise los cambios.
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.
Registro de un recurso como destino escalable
Llame a la API
RegisterScalableTargeten Escalado automático de aplicaciones de AWS para registrar el destino 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 }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.
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" } ] }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" }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
aten--scheduleprograma 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
MinCapacityyMaxCapacity. 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
MinCapacityyMaxCapacityde la tabla y reduce horizontalmente aMaxCapacitypara 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", }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" } ] }Edición o eliminación de la política de escalado
Para editar o eliminar políticas, vuelva a llamar a la API
PutScalingPolicyo llame a la acciónDeleteScalingPolicyoDeleteScheduled.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" }Limpieza de las políticas de escalado
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.
Inicie sesión en la Consola de administración de AWS y abra la consola de ElastiCache en https://console.aws.amazon.com/elasticache/
. Seleccione la caché de Memcached que desee convertir.
Vaya a la pestaña Escalado automático.
Para elegir la política de escalado que desee aplicar, seleccione Agregar escalado dinámico o Agregar escalado programado.
Rellene los detalles de la política seleccionada según sea necesario.
Haga clic en Crear.