Escalar sob demanda clusters para o Memcached
O ElastiCache para Memcached oferece um serviço de cache em memória totalmente gerenciado que implanta, opera e escala verticalmente o Memcached na nuvem AWS.
Escalabilidade vertical sob demanda
Com escalabilidade vertical, o ElastiCache para Memcached fornece um sistema de cache de memória distribuído de alto desempenho, amplamente usado para acelerar aplicativos dinâmicos, aliviando a carga do banco de dados. Ele armazena dados e objetos na RAM, reduzindo a necessidade de leitura de fontes de dados externas.
Você pode aplicar a escalabilidade vertical aos clusters existentes baseados em nós, bem como aos novos. Isso pode fornecer flexibilidade na alocação de recursos, permitindo que os usuários se adaptem com eficiência às mudanças nas workloads sem alterar a arquitetura do cluster. Essa capacidade de escalar melhora o desempenho aumentando a capacidade do cache durante os períodos de alta demanda e diminuindo a escala para otimizar os custos durante os períodos de baixa demanda. Isso simplifica as operações, elimina a necessidade de criar novos clusters para mudar os requisitos de recursos e permite respostas rápidas às flutuações do tráfego. No geral, a escalabilidade vertical para clusters baseados em nós do Memcached pode ajudar a aumentar a eficiência de custos, melhorar a utilização de recursos e até mesmo permitir que os usuários alterem o tipo de instância do Memcached. Tudo isso facilitando que os usuários alinhem sua infraestrutura de cache às necessidades reais do aplicativo.
nota
As modificações do tipo de nó só estão disponíveis para clusters do Memcached baseados em nós com as versões 1.5 ou posteriores do mecanismo.
O Auto Discovery deve ser habilitado para que seja possível usar a escalabilidade vertical.
Configuração da escalabilidade vertical sob demanda para clusters do Memcached baseados em nós
Você pode configurar a escalabilidade vertical sob demanda para o Memcached com scale-config, que contém dois parâmetros:
ScaleIntervalMinutes: tempo (em minutos) entre os lotes de escalabilidade durante o processo de atualização do Memcached
ScalePercentage: porcentagem de nós a serem escalados simultaneamente durante o processo de atualização do Memcached
Convertendo um tipo de nó existente do Memcached em um cache que pode ser escalado verticalmente por meio da CLI
Para converter um cluster existente baseado em nós do Memcached em um cache que pode ser escalado verticalmente, você pode usar elasticache modify-cache-cluster por meio da CLI.
aws elasticache modify-cache-cluster \ --cache-cluster-id <your-cluster-id> \ --cache-node-type <new-node-type> \ --scale-config <scale-config> \ --apply-immediately
Configuração da escalabilidade vertical com a CLI
Para configurar a escalabilidade vertical para um cluster Memcached baseado em nós por meio da CLI, use elasticache modify-cache-cluster com scale-config e seus parâmetros ScalePercentage e ScaleIntervalMinutes.
intervalos de escala em minutos: isso define o tempo (em minutos) entre os lotes de escalabilidade. Essa configuração pode variar de 2 a 30 minutos. Se nenhum valor for especificado, será aplicado o valor padrão de 5 minutos.
porcentagem de escala: especifica a porcentagem de nós a serem escalados simultaneamente em cada lote. Essa configuração pode variar de 10 a 100. A configuração é arredondada ao dividir, então, por exemplo, se o resultado for 49,5, uma configuração de 50 será aplicada. Se nenhum valor for especificado, será aplicado o valor padrão de 20.
Essas opções de configuração permitirão que você ajuste o processo de escalabilidade de acordo com suas necessidades específicas, equilibrando entre minimizar a interrupção do cluster e otimizar a velocidade de escalabilidade. O parâmetro scale-config só será aplicável aos tipos de mecanismos Memcached e será ignorado para outros mecanismos de cache, garantindo compatibilidade com versões anteriores do uso atual da API em outros clusters.
Chamada de 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:
Retorna o ID do cluster e a alteração pendente.
{ "CacheCluster": { "CacheNodeType": "old_insance_type", ... ... "PendingModifiedValues": { "CacheNodeType": "new_instance_type" }, } }
Listar sua configuração de escalabilidade vertical do cache do Memcached
Você pode recuperar as opções de escalabilidade para seus caches do Memcached e ver quais são as opções atuais para a escalabilidade vertical.
Chamada de 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" ] }
Escalabilidade vertical para Memcached com o Console de gerenciamento da AWS
Siga estas etapas para usar o Console de gerenciamento da AWS para converter um cluster Memcached baseado em nós em um cluster escalável verticalmente.
Faça login no Console de gerenciamento da AWS e abra o console do ElastiCache em https://console.aws.amazon.com/elasticache/
. Selecione o cluster do Memcached a ser convertido.
Selecione a guia Modify (Modificar).
Vá até a seção Cache settings (Configurações de cache) e selecione o tipo de nó desejado.
Selecione Preview changes (Visualizar alterações) e revise as alterações.
Selecione Modify.
Escalabilidade horizontal automatizada para Memcached
O ElastiCache agora se integra ao serviço Application Auto Scaling (AAS) da AWS para incluir escalabilidade horizontal automatizada para clusters do Memcached. Você pode definir políticas de escalabilidade por meio do serviço Application Auto Scaling da AWS e ajustar automaticamente o número de nós nos clusters do Memcached conforme o necessário, com base em métricas ou cronogramas predefinidos.
nota
No momento, a escalabilidade horizontal automatizada não está disponível nas regiões Pequim e Ningxia.
Esses são os métodos disponíveis para escalar horizontal e automaticamente seus clusters baseados em nós.
Escalabilidade programada: a escalabilidade com base em uma programação permite que você defina sua própria programação de escalabilidade para alterações de carga previsíveis. Por exemplo, toda semana o tráfego para seu aplicativo web começa a aumentar na quarta-feira, permanece alto na quinta-feira e começa a diminuir na sexta-feira. É possível configurar o recurso Auto Scaling para aumentar a capacidade na quarta-feira e diminuir a capacidade na sexta-feira.
Monitoramento do objetivo: com as políticas de dimensionamento com monitoramento do objetivo, você seleciona uma métrica de escalabilidade e define um valor pretendido. O Application Auto Scaling cria e gerencia os alarmes do CloudWatch que acionam a política de escalabilidade e calculam o ajuste de escalabilidade com base na métrica e no valor do objetivo. A política de escalabilidade adiciona ou remove capacidade conforme necessário para manter a métrica no valor de destino especificado ou próxima a ele.
Como configurar a escalabilidade horizontal para um cluster Memcached baseado em nós por meio da CLI
Ao escalar horizontalmente um cluster do Memcached baseado em nós, você pode usar uma política de monitoramento do objetivo, uma política programada ou ambas.
Registre um recurso como alvo escalável
Chame a API
RegisterScalableTargetno Application Auto Scaling da AWS para registrar o destino da dimensão escalávelelasticache:cache-cluster:Nodes.API: ApplicationAutoScaling.RegisterScalableTarget
Entrada:
{ "ScalableDimension": "elasticache:cache-cluster:Nodes", "ResourceId": "cache-cluster/test-cluster-1", "ServiceNamespace": "elasticache", "MinCapacity": 20, "MaxCapacity": 50 }Criar uma política de escalabilidade com monitoramento do objetivo
Em seguida, você pode criar uma política de escalabilidade de rastreamento do objetivo para o recurso chamando a API put scaling policy.
Métrica pré-definida
A seguir está uma política que se expande de acordo com a dimensão do nó de cache, usando a métrica predefinida
ElastiCacheCPUUtilization, definida como 50 para o cluster test-cluster-1. Ao excluir nós para aumentar a escala, os últimos n nós serão removidos.API: ApplicationAutoScaling.PutScalingPolicy
Entrada:
{ "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" }Resultado:
{ "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étrica personalizada
Você também pode definir uma política de escalabilidade por dimensão usando uma porcentagem personalizada baseada na métrica do Cloudwatch.
Entrada:
{ "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" }Ações programadas
Quando precisar aumentar a escala horizontalmente para um evento específico e depois reduzir a escala horizontalmente depois do evento, você pode criar duas ações agendadas chamando a API
PutScheduledAction.Política 1: aumentar a escala horizontalmente
O comando
atem--scheduleprograma a ação para ser executada uma vez em uma data e hora especificadas no futuro. O campo de programação também é compatível com taxa (minuto, hora, dia etc.) e cron (para expressão cron).Na data e hora especificadas, o Application Auto Scaling atualiza os valores
MinCapacityeMaxCapacity. O Application Auto Scaling se expande até MinCapacity para colocar os nós de cache em 70.API: ApplicationAutoScaling.PutScheduledAction
Entrada:
{ "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: Reduzir a escala horizontalmente
Na data e hora especificadas, o Application Auto Scaling atualiza a
MinCapacitye aMaxCapacityda tabela e reduz a escala na horizontal paraMaxCapacity, para retornar os nós de cache para 60.API: ApplicationAutoScaling.PutScheduledAction
Entrada:
{ "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", }Visualizar as atividades de escalabilidade
Você pode visualizar as atividades de escalabilidade usando a API
DescribeScalingActivities.API: ApplicationAutoScaling.DescribeScalingActivities
Resultado:
{ "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" } ] }Editar/excluir política de escalabilidade
Você pode editar ou excluir políticas chamando a API
PutScalingPolicynovamente ou chamando a açãoDeleteScalingPolicyouDeleteScheduled.Cancelar registro de destinos dimensionáveis
Você pode cancelar o registro de destinos dimensionáveis por meio da API
DeregisterScalableTarget. O cancelamento do registro de um destino dimensionável exclui as políticas de escalabilidade e as ações programadas associadas a ele.API: ApplicationAutoScaling.DeregisterScalableTarget
Entrada:
{ "ResourceId": "elasticache/cache-cluster/test-cluster-1", "ServiceNamespace": "elasticache", "ScalableDimension": "elasticache:cache-cluster:Nodes" }Limpeza de políticas de escalabilidade
Várias políticas de escalabilidade
Você pode criar várias políticas de escalabilidade. A seguir estão os principais textos explicativos sobre o comportamento do rastreamento de destinos do Auto Scaling.
Você pode ter várias políticas de escalabilidade de rastreamento de destino para um destino escalável, desde que cada uma delas use uma métrica diferente.
A intenção do Application Auto Scaling é sempre priorizar a disponibilidade, portanto, seu comportamento será diferente dependendo se as políticas de monitoramento do objetivo estão prontas para aumentar ou reduzir a escala. Ele vai expandir o destino dimensionável se qualquer uma das políticas de rastreamento de destino estiverem prontas para expandir, mas vai reduzir somente se todas as políticas de rastreamento de destino (com a parte de redução habilitada) estiverem prontas para reduzir
Se várias políticas instruírem o destino escalável a expandir ou reduzir ao mesmo tempo, o Application Auto Scaling fará a escalabilidade com base na política que fornece a maior capacidade tanto para expandir como para reduzir. Isso oferece maior flexibilidade para cobrir vários cenários e garante que sempre haja capacidade suficiente para processar suas cargas de trabalho de aplicativos.
nota
O Application Auto Scaling da AWS não coloca políticas de escalabilidade em fila. O Application Auto Scaling aguardará a conclusão do primeiro escalonamento, depois esfriará e repetirá o algoritmo acima.
Dimensione horizontalmente automaticamente um cluster do Memcached baseado em nós por meio do Console de gerenciamento da AWS
Siga estas etapas para usar o Console de gerenciamento da AWS para converter um cluster do Memcached existente baseado em nós em um cluster escalável horizontalmente.
Faça login no Console de gerenciamento da AWS e abra o console do ElastiCache em https://console.aws.amazon.com/elasticache/
. Selecione o cache do Memcached a ser convertido.
Acesse a guia Autoscaling (Escalonamento automático).
Selecione a política de escalabilidade a ser aplicada selecionando Add dynamic scaling (Adicionar escalabilidade dinâmica) ou Add scheduled scaling (Adicionar escalabilidade programada).
Preencha os detalhes da política selecionada conforme o necessário.
Clique em Criar.