Ajuste de escala automático do número de réplicas em um cluster de banco de dados do Amazon Neptune - Amazon Neptune

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Ajuste de escala automático do número de réplicas em um cluster de banco de dados do Amazon Neptune

É possível usar o ajuste de escala automático do Neptune para ajustar automaticamente o número de réplicas do Neptune em um cluster de banco de dados para atender aos requisitos de conectividade e workload. O ajuste de escala automático permite que o cluster de banco de dados do Neptune processe aumentos na workload e, quando a workload diminui, o ajuste de escala automático remove réplicas desnecessárias para que você não pague pela capacidade não utilizada.

É possível usar o ajuste de escala automático apenas com um cluster de banco de dados do Neptune que já tenha uma instância de gravador principal e pelo menos uma instância de réplica de leitura (consulte Clusters e instâncias de banco de dados do Amazon Neptune). Além disso, todas as instâncias de réplica de leitura no cluster devem estar em um estado disponível. Se alguma réplica de leitura estiver em um estado diferente de disponível, o ajuste de escala automático do Neptune não fará nada até que todas as réplicas de leitura no cluster estejam disponíveis.

Consulte Criar cluster Neptune se você precisar criar um cluster.

Usando o AWS CLI, você define e aplica uma política de escalabilidade ao cluster de banco de dados. Você também pode usar o AWS CLI para editar ou excluir sua política de auto-scaling. A política especifica os seguintes parâmetros de ajuste de escala automático:

  • O número mínimo e máximo de réplicas a serem mantidas no cluster.

  • Um ScaleOutCooldown intervalo entre a atividade de escalabilidade de adição de réplicas e um ScaleInCooldown intervalo entre a atividade de escalabilidade de exclusão de réplicas.

  • A CloudWatch métrica e o valor do gatilho métrico para aumentar ou diminuir a escala.

A frequência das ações de ajuste de escala automático do Neptune é reduzida de várias maneiras:

  • Inicialmente, para que o ajuste de escala automático adicione ou exclua um leitor, o alarme alto CPUUtilization deve ser violado por pelo menos três minutos ou o alarme baixo deve ser violado por pelo menos 15 minutos.

  • Após a primeira adição ou exclusão, a frequência das ações subsequentes de ajuste de escala automático do Neptune é limitada pelas configurações ScaleOutCooldown e ScaleInCooldown na política de ajuste de escala automático.

Se a CloudWatch métrica que você está usando atingir o limite alto especificado em sua política e se o ScaleOutCooldown intervalo tiver decorrido desde a última ação de auto-scaling, e se seu cluster de banco de dados ainda não tiver o número máximo de réplicas que você definiu, o auto-scaling do Neptune criará uma nova réplica usando o mesmo tipo de instância da instância primária do cluster de banco de dados.

Da mesma forma, se a métrica atingir o limite baixo especificado e se o intervalo ScaleInCooldown tiver decorrido desde a última ação de ajuste de escala automático, e se o cluster de banco de dados tiver mais do que o número mínimo de réplicas especificado, o ajuste de escala automático do Neptune excluirá uma das réplicas.

nota

O ajuste de escala automático do Neptune remove somente as réplicas criadas. Ele não remove réplicas preexistentes.

Usando o parâmetro de cluster de banco de dados neptune_autoscaling_config, também é possível especificar o tipo de instância das novas réplicas de leitura criadas pelo ajuste de escala automático do Neptune, as janelas de manutenção dessas réplicas de leitura e as tags a serem associadas a cada uma das novas réplicas de leitura. Você fornece essas configurações em uma string JSON como o valor do parâmetro neptune_autoscaling_config, desta forma:

"{ \"tags\": [ { \"key\" : \"reader tag-0 key\", \"value\" : \"reader tag-0 value\" }, { \"key\" : \"reader tag-1 key\", \"value\" : \"reader tag-1 value\" }, ], \"maintenanceWindow\" : \"wed:12:03-wed:12:33\", \"dbInstanceClass\" : \"db.r5.xlarge\" }"

Observe que as aspas dentro da string JSON devem ter todas um caractere de escape que é uma barra invertida (\). Todos os espaços em branco na string são opcionais, como de costume.

Qualquer uma das três definições de configuração não especificadas no parâmetro neptune_autoscaling_config é copiada da configuração da instância de gravador principal do cluster de banco de dados.

Quando o ajuste de escala automático adiciona uma nova instância de réplica de leitura, ele inclui no ID da instância de banco de dados o prefixo autoscaled-reader (por exemplo, autoscaled-reader-7r7t7z3lbd-20210828). Ele também adiciona uma tag a cada réplica de leitura criada com a chave autoscaled-reader e um valor de TRUE. É possível visualizar essa tag na guia Tags da página de detalhes da instância de banco de dados no AWS Management Console.

"key" : "autoscaled-reader", "value" : "TRUE"

O nível de promoção de todas as instâncias de réplica de leitura criadas pelo ajuste de escala automático é o de menor prioridade, que é 15 por padrão. Isso significa que, durante um failover, qualquer réplica com uma prioridade maior, como uma criada manualmente, será promovida primeiro. Consulte Tolerância a falhas para um cluster de banco de dados do Neptune.

O auto-scaling do Neptune é implementado usando o Application Auto Scaling com uma política de escalabilidade de rastreamento de destino que usa uma métrica do Neptune como uma métrica predefinida. CPUUtilization CloudWatch

Usar o ajuste de escala automático em um cluster de banco de dados sem servidor do Neptune

O Neptune Serverless responde com uma velocidade muito maior do que o ajuste de escala automático do Neptune quando a demanda excede a capacidade de uma instância e aumenta a escala da instância verticalmente em vez de adicionar outra instância. Enquanto o ajuste de escala automático é projetado para corresponder a aumentos ou diminuições relativamente estáveis na workload, a tecnologia sem servidor é excelente para lidar com picos rápidos e oscilações na demanda.

Compreendendo os pontos fortes, você pode combinar o ajuste de escala automático e a tecnologia sem servidor para criar uma infraestrutura flexível que lidará com as mudanças na workload com eficiência e atenderá à demanda minimizando os custos.

Para permitir que o ajuste de escala automático funcione com eficiência com a tecnologia sem servidor, é importante definir a configuração do maxNCU do cluster sem servidor alta o suficiente para acomodar picos e breves mudanças na demanda. Caso contrário, alterações transitórias não acionam a escalabilidade sem servidor, o que pode fazer com que o ajuste de escala automático gere muitas instâncias adicionais desnecessárias. Se o maxNCU estiver definido como alto o suficiente, o ajuste de escala automático sem servidor pode lidar com essas alterações de forma mais rápida e econômica.

Como habilitar o ajuste de escala automático do Amazon Neptune

O ajuste de escala automático só pode ser habilitado para um cluster de banco de dados do Neptune usando a AWS CLI. Não é possível habilitar o ajuste de escala automático usando o. AWS Management Console.

Além disso, o ajuste de escala automático não é compatível com as seguintes regiões da Amazon:

  • África (Cidade do Cabo): af-south-1

  • Oriente Médio (Emirados Árabes Unidos): me-central-1

  • AWS GovCloud (Leste dos EUA): us-gov-east-1

  • AWS GovCloud (Oeste dos EUA): us-gov-west-1

Habilitar o ajuste de escala automático para um cluster de banco de dados do Neptune envolve três etapas:

1. Registrar o cluster de banco de dados com o Application Auto Scaling

A primeira etapa para habilitar o escalonamento automático para um cluster de banco de dados Neptune é registrar o cluster no Application Auto Scaling, usando o Application Auto Scaling ou um dos Application Auto Scaling. AWS CLI SDKs O cluster já deve ter uma instância principal e pelo menos uma instância de réplica de leitura:

Por exemplo, para registrar um cluster para ser escalado automaticamente com de uma a oito réplicas adicionais, você pode usar o AWS CLI register-scalable-targetcomando da seguinte forma:

aws application-autoscaling register-scalable-target \ --service-namespace neptune \ --resource-id cluster:(your DB cluster name) \ --scalable-dimension neptune:cluster:ReadReplicaCount \ --min-capacity 1 \ --max-capacity 8

Isso equivale a usar a operação da API RegisterScalableTarget do Application Auto Scaling.

O comando AWS CLI register-scalable-target usa os seguintes parâmetros:

  • service-namespace: defina como neptune.

    Esse parâmetro equivale ao parâmetro ServiceNamespace na API do Application Auto Scaling.

  • resource-id: defina como o identificador de recurso do cluster de banco de dados do Neptune. O tipo de recurso é cluster, seguido por dois pontos (“:“) e, depois, pelo nome do cluster de banco de dados.

    Esse parâmetro equivale ao parâmetro ResourceID na API do Application Auto Scaling.

  • scalable-dimension: a dimensão escalável nesse caso é o número de instâncias de réplica no cluster de banco de dados, então você define esse parâmetro como neptune:cluster:ReadReplicaCount.

    Esse parâmetro equivale ao parâmetro ScalableDimension na API do Application Auto Scaling.

  • min-capacity: o número mínimo de instâncias de réplica de banco de dados de leitor a serem gerenciadas pelo Application Auto Scaling. Esse valor deve ser definido no intervalo de 0 a 15 e deve ser igual ou menor que o valor especificado para o número máximo de réplicas do Neptune em max-capacity. Deve haver pelo menos um leitor no cluster de banco de dados para que o ajuste de escala automático funcione.

    Esse parâmetro equivale ao parâmetro MinCapacity na API do Application Auto Scaling.

  • max-capacity: o número máximo de instâncias de réplicas de banco de dados de leitor no cluster de banco de dados, incluindo instâncias preexistentes e novas instâncias gerenciadas pelo Application Auto Scaling. Esse valor deve ser definido entre 0 e 15 e deve ser igual ou maior que o valor especificado para o número mínimo de réplicas do Neptune em min-capacity.

    O max-capacity AWS CLI parâmetro é equivalente ao MaxCapacity parâmetro na API Application Auto Scaling.

Quando você registra o cluster de banco de dados, o Application Auto Scaling cria um perfil vinculado ao serviço AWSServiceRoleForApplicationAutoScaling_NeptuneCluster. Para obter mais informações, consulte Service-linked roles for Application auto-scaling, no Guia do usuário do Application Auto Scaling.

2. Definir uma política de ajuste de escala automático a ser usada com o cluster de banco de dados

Uma política de escalabilidade de rastreamento de destino é definida como um objeto de texto JSON que também pode ser salvo em um arquivo de texto. Para Neptune, essa política atualmente só pode usar a métrica CPUUtilization CloudWatch Neptune como uma métrica predefinida chamada. NeptuneReaderAverageCPUUtilization

Veja um exemplo de política de configuração de escalabilidade de rastreamento de destino para o Neptune:

{ "PredefinedMetricSpecification": { "PredefinedMetricType": "NeptuneReaderAverageCPUUtilization" }, "TargetValue": 60.0, "ScaleOutCooldown" : 600, "ScaleInCooldown" : 600 }

O elemento TargetValue aqui contém a porcentagem de utilização da CPU acima da qual o ajuste de escala automático se expande (ou seja, adiciona mais réplicas) e abaixo da qual ele é reduzido (ou seja, exclui réplicas). Nesse caso, a porcentagem de destino que aciona a escalabilidade é 60.0%.

O elemento ScaleInCooldown especifica a quantidade de tempo, em segundos, após a conclusão de redução da escala antes que outra redução possa ser iniciada. O padrão é trezentos segundos. Aqui, o valor de seiscentos especifica que devem decorrer pelo menos dez minutos entre a conclusão de uma exclusão de réplica e o início de outra.

O elemento ScaleOutCooldown especifica a quantidade de tempo, em segundos, após a conclusão de expansão da escala antes que outra expansão possa ser iniciada. O padrão é trezentos segundos. Aqui, o valor de seiscentos especifica que devem decorrer pelo menos dez minutos entre a conclusão de uma adição de réplica e o início de outra.

O elemento DisableScaleIn é um valor booliano que, se estiver presente e definido como true desabilitará totalmente a redução da escala, o que significa que o ajuste de escala automático poderá adicionar réplicas, mas nunca removerá nenhuma. Por padrão, a redução da escala está habilitada e DisableScaleIn é false.

Depois de registrar o cluster de banco de dados do Neptune com o Application Auto Scaling e definir uma política de escalabilidade JSON em um arquivo de texto, aplique a política de escalabilidade ao cluster de banco de dados registrado. Você pode usar o AWS CLI put-scaling-policycomando para fazer isso, com parâmetros como os seguintes:

aws application-autoscaling put-scaling-policy \ --policy-name (name of the scaling policy) \ --policy-type TargetTrackingScaling \ --resource-id cluster:(name of your Neptune DB cluster) \ --service-namespace neptune \ --scalable-dimension neptune:cluster:ReadReplicaCount \ --target-tracking-scaling-policy-configuration file://(path to the JSON configuration file)

Quando você aplica a política de ajuste de escala automático, o ajuste de escala automático é habilitado no cluster de banco de dados.

Você também pode usar o AWS CLI put-scaling-policycomando para atualizar uma política de auto-scaling existente.

Veja também PutScalingPolicyna Referência da API Application Auto Scaling.

Remover o ajuste de escala automático de um cluster de banco de dados do Neptune

Para remover o auto-scaling de um cluster de banco de dados Neptune, use os comandos e. AWS CLI delete-scaling-policyderegister-scalable-target