Usar o Amazon Neptune Serverless - 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á.

Usar o Amazon Neptune Serverless

É possível criar um cluster de banco de dados do Neptune como sem servidor ou, em alguns casos, converter um cluster de banco de dados existente para usar tecnologia sem servidor. Você também pode converter instâncias de banco de dados em um cluster de banco de dados sem servidor de e em instâncias sem servidor. Você só pode usar o Neptune Serverless em um dos Regiões da AWS locais onde ele é suportado, com algumas outras limitações (consulte). Restrições do Amazon Neptune Serverless

Você também pode usar a pilha do AWS CloudFormation do Neptune para criar um cluster de banco de dados do Neptune Serverless.

Criar um cluster de banco de dados que usa a tecnologia sem servidor

Para criar um cluster de banco de dados do Neptune que use a tecnologia sem servidor, faça-o usando o AWS Management Console da mesma forma que faz para criar um cluster provisionado. A diferença é que, no tamanho da instância de banco de dados, é necessário definir a classe da instância de banco de dados como sem servidor. Ao fazer isso, é necessário definir o intervalo de capacidade sem servidor para o cluster.

Você também pode criar um cluster de banco de dados sem servidor usando os comandos AWS CLI with como este (no Windows, substitua '\' por '^'):

aws neptune create-db-cluster \ --region (an Região da AWS region that supports serverless) \ --db-cluster-identifier (ID for the new serverless DB cluster) \ --engine neptune \ --engine-version (optional: 1.2.0.1 or above) \ --serverless-v2-scaling-configuration "MinCapacity=1.0, MaxCapacity=128.0"

Também é possível especificar o parâmetro serverless-v2-scaling-configuration desta forma:

--serverless-v2-scaling-configuration '{"MinCapacity":1.0, "MaxCapacity":128.0}'

Depois, você pode executar o comando describe-db-clusters para o atributo ServerlessV2ScalingConfiguration, que deve exibir as configurações de intervalo de capacidade especificadas:

"ServerlessV2ScalingConfiguration": { "MinCapacity": (the specified minimum number of NCUs), "MaxCapacity": (the specified maximum number of NCUs) }

Converter uma instância ou um cluster de banco de dados existente em tecnologia sem servidor

Se você tiver um cluster de banco de dados do Neptune que esteja usando a versão 1.2.0.1 ou posterior do mecanismo, poderá convertê-lo em sem servidor. Esse processo gera algum tempo de inatividade.

A primeira etapa é adicionar um intervalo de capacidade ao cluster existente. Você pode fazer isso usando o AWS Management Console, ou usando um AWS CLI comando como este (no Windows, substitua '\' por '^'):

aws neptune modify-db-cluster \ --db-cluster-identifier (your DB cluster ID) \ --serverless-v2-scaling-configuration \ MinCapacity=(minimum number of NCUs, such as 2.0), \ MaxCapacity=(maximum number of NCUs, such as 24.0)

A próxima etapa é criar uma instância de banco de dados sem servidor para substituir a instância principal existente (o gravador) no cluster. Novamente, você pode fazer isso e todas as etapas subsequentes usando o AWS Management Console ou AWS CLI o. Em qualquer caso, especifique a classe da instância de banco de dados como sem servidor. O AWS CLI comando ficaria assim (no Windows, substitua '\' por '^'):

aws neptune create-db-instance \ --db-instance-identifier (an instance ID for the new writer instance) \ --db-cluster-identifier (ID of the DB cluster) \ --db-instance-class db.serverless --engine neptune

Quando a nova instância de gravador estiver disponível, realize um failover para torná-la a instância de gravador do cluster:

aws neptune failover-db-cluster \ --db-cluster-identifier (ID of the DB cluster) \ --target-db-instance-identifier (instance ID of the new serverless instance)

Depois, exclua a instância de gravador antiga:

aws neptune delete-db-instance \ --db-instance-identifier (instance ID of the old writer instance) \ --skip-final-snapshot

Por fim, faça o mesmo para criar uma instância sem servidor para substituir cada instância de leitor provisionada existente que você gostaria de transformar em uma instância sem servidor e exclua as instâncias provisionadas existentes (nenhum failover é necessário para instâncias de leitor).

Modificar o intervalo de capacidade de um cluster de banco de dados sem servidor existente

É possível alterar o intervalo de capacidade de um cluster de banco de dados do Neptune Sem Servidor usando a AWS CLI da seguinte forma (no Windows, substitua “\” por “^”):

aws neptune modify-db-cluster \ --region (an AWS region that supports serverless) \ --db-cluster-identifier (ID of the serverless DB cluster) \ --apply-immediately \ --serverless-v2-scaling-configuration MinCapacity=4.0, MaxCapacity=32

A alteração do intervalo de capacidade causa alterações nos valores padrão de alguns parâmetros de configuração. O Neptune pode aplicar alguns desses novos padrões imediatamente, mas algumas das alterações de parâmetros dinâmicos são aplicadas somente após a reinicialização. O status pending-reboot indica que é necessária uma reinicialização para aplicar algumas alterações de parâmetro.

Alterar uma instância de banco de dados sem servidor para provisionada

Para converter uma instância do Neptune Sem Servidor em uma provisionada basta alterar a classe da instância para uma das classes de instâncias provisionadas. Consulte Modificar uma instância de banco de dados do Neptune (e aplicar imediatamente).

Monitorando a capacidade sem servidor com a Amazon CloudWatch

Você pode usá-lo CloudWatch para monitorar a capacidade e a utilização das instâncias sem servidor do Neptune em seu cluster de banco de dados. Há duas CloudWatch métricas que permitem monitorar a capacidade atual sem servidor, tanto no nível do cluster quanto no nível da instância:

  • ServerlessDatabaseCapacity: como métrica em nível de instância, ServerlessDatabaseCapacity relata a capacidade atual da instância, em NCUs. Como métrica em nível de cluster, ela relata a média de todos os valores ServerlessDatabaseCapacity de todas as instâncias de banco de dados no cluster.

  • NCUUtilization: essa métrica relata a porcentagem da capacidade possível que está sendo usada. Ela é calculada como a ServerlessDatabaseCapacity atual (na instância ou no cluster) dividida pela configuração de capacidade máxima do cluster de banco de dados.

    Se essa métrica se aproximar de 100% no cluster, o que significa que ele foi escalado para o valor alto possível, pense em aumentar a configuração de capacidade máxima.

    Se ela se aproximar de 100% para uma instância de leitor enquanto a instância de gravador não estiver próxima da capacidade máxima, pense em adicionar mais instâncias de leitor para distribuir a workload de leitura.

Observe que as métricas CPUUtilization e FreeableMemory têm significados um pouco diferentes para instâncias sem servidor e instâncias provisionadas. Em um contexto de tecnologia sem servidor, CPUUtilization é uma porcentagem calculada como a quantidade de CPU que está sendo usada atualmente dividida pela quantidade de CPU disponível na capacidade máxima. Da mesma forma, FreeableMemory relata a quantidade de memória que pode ser liberada e estaria disponível se uma instância estivesse na capacidade máxima.

O exemplo a seguir mostra como usar o AWS CLI no Linux para recuperar os valores de capacidade mínima, máxima e média de uma determinada instância de banco de dados, medidos a cada 10 minutos durante uma hora. O comando date do Linux especifica as horas de início e término em relação à data e hora atuais. A função sort_by no parâmetro --query classifica os resultados cronologicamente com base no campo Timestamp:

aws cloudwatch get-metric-statistics \ --metric-name "ServerlessDatabaseCapacity" \ --start-time "$(date -d '1 hour ago')" \ --end-time "$(date -d 'now')" \ --period 600 \ --namespace "AWS/Neptune" --statistics Minimum Maximum Average \ --dimensions Name=DBInstanceIdentifier,Value=(instance ID) \ --query 'sort_by(Datapoints[*].{min:Minimum,max:Maximum,avg:Average,ts:Timestamp},&ts)' \ --output table