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.
Kapazitätsausgleich bei Auto Scaling als Ersatz für gefährdete Spot-Instances
Der Kapazitätsausgleich in Auto Scaling hilft Ihnen dabei, die Verfügbarkeit Ihrer Workloads aufrechtzuerhalten, indem Sie Spot-Instances, bei denen das Risiko einer Unterbrechung besteht, proaktiv ersetzen.
Wenn für Spot-Instances ein erhöhtes Risiko einer Unterbrechung besteht, sendet der Amazon EC2 Spot-Service eine Empfehlung zur Neuverteilung von EC2-Instances an Amazon EC2 Auto Scaling. Wenn Sie Capacity Rebalancing aktivieren, versucht Auto Scaling, proaktiv die Spot-Instances in Ihrer Gruppe zu ersetzen, die eine Empfehlung zur Neuverteilung von EC2-Instances erhalten haben. Dies gibt Ihnen die Möglichkeit Ihr Workload auf neue oder bestehende Spot-Instances auszugleichen, die nicht einem erhöhten Risiko einer Unterbrechung ausgesetzt sind.
Wenn Sie Capacity Rebalancing nicht verwenden, ersetzt Auto Scaling Spot-Instances erst, nachdem der Amazon EC2-Spot-Service die Instances unterbrochen hat und ihre Zustandsprüfung fehlschlägt. Bevor Sie eine Instance unterbrechen, gibt Amazon EC2 immer sowohl eine EC2-Instance-Neuausgleichsempfehlung als auch zwei Minuten im Voraus einen Hinweis auf die Spot-Instance-Unterbrechung aus.
Inhalt
-Übersicht
Um Kapazitätswiederherstellungen mit Ihrer Auto-Scaling-Gruppe zu verwenden, gehen Sie wie folgt vor:
-
Konfigurieren Sie Ihre Auto-Scaling-Gruppe für die Verwendung mehrerer Instance-Typen und Availability Zones. Auf diese Weise kann Amazon EC2 Auto Scaling die verfügbare Kapazität für Spot-Instances in jeder Availability Zone betrachten. Weitere Informationen finden Sie unter Auto-Scaling-Gruppen mit mehreren Instance-Typen und Kaufoptionen.
-
Fügen Sie bei Bedarf Lebenszyklus-Hooks hinzu, um Ihre Anwendung beim Skalieren innerhalb der Instances, die die Benachrichtigung zur erneuten Verteilung empfangen, ordnungsgemäß herunterzufahren. Weitere Informationen finden Sie unter Lebenszyklus-Hooks bei Amazon EC2 Auto Scaling.
Im Folgenden finden Sie einige Gründe, warum Sie einen Lebenszyklus-Hook verwenden könnten:
-
Für das ordnungsgemäße Herunterfahren von Amazon SQS-Workern
-
Zum Abschließen der Abmeldung vom Domain Name System (DNS)
-
Zum Abrufen und Hochladen von System- oder Anwendungsprotokollen in Amazon Simple Storage Service (Amazon S3)
-
-
Entwickeln Sie eine benutzerdefinierte Aktion für den Lebenszyklus-Hook. Um Ihre benutzerdefinierte Aktion so schnell wie möglich aufzurufen, müssen Sie wissen, wann eine Instance bereit ist, beendet zu werden. Sie finden dies heraus, indem Sie den Lebenszyklusstatus der Instance ermitteln.
-
Um eine Aktion außerhalb der Instance aufzurufen, schreiben Sie eine EventBridge Regel und automatisieren Sie, welche Aktion ausgeführt werden soll, wenn ein Ereignismuster mit der Regel übereinstimmt.
-
Um eine Aktion innerhalb der Instance aufzurufen, konfigurieren Sie die Instance so, dass sie ein Beendigungsskript ausführt und den Lebenszyklusstatus über die Instance-Metadaten abruft.
Es ist wichtig, die benutzerdefinierte Aktion so zu gestalten, dass sie in weniger als zwei Minuten abgeschlossen ist. Dadurch wird sichergestellt, dass genügend Zeit zur Verfügung steht, um Aufgaben zu erledigen, bevor die Instance beendet wird.
-
Nachdem Sie diese Schritte abgeschlossen haben, können Sie mit den Kapazitätswiederherstellungen beginnen.
Verhalten bei Kapazitätswiederherstellungen
Bei Kapazitätswiederherstellungen verhält sich Amazon EC2 Auto Scaling folgendermaßen, wenn eine Instance eine Empfehlung zur erneuten Verteilung erhält:
-
Beim Starten einer neuen Spot Instance wartet Amazon EC2 Auto Scaling, bis die neue Instance ihre Zustandsprüfung besteht, bevor die vorherige Instance beendet wird. Wenn mehr als eine Instance ersetzt wird, beginnt die Beendigung jeder vorherigen Instance, nachdem die neue Instance gestartet wurde und ihre Zustandsprüfung bestanden hat.
-
Da Amazon EC2 Auto Scaling vor dem Beenden der vorherigen Instances versucht, neue zu starten, kann das Wiederherstellen des Gleichgewichts beeinträchtigt und sogar gänzlich unterbrochen werden, falls die angegebene maximale Kapazität nahezu oder gänzlich erreicht ist. Um dieses Problem zu vermeiden, kann Amazon EC2 Auto Scaling die maximale Größe der Gruppe vorübergehend bis zu 10 Prozent der gewünschten Kapazität überschreiten.
-
Wenn Sie keinen Lebenszyklus-Hook zu Ihrer Auto-Scaling-Gruppe hinzufügen, beginnt Amazon EC2 Auto Scaling mit dem Beenden der vorherigen Instances, sobald die neuen Instances ihre Zustandsprüfung bestehen.
-
Wenn Sie einen Lebenszyklus-Hook hinzugefügt haben, verlängert sich die Zeit, die benötigt wird, bis wir mit der Beendigung der vorherigen Instances beginnen, um den Timeout-Wert, den Sie für den Lebenszyklus-Hook angegeben haben.
-
Wenn Sie Skalierungsrichtlinien oder eine geplante Skalierung verwenden, werden die Skalierungsaktivitäten parallel ausgeführt. Wenn eine Skalierungsaktivität ausgeführt wird und Ihre Auto-Scaling-Gruppe unter der neuen gewünschten Kapazität liegt, wird Amazon EC2 Auto Scaling zuerst skaliert, bevor die vorherigen Instances beendet werden.
Wenn in einer Availability Zone keine Kapazität für Ihre Instance-Typen vorhanden ist, versucht Amazon EC2 Auto Scaling weiterhin, Spot-Instances in anderen aktivierten Availability Zones zu starten, bis es erfolgreich ist.
Im Worst-Case-Szenario, wenn die neuen Instances nicht gestartet werden oder die Zustandsprüfung fehlschlägt, versucht Amazon EC2 Auto Scaling weiterhin, sie neu zu starten. Während es versucht, neue Instances zu starten, werden Ihre vorherigen schließlich unterbrochen und mit einer zweiminütigen Unterbrechungsmeldung zwangsweise beendet.
Überlegungen
Berücksichtigen Sie bei der Verwendung von Kapazitätswiederherstellungen die folgenden Punkte:
- Gestalten Sie Ihre Anwendung so, dass sie Spot-Unterbrechungen toleriert
-
Ihre Anwendung sollte dynamische Änderungen in der Anzahl der Instances und die Möglichkeit, dass eine Spot-Instance frühzeitig unterbrochen wird, bewältigen können. Wenn sich z. B. die Auto-Scaling-Gruppe hinter einem Elastic Load Balancing Load Balancer befindet, wartet Amazon EC2 Auto Scaling darauf, dass die Instance vom Load Balancer abgemeldet wird, bevor Ihr Lebenszyklus-Hook aufgerufen wird. Wenn die Zeit zum Abmelden der Instance und zum Abschließen der Lebenszyklus-Aktion zu lange dauert, wird die Instance möglicherweise unterbrochen, während Amazon EC2 Auto Scaling auf den Abschluss Ihrer Lebenszyklus-Aktion wartet, bevor es die Instance beendet.
Es ist Amazon EC2 nicht immer möglich, das Signal für die Neuausgleichsempfehlung vor der zweiminütigen Spot-Instance-Unterbrechungsbenachrichtigung zu senden. Daher kann das Empfehlungssignal für eine erneute Verteilung manchmal zusammen mit der zweiminütigen Unterbrechungsbenachrichtigung eingehen. In diesem Fall ruft Amazon EC2 Auto Scaling den Lebenszyklus-Hook auf und versucht, sofort eine neue Spot-Instance zu starten.
- Vermeiden Sie ein erhöhtes Risiko einer Unterbrechung von Ersatz-Spot-Instances
-
Ihre Ersatz-Spot-Instances haben möglicherweise ein erhöhtes Risiko einer Unterbrechung, wenn Sie die
lowest-price-Zuweisungsstrategie verwenden. Das liegt daran, dass wir Instances im preisgünstigsten Pool starten, der zu diesem Zeitpunkt über verfügbare Kapazität verfügt, auch wenn Ihre Ersatz-Spot-Instances wahrscheinlich kurz nach dem Start unterbrochen werden. Um ein erhöhtes Unterbrechungsrisiko zu vermeiden, wird dringend empfohlen, dielowest-price-Zuweisungsstrategie nicht zu verwenden. Stattdessen empfehlen wir dieprice-capacity-optimized-Zuweisungsstrategie. Diese Strategie startet Ersatz-Spot-Instances in Spot-Pools, bei denen die Wahrscheinlichkeit einer Unterbrechung am geringsten ist und die den niedrigsten Preis haben. Daher ist es weniger wahrscheinlich, dass sie in naher Zukunft unterbrochen werden. - Amazon EC2 Auto Scaling startet eine neue Instance nur dann, wenn die Verfügbarkeit gleich oder besser ist
-
Eines der Ziele des Kapazitätsausgleichs ist die Verbesserung der Verfügbarkeit einer Spot Instance. Wenn eine vorhandene Spot Instance eine Neuausgleichsempfehlung erhält, startet Amazon EC2 Auto Scaling nur dann eine neue Instance, wenn die neue Instance dieselbe oder eine bessere Verfügbarkeit als die vorhandene Instance bietet. Wenn das Risiko einer Unterbrechung einer neuen Instance größer ist als das der vorhandenen Instance, startet Amazon EC2 Auto Scaling keine neue Instance. Amazon EC2 Auto Scaling wird die Spot-Kapazitätspools jedoch weiterhin auf der Grundlage der vom Amazon-EC2-Spot-Service bereitgestellten Informationen bewerten und eine neue Instance starten, falls sich die Verfügbarkeit verbessert.
Es besteht die Möglichkeit, dass Ihre vorhandene Instance unterbrochen wird, ohne dass Amazon EC2 Auto Scaling proaktiv eine neue Instance startet. In diesem Fall versucht Amazon EC2 Auto Scaling, eine neue Instance zu starten, sobald die Spot-Instance-Unterbrechungsmeldung eingeht. Das geschieht unabhängig davon, ob bei der neuen Instance ein hohes Unterbrechungsrisiko besteht.
- Capacity Rebalancing erhöht nicht die Unterbrechungsrate Ihrer Spot-Instance
-
Wenn Sie Capacity Rebalancing aktivieren, wird Ihre Spot-Instance-Unterbrechungsrate (die Anzahl der Spot-Instances, die zurückgefordert werden, wenn Amazon EC2 die Kapazität zurück benötigt) nicht erhöht. Wenn der Kapazitätsausgleich jedoch feststellt, dass bei einer Instance das Risiko einer Unterbrechung besteht, versucht Amazon EC2 Auto Scaling sofort, eine neue Instance zu starten. Daher werden möglicherweise mehr Instances ersetzt, als wenn Sie darauf gewartet hätten, dass Amazon EC2 Auto Scaling eine neue Instance startet, nachdem die gefährdete Instance unterbrochen wurde.
Sie können zwar mehr Instances mit aktivierten Kapazitätswiederherstellungen ersetzen, profitieren jedoch davon, dass Sie eher proaktiv als reaktiv sind. Dadurch haben Sie mehr Zeit, Maßnahmen zu ergreifen, bevor Ihre Instances unterbrochen werden. Mit einer Spot-Instance-Unterbrechungsbenachrichtigung haben Sie normalerweise nur bis zu zwei Minuten Zeit, um Ihre Instance ordnungsgemäß herunterzufahren. Wenn die Kapazitätswiederherstellungen eine neue Instance im Voraus starten, geben Sie vorhandenen Prozessen eine bessere Chance, auf Ihrer gefährdeten Instance abgeschlossen zu werden. Sie können auch mit dem Herunterfahren Ihrer Instance beginnen, verhindern, dass neue Arbeiten für Ihre gefährdete Instance geplant werden, und die neu gestartete Instance auf die Übernahme der Anwendung vorbereiten. Mit dem proaktiven Ersetzen durch Kapazitätswiederherstellungen profitieren Sie von einer reibungslosen Kontinuität.
Betrachten Sie als theoretisches Beispiel zur Demonstration der Risiken und Vorteile des Einsatzes von Kapazitätswiederherstellungen das folgende Szenario:
-
14:00 Uhr – Für Instance A wird eine Empfehlung zum erneuten Ausgleich empfangen, und Amazon EC2 Auto Scaling versucht sofort, eine Ersatz-Instance B zu starten, sodass Sie Zeit haben, Ihre Shutdown-Verfahren zu starten.
-
14:30 Uhr – Für Instance B wird eine Empfehlung zum erneuten Ausgleich empfangen, die durch Instance C ersetzt wird, sodass Sie Zeit haben, Ihre Shutdown-Verfahren zu starten.
-
14:32 Uhr — Wenn keine Kapazitätswiederherstellungen aktiviert wären und um 14:32 Uhr eine Spot-Instance-Unterbrechungsmeldung für Instance A eingegangen wäre, hätten Sie nur bis zu zwei Minuten Zeit gehabt, um Maßnahmen zu ergreifen. Instance A wäre jedoch bis zu diesem Zeitpunkt ausgeführt worden.
-