Auto Scaling der Anzahl der Replikate in einem Amazon Neptune-DB-Cluster - 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.

Auto Scaling der Anzahl der Replikate in einem Amazon Neptune-DB-Cluster

Mit Neptune Auto Scaling können Sie die Anzahl der Neptune-Replikate in einem DB-Cluster automatisch an Ihre Konnektivitäts- und Workload-Anforderungen anpassen. Mit Auto Scaling kann Ihr Neptune-DB-Cluster einen steigenden Workload bewältigen. Wenn der Workload anschließend wieder abnimmt, entfernt Auto Scaling nicht notwendige Replikate, damit Sie nicht für ungenutzte Kapazitäten zahlen müssen.

Sie können Auto Scaling nur mit einem Neptune-DB-Cluster verwenden, der bereits über eine primäre Writer-Instance und mindestens eine Read-Replica-Instance verfügt (siehe Amazon-Neptune-DB-Cluster und -Instances). Außerdem müssen alle Read-Replica-Instances im Cluster verfügbar sein. Wenn eine Read-Replica nicht verfügbar ist, führt Neptune Auto Scaling keine Aktion aus, bis jede Read-Replica im Cluster verfügbar ist.

Informationen zum Erstellen eines neuen Clusters finden Sie unter Neptun-Cluster erstellen.

Mithilfe von definieren Sie eine Skalierungsrichtlinie und wenden sie auf den DB-Cluster an. AWS CLI Sie können die auch verwenden AWS CLI , um Ihre Auto-Scaling-Richtlinie zu bearbeiten oder zu löschen. Die Richtlinie gibt die folgenden Auto-Scaling-Parameter an:

  • Die Mindest- und Höchstzahl von Replikaten im Cluster.

  • Ein ScaleOutCooldown Intervall zwischen der Skalierungsaktivität beim Hinzufügen von Replikaten und einem ScaleInCooldown Intervall zwischen der Skalierungsaktivität beim Löschen von Replikaten.

  • Die CloudWatch Metrik und der Metrik-Triggerwert für die Hoch- oder Herabskalierung.

Die Häufigkeit der Neptune-Auto-Scaling-Aktionen wird auf verschiedene Arten gedämpft:

  • Damit ein Leser mittels Auto-Scaling hinzugefügt oder gelöscht wird, muss zunächst für CPUUtilization der obere Alarmschwellenwert mindestens 3 Minuten überschritten oder der untere Alarmschwellenwert mindestens 15 Minuten unterschritten werden.

  • Nach dem ersten Hinzufügen oder Löschen wird die Häufigkeit der nachfolgenden Neptune-Auto-Scaling-Aktionen durch die Einstellungen für ScaleOutCooldown und ScaleInCooldown in der AutoSscaling-Richtlinie begrenzt.

Wenn die von Ihnen verwendete CloudWatch Metrik den hohen Schwellenwert erreicht, den Sie in Ihrer Richtlinie angegeben haben, und wenn das ScaleOutCooldown Intervall seit der letzten Auto-Scaling-Aktion abgelaufen ist und Ihr DB-Cluster noch nicht über die von Ihnen festgelegte maximale Anzahl von Replikaten verfügt, erstellt Neptune auto-scaling ein neues Replikat, das denselben Instance-Typ wie die primäre Instance des DB-Clusters verwendet.

Wenn die Metrik den von Ihnen angegebenen unteren Schwellenwert erreicht, das Intervall für ScaleInCooldown seit der letzten Auto-Scaling-Aktion verstrichen ist und Ihr DB-Cluster mehr als die von Ihnen festgelegte Mindestanzahl von Replikaten besitzt, löscht Neptune Auto Scaling ein Replikat.

Anmerkung

Neptune Auto Scaling entfernt nur Replikate, die es selbst erstellt hat. Bereits vorhandene Replikate werden nicht entfernt.

Mithilfe des DB-Cluster-Parameters neptune_autoscaling_config können Sie auch den Instance-Typ der neuen, von Neptune Auto Scaling erstellten Read-Replicas, die Wartungsfenster für diese Read-Replicas sowie die Tags angeben, die mit den neuen Read-Replicas verknüpft werden sollen. Sie geben diese Konfigurationseinstellungen in einer JSON-Zeichenfolge als Wert des Parameters neptune_autoscaling_config wie folgt an:

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

Beachten Sie, dass alle Anführungszeichen in der JSON-Zeichenfolge mit einem Backslash-Zeichen (\) maskiert werden müssen. Alle Leerzeichen in der Zeichenfolge sind wie üblich optional.

Wenn eine dieser drei Konfigurationseinstellungen nicht im Parameter neptune_autoscaling_config angegeben ist, wird sie aus der Konfiguration der primären Writer-Instance des DB-Clusters kopiert.

Wenn Auto Scaling eine neue Read-Replica-Instance hinzufügt, wird der DB-Instance-ID das Präfix autoscaled-reader vorangestellt (z. B. autoscaled-reader-7r7t7z3lbd-20210828). Außerdem wird jeder erstellten Read-Replica ein Tag mit dem Schlüssel autoscaled-reader und dem Wert TRUE hinzugefügt. Sie finden dieses Tag auf Tags auf der Detailseite der DB-Instance in der AWS Management Console.

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

Die Heraufstufung aller mittels Auto Scaling erstellten Read-Replica-Instances hat die niedrigste Priorität, standardmäßig 15. Daher werden während eines Failovers alle Replikate mit einer höheren Priorität, beispielsweise manuell erstellte Replikate, zuerst heraufgestuft. Siehe Fehlertoleranz für einen Neptune-DB-Cluster.

Die auto-scaling von Neptune wird mithilfe von Application Auto Scaling mit einer Zielverfolgungs-Skalierungsrichtlinie implementiert, die eine CPUUtilization CloudWatch Neptune-Metrik als vordefinierte Metrik verwendet.

Verwenden von Auto Scaling in einem Neptune-Serverless-DB-Cluster

Neptune Serverless reagiert sehr viel schneller als Neptune Auto Scaling, wenn die Nachfrage die Kapazität einer Instance überschreitet, und skaliert die Instance hoch, statt eine weitere Instance hinzuzufügen. Während Auto Scaling für vergleichsweise stabile Zunahmen oder Abnahmen des Workloads vorgesehen ist, bewältigt Serverless kurzfristige Spitzen und Schwankungen beim Bedarf.

Sie können Auto Scaling und Serverless auf der Basis ihrer jeweiligen Vorteile kombinieren und so eine flexible Infrastruktur schaffen, um Workload-Änderungen effizient zu bewältigen, dem Bedarf gerecht zu werden und die Kosten zu minimieren.

Um Auto Scaling und Serverless effektiv zu kombinieren, müssen Sie für Ihr Serverless-Cluster maxNCU hoch genug festlegen, um Spitzen und kurzfristige Änderungen des Bedarfs zu bewältigen. Andernfalls lösen vorübergehende Änderungen keine Serverless-Skalierung aus, sodass Auto Scaling möglicherweise viele unnötige zusätzliche Instances erstellt. Wenn maxNCU hoch genug festgelegt ist, kann die Serverless-Skalierung diese Änderungen schneller und kostengünstiger bewältigen.

Aktivieren von Auto Scaling für Amazon Neptune

Auto Scaling kann für Neptune-DB-Cluster nur über die AWS CLI aktiviert werden. Sie können Auto Scaling nicht über die AWS Management Console aktivieren.

Außerdem wird Auto Scaling in den folgenden Amazon-Regionen nicht unterstützt:

  • Afrika (Kapstadt): af-south-1

  • Naher Osten (VAE): me-central-1

  • AWS GovCloud (USA Ost): us-gov-east-1

  • AWS GovCloud (US-West): us-gov-west-1

Die Auto-Scaling-Aktivierung für Neptune-DB-Cluster umfasst drei Schritte:

1. Registrieren des DB-Clusters bei Application Auto Scaling

Der erste Schritt bei der Auto-Scaling-Aktivierung für einen Neptune-DB-Cluster besteht in der Registrierung des Clusters bei Application Auto Scaling über die AWS CLI oder einen Application Auto Scaling SDK. Der Cluster muss bereits über eine primäre Instance und mindestens eine Read-Replica-Instance verfügen:

Um beispielsweise einen Cluster für die automatische Skalierung mit einem bis acht zusätzlichen Replikaten zu registrieren, könnten Sie den AWS CLI register-scalable-targetBefehl wie folgt verwenden:

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

Dies entspricht der Verwendung der Application-Auto-Scaling-API-Operation RegisterScalableTarget.

Der Befehl AWS CLI register-scalable-target verwendet die folgenden Parameter:

  • service-namespace   –   Legen Sie diesen Parameter auf neptune fest.

    Dieser Parameter entspricht dem Parameter ServiceNamespace der Application-Auto-Scaling-API.

  • resource-id   –   Legen Sie diesen Parameter auf die Ressourcen-ID für Ihren Neptune-DB-Cluster fest. Der Ressourcentyp ist cluster, gefolgt von einem Doppelpunkt (':') und dem Namen Ihres DB-Clusters.

    Dieser Parameter entspricht dem Parameter ResourceID der Application-Auto-Scaling-API.

  • scalable-dimension   –   Da die skalierbare Dimension in diesem Fall die Anzahl der Replikat-Instances im DB-Cluster ist, legen Sie diesen Parameter auf neptune:cluster:ReadReplicaCount fest.

    Dieser Parameter entspricht dem Parameter ScalableDimension der Application-Auto-Scaling-API.

  • min-capacity   –   Die Mindestanzahl der DB-Reader-Replikat-Instances, die von Application Auto Scaling verwaltet werden sollen. Dieser Parameter sollte auf einen Wert zwischen 0 und 15 festgelegt werden und gleich oder kleiner als der Wert sein, der in max-capacity für die maximal Anzahl von Neptune-Replikaten angegeben ist. Es muss mindestens ein Leser im DB-Cluster vorhanden sein, damit Auto Scaling funktioniert.

    Dieser Parameter entspricht dem Parameter MinCapacity der Application-Auto-Scaling-API.

  • max-capacity   –   Die maximale Anzahl von DB-Reader-Replikat-Instances im DB-Cluster, einschließlich bereits vorhandener Instances und neuer Instances, die von Application Auto Scaling verwaltet werden. Dieser Parameter muss auf einen Wert zwischen 0 und 15 festgelegt werden und gleich oder kleiner als der Wert sein, der in min-capacity für die Mindestanzahl von Neptune-Replikaten angegeben ist.

    Der max-capacity AWS CLI Parameter entspricht dem MaxCapacity Parameter in der Application Auto Scaling API.

Wenn Sie Ihren DB-Cluster registrieren, erstellt Application Auto Scaling die serviceverknüpfte Rolle AWSServiceRoleForApplicationAutoScaling_NeptuneCluster. Weitere Informationen finden Sie unter Serviceverknüpfte Rollen für Application Auto Scaling im Benutzerhandbuch für Application Auto Scaling.

2. Definieren einer Auto-Scaling-Richtlinine für Ihren DB-Cluster

Eine Skalierungsrichtlinie zur Zielverfolgung ist als JSON-Textobjekt definiert, das auch in einer Textdatei gespeichert werden kann. Für Neptune kann diese Richtlinie derzeit nur die CPUUtilization CloudWatch Neptune-Metrik als vordefinierte Metrik mit dem Namen verwenden. NeptuneReaderAverageCPUUtilization

Dies ist ein Beispiel für die Konfiguration einer Skalierungsrichtlinie zur Zielnachverfolgung für Neptune:

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

Das Element TargetValue gibt den Prozentsatz der CPU-Auslastung an, ab dem Auto Scaling aufskaliert (d. h. weitere Replikate hinzufügt) und unter dem Auto-Scaling abskaliert (d. h. Replikate löscht). In diesem Fall ist der Zielprozentsatz für die Auslösung der Skalierung 60.0 %.

Das Element ScaleInCooldown gibt den Zeitraum in Sekunden an, der zwischen zwei Abskalierungen verstreichen muss. Standardmäßig ist ein Zeitraum von 300 Sekunden festgelegt. Hier gibt der Wert 600 an, dass zwischen dem Abschluss einer Replikatlöschung und dem Start einer anderen Replikatlöschung mindestens zehn Minuten liegen müssen.

Das Element ScaleOutCooldown gibt den Zeitraum in Sekunden an, der zwischen zwei Aufskalierungen verstreichen muss. Standardmäßig ist ein Zeitraum von 300 Sekunden festgelegt. Hier gibt der Wert 600 an, dass zwischen dem Abschluss einer Replikathinzufügung und dem Start einer anderen Replikathinzufügung mindestens zehn Minuten liegen müssen.

Das Element DisableScaleIn ist ein boolescher Wert. Wenn vorhanden und auf festgelegt, wird die Abskalierung vollständig deaktiviert. Das bedeutet, dass Auto Scaling Replikate hinzufügt, aber niemals entfernt. Standardmäßig ist die Abskalierung aktiviert und DisableScaleIn ist false.

Nach der Registrierung des Neptune-DB-Clusters bei Application Auto Scaling und der Definition einer JSON-Skalierungsrichtlinie in einer Textdatei wenden Sie die Skalierungsrichtlinie auf den registrierten DB-Cluster an. Sie können dazu den AWS CLI put-scaling-policyBefehl mit Parametern wie den folgenden verwenden:

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)

Nach der Anwendung der Auto-Scaling-Richtlinie ist Auto Scaling für Ihren DB-Cluster aktiviert.

Sie können den AWS CLI put-scaling-policyBefehl auch verwenden, um eine bestehende Auto-Scaling-Richtlinie zu aktualisieren.

Siehe auch PutScalingRichtlinie in der Referenz zur API für Application Auto Scaling.

Entfernen von Auto Scaling aus einem Neptune-DB-Cluster

Verwenden Sie die Befehle AWS CLIdelete-scaling-policy und deregister-scalable-target, um Auto-Scaling aus einem Neptune-DB-Cluster zu entfernen.