Verwendung von Amazon Neptune Serverless - Amazon Neptune

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verwendung von Amazon Neptune Serverless

Sie können einen neuen Neptune-DB-Cluster als Serverless-Cluster erstellen, oder in einigen Fällen können Sie einen vorhandenen DB-Cluster auf Serverless umstellen. Sie können auch DB-Instances in einem Serverless-DB-Cluster in und aus Serverless-Instances konvertieren. Sie können Neptune Serverless nur in einem der Länder verwenden, in AWS-Regionen denen es unterstützt wird, mit einigen anderen Einschränkungen (siehe). Einschränkungen von Amazon Neptune Serverless

Sie können den Neptune- AWS CloudFormation -Stack auch verwenden, um einen Neptune Serverless DB-Cluster zu erstellen.

Einen neuen DB-Cluster erstellen, der Serverless verwendet

Um einen Neptune DB-Cluster zu erstellen, der Serverless verwendet, können Sie die AWS Management Console auf die gleiche Weise verwenden, wie Sie es bei der Erstellung eines bereitgestellten Clusters tun. Der Unterschied besteht darin, dass Sie unter DB-Instance-Größe die DB-Instance-Klasse auf Serverless setzen müssen. Wenn Sie das tun, müssen Sie dann den Serverless-Kapazitätsbereich für den Cluster festlegen.

Sie können einen serverlosen DB-Cluster auch AWS CLI mit folgenden Befehlen erstellen (ersetzen Sie unter Windows '\' durch '^'):

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

Sie könnten den serverless-v2-scaling-configuration-Parameter auch wie folgt angeben:

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

Sie können dann den describe-db-clusters-Befehl für das ServerlessV2ScalingConfiguration-Attribut ausführen, der die von Ihnen angegebenen Einstellungen für den Kapazitätsbereich zurückgeben sollte:

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

Einen vorhandenen DB-Cluster oder eine bestehende Instance in Serverless konvertieren

Wenn Sie einen Neptune-DB-Cluster haben, der die Engine-Version 1.2.0.1 oder höher verwendet, können Sie ihn in einen Serverless-Cluster umwandeln. Dieser Prozess verursacht einige Ausfallzeiten.

Der erste Schritt besteht darin, dem vorhandenen Cluster einen Kapazitätsbereich hinzuzufügen. Sie können dies mit dem AWS Management Console oder mit einem AWS CLI Befehl wie diesem tun (unter Windows ersetzen Sie '\' durch '^'):

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)

Der nächste Schritt besteht darin, eine neue Serverless-DB-Instance zu erstellen, um die bestehende primäre Instance (den Writer) im Cluster zu ersetzen. Auch hier können Sie diesen und alle nachfolgenden Schritte entweder mit dem AWS Management Console oder dem ausführen AWS CLI. Geben Sie in beiden Fällen die DB-Instance-Klasse als Serverless an. Der AWS CLI Befehl würde so aussehen (ersetzen Sie unter Windows '\' durch '^'):

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

Wenn die neue Writer-Instance verfügbar ist, führen Sie einen Failover durch, um sie zur Writer-Instance für den Cluster zu machen:

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

Löschen Sie als Nächstes die alte Writer-Instance:

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

Gehen Sie abschließend genauso vor, um eine neue Serverlesss-Instance zu erstellen, die an die Stelle jeder vorhandenen bereitgestellten Reader-Instance tritt, die Sie in eine Serverless-Instance umwandeln möchten, und löschen Sie die vorhandenen bereitgestellten Instances (für Reader-Instances ist kein Failover erforderlich).

Ändern des Kapazitätsbereichs eines vorhandenen Serverless-DB-Clusters

Sie können den Kapazitätsbereich eines Neptune Serverless DB-Clusters AWS CLI wie folgt ändern (unter Windows, ersetzen Sie ‚\’ durch ‚^’):

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

Durch Ändern des Kapazitätsbereichs können sich die Standardwerte einiger Konfigurationsparameter ändern. Neptune kann einige dieser neuen Standardeinstellungen sofort anwenden, aber einige der dynamischen Parameteränderungen werden erst nach einem Neustart wirksam. Status pending-reboot gibt an, dass ein Neustart erforderlich ist, um einige Parameteränderungen anzuwenden.

Änderung einer Serverless-DB-Instance in eine bereitgestellte

Um eine Neptune Serverless-Instance in eine bereitgestellte zu konvertieren, müssen Sie lediglich ihre Instance-Klasse in eine der bereitgestellten Instance-Klassen ändern. Siehe Ändern einer Neptune-DB-Instance (und sofortige Anwendung).

Überwachung serverloser Kapazitäten mit Amazon CloudWatch

Sie können CloudWatch es verwenden, um die Kapazität und Auslastung der serverlosen Neptune-Instances in Ihrem DB-Cluster zu überwachen. Es gibt zwei CloudWatch Metriken, mit denen Sie die aktuelle serverlose Kapazität sowohl auf Cluster- als auch auf Instance-Ebene verfolgen können:

  • ServerlessDatabaseCapacity – Als Metrik auf Instance-Ebene wird die aktuelle Instance-Kapazität in NCUs gemeldet von ServerlessDatabaseCapacity. Als Metrik auf Clusterebene gibt sie den Durchschnitt der ServerlessDatabaseCapacity-Werte aller DB-Instances im Cluster an.

  • NCUUtilization – Diese Metrik gibt an, wie viel Prozent der möglichen Kapazität genutzt wird. Sie wird berechnet als der aktuelle ServerlessDatabaseCapacity (entweder auf Instance-Ebene oder auf Cluster-Ebene) geteilt durch die maximale Kapazitätseinstellung für den DB-Cluster.

    Wenn sich diese Metrik auf Clusterebene 100 % nähert, was bedeutet, dass der Cluster so hoch wie möglich skaliert wurde, sollten Sie eine Erhöhung der Einstellung für die maximale Kapazität in Betracht ziehen.

    Wenn sie sich für eine Reader-Instance 100 % nähert, während die Writer-Instance nicht annähernd die maximale Kapazität erreicht, sollten Sie erwägen, weitere Reader-Instances hinzuzufügen, um den Lese-Workload zu verteilen.

Beachten Sie, dass die Metriken CPUUtilization und FreeableMemory für Serverless-Instances eine etwas andere Bedeutung haben als für bereitgestellte Instances. Ist in einem Serverless-Kontext ist CPUUtilization ein Prozentsatz, der als der aktuell CPU-Verbrauch dividiert durch die CPU-Verbrauch dividiert durch die Menge der CPU berechnet wird, die bei maximaler Kapazität verfügbar wäre. FreeableMemory meldet in ähnlicher Weise die Menge an freiem Speicher, die verfügbar wäre, wenn eine Instance die maximale Kapazität erreicht hätte.

Das folgende Beispiel zeigt, wie Sie AWS CLI unter Linux die minimalen, maximalen und durchschnittlichen Kapazitätswerte für eine bestimmte DB-Instance abrufen können, gemessen alle 10 Minuten über eine Stunde. Der Linux-Befehl date gibt die Start- und Endzeiten relativ zum aktuellen Datum und zur aktuellen Uhrzeit an. Die sort_by-Funktion im --query-Parameter sortiert die Ergebnisse chronologisch basierend auf dem Feld 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