Dimensionamento automatico del numero di repliche in un cluster database Amazon Neptune - 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à.

Dimensionamento automatico del numero di repliche in un cluster database Amazon Neptune

È possibile utilizzare il dimensionamento automatico di Neptune per regolare automaticamente il numero di repliche Neptune in un cluster database per soddisfare i requisiti di connettività e carico di lavoro. Il dimensionamento automatico consente al cluster database Neptune di gestire gli aumenti del carico di lavoro e, quando questo cala, rimuove le repliche non necessarie in modo da non pagare per la capacità inutilizzata.

È possibile utilizzare il dimensionamento automatico solo con un cluster database Neptune che ha già un'istanza di scrittura principale e almeno un'istanza di replica di lettura (vedi Cluster e istanze database di Amazon Neptune). Inoltre, tutte le istanze di replica di lettura nel cluster devono essere in stato disponibile. Se una replica di lettura si trova in uno stato non disponibile, il dimensionamento automatico di Neptune non fa nulla finché non sono disponibili tutte le repliche di lettura nel cluster.

Se hai bisogno di creare un nuovo cluster, consulta Creazione di un cluster DB.

Utilizzando AWS CLI, si definisce e si applica una politica di scalabilità al cluster DB. Puoi anche utilizzare il AWS CLI per modificare o eliminare la tua politica di auto-scaling. La policy specifica i seguenti parametri di dimensionamento automatico:

  • Il numero minimo e massimo di repliche che deve avere il cluster.

  • Un ScaleOutCooldown intervallo tra l'attività di ridimensionamento delle repliche e l'attività di ridimensionamento dell'aggiunta delle repliche e l'attività di ridimensionamento dell'ScaleInCooldowneliminazione delle repliche.

  • La metrica e il valore della CloudWatch metrica attivano la scalabilità verso l'alto o verso il basso.

La frequenza delle azioni di dimensionamento automatico di Neptune viene ridotta in diversi modi:

  • Inizialmente, affinché il dimensionamento automatico aggiunga o elimini una replica, l'allarme CPUUtilization per il livello massimo deve essere violato per almeno 3 minuti, mentre quello per il livello minimo deve essere violato per almeno 15 minuti.

  • Dopo la prima aggiunta o eliminazione, la frequenza delle successive azioni di dimensionamento automatico di Neptune è limitata dalle impostazioni ScaleOutCooldown e ScaleInCooldown nella policy di dimensionamento automatico.

Se la CloudWatch metrica che stai utilizzando raggiunge la soglia alta specificata nella tua policy e se l'ScaleOutCooldownintervallo è trascorso dall'ultima azione di auto-scaling e se il tuo cluster DB non ha già il numero massimo di repliche che hai impostato, l'auto-scaling di Neptune crea una nuova replica utilizzando lo stesso tipo di istanza dell'istanza principale del cluster DB.

Allo stesso modo, se la metrica raggiunge la soglia minima specificata, se è trascorso l'intervallo ScaleInCooldown dall'ultima azione di dimensionamento automatico e se il cluster database ha più repliche del numero minimo specificato, il dimensionamento automatico di Neptune elimina una delle repliche.

Nota

Il dimensionamento automatico di Neptune rimuove solo le repliche che ha creato. Non rimuove le repliche preesistenti.

Utilizzando il parametro neptune_autoscaling_config del cluster database è possibile anche specificare il tipo di istanza delle nuove repliche di lettura create dal dimensionamento automatico di Neptune, le finestre di manutenzione per tali repliche di lettura e i tag da associare a ciascuna delle nuove repliche di lettura. Queste impostazioni di configurazione vengono fornite in una stringa JSON come valore del parametro neptune_autoscaling_config, come descritto di seguito:

"{ \"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\" }"

Nota che tutte le virgolette all'interno della stringa JSON devono essere precedute dal carattere di escape della barra rovesciata (\). Come sempre, tutti gli spazi nella stringa sono facoltativi.

Tutte le tre impostazioni di configurazione non specificate nel parametro neptune_autoscaling_config vengono copiate dalla configurazione dell'istanza di scrittura primaria del cluster database.

Quando il dimensionamento automatico aggiunge una nuova istanza di replica di lettura, aggiunge all'ID dell'istanza database il prefisso autoscaled-reader (ad esempio autoscaled-reader-7r7t7z3lbd-20210828). Aggiunge inoltre un tag a ogni replica di lettura che crea con la chiave autoscaled-reader e il valore TRUE. È possibile visualizzarlo nella scheda Tag della pagina dei dettagli dell'istanza database nella AWS Management Console.

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

Il livello di promozione di tutte le istanze di replica di lettura create dal dimensionamento automatico è la priorità più bassa, ovvero 15 per impostazione predefinita. Ciò significa che, durante un failover una replica con una priorità più alta, ad esempio una creata manualmente, sarà promossa per prima. Per informazioni, consulta Tolleranza ai guasti di un cluster database Neptune..

L'auto-scaling di Neptune è implementato utilizzando Application Auto Scaling con una politica di scalabilità di tracciamento degli obiettivi che utilizza una metrica Neptune come metrica predefinita. CPUUtilization CloudWatch

Utilizzo del dimensionamento automatico in un cluster database serverless di Neptune

Neptune Serverless risponde molto più rapidamente del dimensionamento automatico di Neptune quando la domanda supera la capacità di un'istanza e aumenta la scalabilità dell'istanza, anziché aggiungerne un'altra. Mentre il dimensionamento automatico è progettato per far fronte ad aumenti o diminuzioni relativamente stabili del carico di lavoro, Serverless è ottimo per gestire picchi e variazioni impreviste della domanda.

Tenendo presenti questi punti di forza, puoi combinare il dimensionamento automatico e Serverless per creare un'infrastruttura flessibile in grado di gestire le variazioni dei carichi di lavoro in modo efficiente, oltre a soddisfare la domanda riducendo al minimo i costi.

Affinché il dimensionamento automatico possa funzionare in modo efficace con Serverless, è importante configurare l'impostazione maxNCU del cluster serverless su un livello sufficientemente alto da far fronte a picchi e brevi variazioni della domanda. In caso contrario, le modifiche transitorie non attivano il dimensionamento serverless, il che potrebbe far sì che il dimensionamento automatico crei molte istanze aggiuntive non necessarie. Se il valore di maxNCU è impostato su un livello sufficientemente alto, il dimensionamento serverless può gestire tali modifiche più velocemente e con meno costi.

Come abilitare il dimensionamento automatico per Amazon Neptune

Il dimensionamento automatico può essere abilitato solo per un cluster database Neptune utilizzando AWS CLI. Non è possibile abilitare il dimensionamento automatico utilizzando la AWS Management Console.

Inoltre, il dimensionamento automatico non è supportato nelle seguenti regioni Amazon:

  • Africa (Città del Capo): af-south-1

  • Medio Oriente (Emirati Arabi Uniti): me-central-1

  • AWS GovCloud (Stati Uniti orientali): us-gov-east-1

  • AWS GovCloud (Stati Uniti occidentali): us-gov-west-1

L'abilitazione del dimensionamento automatico per un cluster database Neptune prevede tre passaggi:

1. Registrazione del cluster database tramite Application Auto Scaling

Il primo passaggio per abilitare il dimensionamento automatico per un cluster database Neptune prevede la registrazione del cluster con Application Auto Scaling utilizzando AWS CLI o uno degli SDK di Application Auto Scaling. Il cluster deve avere già un'istanza primaria e almeno un'istanza di replica di lettura:

Ad esempio, per registrare un cluster da scalare automaticamente con da una a otto repliche aggiuntive, è possibile utilizzare il AWS CLI register-scalable-targetcomando seguente:

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

Equivale all'utilizzo dell'operazione RegisterScalableTarget dell'API Application Auto Scaling.

Il comando AWS CLI register-scalable-target accetta i parametri seguenti:

  • service-namespace: impostato su neptune.

    Questo parametro equivale al parametro ServiceNamespace dell'API Application Auto Scaling.

  • resource-id: impostalo come identificatore di risorsa per il cluster database Neptune. Il tipo di risorsa è cluster, seguito da due punti (':') e poi dal nome del cluster database.

    Questo parametro equivale al parametro ResourceID dell'API Application Auto Scaling.

  • scalable-dimension: la dimensione scalabile in questo caso è il numero di istanze di replica nel cluster database, quindi occorre impostarlo su neptune:cluster:ReadReplicaCount.

    Questo parametro equivale al parametro ScalableDimension dell'API Application Auto Scaling.

  • min-capacity: il numero minimo di istanze database di replica di lettura da gestire con Application Auto Scaling. Questo valore deve essere impostato su un intervallo compreso tra 0 e 15 ed essere uguale o minore rispetto al valore specificato per il numero massimo di repliche Neptune in max-capacity. Affinché il dimensionamento automatico funzioni, il cluster database deve avere almeno un'istanza di lettura.

    Questo parametro equivale al parametro MinCapacity dell'API Application Auto Scaling.

  • max-capacity: il numero massimo di istanze database di replica di lettura nel cluster database, incluse istanze preesistenti e quelle nuove gestite da Application Auto Scaling. Questo valore deve essere impostato su un intervallo compreso tra 0 e 15 ed essere uguale o minore rispetto al valore specificato per il numero minimo di repliche Neptune in min-capacity.

    Il max-capacity AWS CLI parametro è equivalente al MaxCapacity parametro dell'API Application Auto Scaling.

Quando registri il cluster database, Application Auto Scaling crea un ruolo AWSServiceRoleForApplicationAutoScaling_NeptuneCluster collegato ai servizi. Per ulteriori informazioni, consulta Ruoli collegati ai servizi per Application Auto Scaling nella Guida per l'utente di Application Auto Scaling.

2. Definisci una policy di dimensionamento automatico da utilizzare con il cluster database

Una policy di dimensionamento per il monitoraggio dei target è definita come un oggetto di testo JSON che può essere salvato anche in un file di testo. Per Neptune, questa politica attualmente può utilizzare solo la metrica CPUUtilization CloudWatch Neptune come metrica predefinita denominata. NeptuneReaderAverageCPUUtilization

Di seguito è riportato un esempio di policy di configurazione del monitoraggio dei target per Neptune:

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

L'elemento TargetValue qui contiene la percentuale di utilizzo della CPU al di sopra della quale il dimensionamento automatico impiega la scalabilità orizzontale (ovvero aggiunge altre repliche) e al di sotto della quale esegue il ridimensionamento (ovvero elimina le repliche). In questo caso, la percentuale target che attiva la scalabilità è pari al 60.0%.

L'elemento ScaleInCooldown specifica la quantità di tempo, in secondi, tra il completamento di un'attività di ridimensionamento e l'inizio di un'altra attività dello stesso tipo. Il valore predefinito è 300 secondi. Qui, il valore è 600 e specifica che devono trascorrere almeno dieci minuti tra il completamento dell'eliminazione di una replica e l'inizio di un'altra.

L'elemento ScaleOutCooldown specifica la quantità di tempo, in secondi, tra il completamento di un'attività di impiego della scalabilità orizzontale e l'inizio di un'altra attività dello stesso tipo. Il valore predefinito è 300 secondi. Qui, il valore è 600 e specifica che devono trascorrere almeno dieci minuti tra il completamento dell'aggiunta di una replica e l'inizio di un'altra.

L'elemento DisableScaleIn è un valore booleano che, se presente e impostato su true, disabilita completamente il ridimensionamento, nel senso che il dimensionamento automatico può aggiungere repliche, ma non ne rimuoverà mai nessuna. Per impostazione predefinita, il ridimensionamento è abilitato e DisableScaleIn è false.

Dopo la registrazione del cluster database Neptune con Application Auto Scaling e la definizione di una policy di dimensionamento JSON in un file di testo, applica la policy di dimensionamento al cluster database registrato. È possibile utilizzare il AWS CLI put-scaling-policycomando per eseguire questa operazione, con parametri come i seguenti:

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)

Dopo aver applicato la policy, il dimensionamento automatico è abilitato sul cluster database.

È inoltre possibile utilizzare il AWS CLI put-scaling-policycomando per aggiornare una politica di auto-scaling esistente.

Vedi anche PutScalingPolicy nell'Application Auto Scaling API Reference.

Rimozione del dimensionamento automatico da un cluster database Neptune

Per rimuovere l'auto-scaling da un cluster Neptune DB, usa i comandi delete-scaling-policy e deregister-scalable-target. AWS CLI