Utilizzo di Amazon Neptune Serverless - Amazon Neptune

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Utilizzo di Amazon Neptune Serverless

Puoi creare un nuovo cluster database Neptune come cluster serverless oppure, in alcuni casi, puoi convertire un cluster database esistente per utilizzarlo come serverless. Puoi anche convertire le istanze database di un cluster database serverless da e in istanze serverless. Puoi usare Neptune Serverless solo in uno dei Regioni AWS paesi in cui è supportato, con alcune altre limitazioni (vedi). Vincoli di Amazon Neptune Serverless

Per creare un cluster database Neptune Serverless, puoi anche usare lo stack AWS CloudFormation Neptune.

Creazione di un nuovo cluster database che utilizza Serverless

Per creare un cluster database Neptune che utilizza Serverless, è possibile utilizzare la AWS Management Console come per creare un cluster con provisioning. La differenza consiste nel fatto che, in base alle dimensioni dell'istanza database, devi impostare la classe di istanza database su serverless. Quando esegui questa procedura, devi impostare l'intervallo di capacità serverless per il cluster.

Puoi anche creare un cluster DB serverless usando i comandi AWS CLI with come questi (su Windows, sostituisci '\' con '^'):

aws neptune create-db-cluster \ --region (an Regione 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"

Puoi anche specificare il parametro serverless-v2-scaling-configuration in questo modo:

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

Quindi, puoi eseguire il comando describe-db-clusters per l'attributo ServerlessV2ScalingConfiguration, che deve restituire le impostazioni dell'intervallo di capacità specificate:

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

Conversione di un'istanza o un cluster database esistente in Serverless

Se hai un cluster database Neptune che utilizza la versione del motore 1.2.0.1 o successiva, puoi convertirlo in serverless. Questo processo comporta un certo tempo di inattività.

Il primo passaggio prevede di aggiungere un intervallo di capacità al cluster esistente. Puoi farlo usando o usando un AWS CLI comando come questo (in Windows, sostituisci '\' con '^'): AWS Management Console

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)

Il passaggio successivo prevede di creare una nuova istanza di database serverless per sostituire l'istanza principale esistente (quella di scrittura) nel cluster. Ancora una volta, puoi eseguire questa operazione e tutti i passaggi successivi utilizzando il AWS Management Console o il AWS CLI. In entrambi i casi, devi specificare la classe di istanza database come serverless. Il AWS CLI comando sarebbe simile al seguente (su Windows, sostituisci '\' con '^'):

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

Una volta che la nuova istanza di scrittura è diventata disponibile, esegui un failover per impostarla come istanza di scrittura per il 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)

Quindi, elimina la vecchia istanza di scrittura:

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

Infine, segui la stessa procedura per creare una nuova istanza serverless che sostituisca ogni istanza di lettura con provisioning esistente che desideri trasformare in un'istanza serverless ed elimina le istanze con provisioning esistenti (non è necessario eseguire un failover per le istanze di lettura).

Modifica dell'intervallo di capacità di un cluster database serverless esistente

Puoi modificare l'intervallo di capacità di un cluster database Neptune Serverless utilizzando l'interfaccia AWS CLI in questo modo (in Windows, sostituisci "\" con "^"):

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

La modifica dell'intervallo di capacità comporta modifiche ai valori di default di alcuni parametri di configurazione. Neptune può applicare immediatamente alcune di queste nuove impostazioni predefinite, ma alcune modifiche ai parametri dinamici diventano effettive solo dopo un riavvio. Lo stato pending-reboot indica che è necessario un riavvio per applicare le modifiche ad alcuni parametri.

Modifica di un'istanza di database Serverless in istanza con provisioning

Tutto ciò che devi fare per convertire un'istanza Neptune Serverless in un'istanza con provisioning è cambiare la relativa classe di istanza impostandola su una delle classi di istanza con provisioning. Per informazioni, consulta Modifica di un'istanza database di Neptune (e applicazione immediata).

Monitoraggio della capacità serverless con Amazon CloudWatch

È possibile CloudWatch utilizzarlo per monitorare la capacità e l'utilizzo delle istanze serverless Neptune nel cluster DB. Esistono due CloudWatch metriche che consentono di tenere traccia dell'attuale capacità serverless sia a livello di cluster che a livello di istanza:

  • ServerlessDatabaseCapacity: come metrica a livello di istanza, ServerlessDatabaseCapacity restituisce la capacità attuale dell'istanza, espressa in NCU. Come metrica a livello di cluster, restituisce la media di tutti i valori ServerlessDatabaseCapacity di tutte le istanze database nel cluster.

  • NCUUtilization: questa metrica restituisce la percentuale della capacità possibilmente in uso. Viene calcolata come valore ServerlessDatabaseCapacity attuale (a livello di istanza o a livello di cluster) diviso per l'impostazione della capacità massima per il cluster database.

    Se questa metrica si avvicina al 100% a livello di cluster (il che significa che il cluster ha le dimensioni massime possibili), valuta la possibilità di incrementare l'impostazione della capacità massima.

    Se si avvicina al 100% per un'istanza di lettura mentre l'istanza di scrittura non è vicina alla capacità massima, prendi in considerazione l'aggiunta di altre istanze di lettura per distribuire il carico di lavoro in lettura.

Tieni presente che le metriche CPUUtilization e FreeableMemory hanno significati leggermente diversi per le istanze serverless rispetto a quello delle istanze con provisioning. In un contesto serverless, CPUUtilization è una percentuale calcolata come la quantità di CPU attualmente in uso divisa per la quantità di CPU disponibile alla capacità massima. In modo analogo, FreeableMemory restituisce la quantità di memoria che è possibile liberare e che sarebbe disponibile se un'istanza avesse la capacità massima.

L'esempio seguente mostra come utilizzare AWS CLI su Linux per recuperare i valori di capacità minima, massima e media per una determinata istanza DB, misurati ogni 10 minuti nell'arco di un'ora. Il comando Linux date specifica l'ora di inizio e l'ora di fine rispetto alla data e all'ora correnti. La funzione sort_by nel parametro --query dispone i risultati in ordine cronologico, in base al 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