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.
Lebenszyklus-Hooks bei Amazon EC2 Auto Scaling
Amazon EC2 Auto Scaling bietet die Möglichkeit, Lebenszyklus-Hooks zu Ihren Auto-Scaling-Gruppen hinzuzufügen. Mit diesen Hooks können Sie Lösungen erstellen, die Ereignisse im Lebenszyklus von Auto-Scaling-Instances erkennen und dann eine benutzerdefinierte Aktion auf Instances ausführen, wenn das entsprechende Lebenszyklusereignis eintritt. Ein Lebenszyklus-Hook gibt eine bestimmte Zeitspanne vor (standardmäßig eine Stunde), in der auf den Abschluss der Aktion gewartet wird, bevor die Instance in den nächsten Zustand übergeht.
Als Beispiel für die Verwendung von Lebenszyklus-Hooks mit Auto-Scaling-Instances:
-
Wenn ein horizontales Skalierungsereignis auftritt, schließt die neu gestartete Instance ihre Startsequenz ab und wechselt in einen Wartezustand. Während sich die Instance in einem Wartestatus befindet, können Sie auf ein Skript ausführen, um die erforderlichen Softwarepakete für Ihre Anwendung herunterzuladen und zu installieren. Stellen Sie dabei sicher, dass Ihre Instance vollständig bereit ist, bevor sie mit dem Empfang von Datenverkehr beginnt. Wenn das Skript die Installation der Software abgeschlossen hat, sendet es den complete-lifecycle-action-Befehl, um fortzufahren.
-
Wenn ein Scale-In-Ereignis eintritt, pausiert ein Lifecycle-Hook die Instance, bevor sie beendet wird, und sendet Ihnen eine Benachrichtigung über Amazon. EventBridge Während sich die Instance im Wartestatus befindet, können Sie eine AWS Lambda Funktion aufrufen oder eine Verbindung zur Instance herstellen, um Protokolle oder andere Daten herunterzuladen, bevor die Instance vollständig beendet wird.
Eine beliebte Verwendung von Lebenszyklus-Hooks besteht darin, zu steuern, wann Instances bei Elastic Load Balancing registriert werden. Wenn Sie Ihrer Auto-Scaling-Gruppe einen Start-Lebenszyklus-Hook hinzufügen, können Sie sicherstellen, dass Ihre Bootstrap-Skripte erfolgreich abgeschlossen wurden und die Anwendungen auf den Instances bereit sind, Datenverkehr anzunehmen, bevor sie am Ende des Lebenszyklus-Hooks beim Load Balancer registriert werden.
Inhalt
- Verfügbarkeit von Lebenszyklus-Hooks
- Überlegungen und Einschränkungen
- Zugehörige Ressourcen
- So funktionieren Lifecycle-Hooks in Auto Scaling Scaling-Gruppen
- Vorbereiten des Hinzufügens eines Lebenszyklus-Hook
- Abrufen des Ziellebenszyklus-Status
- Fügen Sie Lifecycle-Hooks zu Ihrer Auto Scaling Scaling-Gruppe hinzu
- Eine Lebenszyklusaktion in einer Auto Scaling Scaling-Gruppe abschließen
- Tutorial: Verwenden Sie Instanz-Metadaten, um den Lebenszyklusstatus abzurufen
- Tutorial: Konfigurieren eines Lebenszyklus-Hook, der eine Lambda-Funktion aufruft
Verfügbarkeit von Lebenszyklus-Hooks
In der folgenden Tabelle finden Sie die Lebenszyklus-Hooks, die für verschiedene Szenarien verfügbar sind
Ereignis | Instance-Start oder -Beendigung¹ | Maximale Instance-Lebensdauer: Ersatz-Instances | Instance-Aktualisierung: Ersatz-Instances | Kapazitätsausgleich: Ersatz-Instances | Warm-Pools: Instances, die den Warm-Pool betreten und verlassen |
---|---|---|---|---|---|
Startende Instance | ✓ | ✓ | ✓ | ✓ | ✓ |
Endende Instance | ✓ | ✓ | ✓ | ✓ | ✓ |
¹ Gilt für alle Starts und Beendigungen, unabhängig davon, ob sie automatisch oder manuell eingeleitet werden, z. B. wenn Sie die Optionen SetDesiredCapacity
oder TerminateInstanceInAutoScalingGroup
aufrufen. Gilt nicht, wenn Sie Instances zuordnen oder trennen, Instances in den Standby-Modus verschieben oder die Gruppe mit der Option „Löschen erzwingen“ löschen.
Überlegungen zu und Einschränkungen für Lebenszyklus-Hooks
Bei der Arbeit mit Lebenszyklus-Hooks sind die folgenden Hinweise und Einschränkungen zu beachten:
-
Amazon EC2 Auto Scaling bietet einen eigenen Lebenszyklus, der die Verwaltung von Auto-Scaling-Gruppen unterstützt. Dieser Lebenszyklus unterscheidet sich von dem anderer EC2-Instances. Weitere Informationen finden Sie unter Lebenszyklus der Amazon EC2 Auto Scaling Scaling-Instance. Instances in einem Warm Pool haben auch einen eigenen Lebenszyklus, wie unter Lebenszyklusstatusübergänge für Instances in einem Warm Pool beschrieben.
-
Sie können Lebenszyklus-Hooks mit Spot-Instances verwenden, aber ein Lebenszyklus-Hook kann nicht verhindern, dass eine Instance beendet wird, wenn keine Kapazität mehr verfügbar ist, was jederzeit innerhalb eines zweiminütigen Unterbrechungshinweises passieren kann. Weitere Informationen finden Sie unter Spot-Instance-Unterbrechungen im Amazon EC2 EC2-Benutzerhandbuch. Sie können jedoch den Kapazitätsausgleich aktivieren, um Spot-Instances proaktiv zu ersetzen, die eine Neuausgleichsempfehlung vom Amazon-EC2-Spot-Service erhalten haben, ein Signal, das gesendet wird, wenn eine Spot-Instance einem erhöhten Unterbrechungsrisiko ausgesetzt ist. Weitere Informationen finden Sie unter Verwenden des Kapazitätsausgleichs, um Amazon-EC2-Spot-Unterbrechungen zu behandeln.
-
Instances können eine begrenzte Zeit lang in einem Wartestatus verbleiben. Das Standard-Timeout für einen Lebenszyklus-Hook beträgt eine Stunde (Heartbeat-Timeout). Es gibt auch ein globales Timeout, das die maximale Zeitspanne angibt, für die Sie eine Instance in einem Wartestatus belassen können. Das globale Timeout beträgt 48 Stunden bzw. das 100-fache der Heartbeat-Zeitüberschreitung, je nachdem, welcher Wert kleiner ist.
-
Das Ergebnis des Lebenszyklus-Hooks kann entweder Abbrechen oder Fortsetzen sein. Wenn eine Instance gestartet wird, zeigt „Continue“ (Fortfahren) an, dass Ihre Aktionen erfolgreich waren und dass Amazon EC2 Auto Scaling die Instance in Betrieb nehmen kann. Andernfalls zeigt „Abandon“ (Abbruch) an, dass die benutzerdefinierten Aktionen fehlgeschlagen sind, und wir die Instance beenden und diese ersetzen können. Wenn die Instance beendet wird, erlauben sowohl „Abbrechen“ als auch „Fortfahren“ das Beenden der Instance. Allerdings stoppt „Abbrechen“ alle verbleibenden Aktionen, z. B. andere Lebenszyklus-Hooks, und „Fortfahren“ ermöglicht das Abschließen anderer Lebenszyklus-Hooks.
-
Amazon EC2 Auto Scaling begrenzt die Rate, mit der Instances gestartet werden können, wenn die Lebenszyklus-Hooks konsistent fehlschlagen. Testen und Beheben Sie daher alle dauerhaften Fehler in Ihren Lebenszyklus-Aktionen.
-
Das Erstellen und Aktualisieren von Lifecycle-Hooks mit dem AWS CLI AWS CloudFormation, oder einem SDK bietet Optionen, die beim Erstellen eines Lifecycle-Hooks aus dem nicht verfügbar sind. AWS Management Console Beispielsweise wird das Feld zur Angabe des ARN eines SNS-Themas oder einer SQS-Warteschlange nicht in der Konsole angezeigt, da Amazon EC2 Auto Scaling bereits Ereignisse an Amazon sendet. EventBridge Diese Ereignisse können gefiltert und nach Bedarf an AWS Dienste wie Lambda, Amazon SNS und Amazon SQS umgeleitet werden.
-
Sie können einer Auto Scaling Scaling-Gruppe während der Erstellung mehrere Lifecycle-Hooks hinzufügen, indem Sie die CreateAutoScalingGroupAPI mit dem AWS CLI AWS CloudFormation, oder einem SDK aufrufen. Jeder Hook muss jedoch das gleiche Benachrichtigungsziel und die gleiche IAM-Rolle haben, falls angegeben. Um Lifecycle-Hooks mit unterschiedlichen Benachrichtigungszielen und unterschiedlichen Rollen zu erstellen, erstellen Sie die Lifecycle-Hooks nacheinander in separaten Aufrufen der PutLifecycleHookAPI.
-
Wenn Sie zum Beispiel einen Lebenszyklus-Hook für den Instance-Start hinzufügen, beginnt die Übergangsfrist für die Zustandsprüfung, sobald die Instance den Status
InService
erreicht hat. Weitere Informationen finden Sie unter Legen Sie die Wartefrist für die Zustandsprüfung einer Auto-Scaling-Gruppe fest.
Überlegungen zur Skalierung
-
Dynamische Skalierungsrichtlinien werden als Reaktion auf CloudWatch metrische Daten wie CPU und Netzwerk-I/O, die über mehrere Instanzen hinweg aggregiert werden, nach innen und außen skaliert. Beim Skalieren zählt Amazon EC2 Auto Scaling eine neue Instance nicht sofort zu den aggregierten Instance-Metriken der Auto-Scaling-Gruppe. Es wartet, bis die Instance den Status
InService
erreicht hat und der Instance-Warmup abgeschlossen ist. Weitere Informationen finden Sie unter Leistungsaspekte der Skalierung im Thema Aufwärmen der Standard-Instance. -
Beim Skalieren spiegeln die aggregierten Instance-Metriken möglicherweise nicht sofort die Entfernung einer beendeten Instance wider. Die terminierende Instance wird nicht mehr zu den aggregierten Instance-Metriken der Gruppe gezählt, kurz nachdem der Amazon EC2 Auto Scaling Terminierungsworkflow beginnt.
-
In den meisten Fällen, in denen Lebenszyklus-Hooks aufgerufen werden, werden die Skalierungsaktivitäten aufgrund einfacher Skalierungsrichtlinien angehalten, bis die Lifecycle-Aktionen abgeschlossen sind und die Ruhephase abgelaufen ist. Bei einem Festlegen eines langen Intervalls für die Ruhephase dauert es länger, bis die Skalierung fortgesetzt werden kann. Weitere Informationen finden Sie unter Lebenszyklus-Hooks können zusätzliche Verzögerungen verursachen im Thema Ruhephase. Im Allgemeinen empfehlen wir, keine einfachen Skalierungsrichtlinien zu verwenden, wenn Sie stattdessen entweder eine Stufenskalierung oder eine Zielverfolgungsskalierungs-Richtlinie verwenden können.
Zugehörige Ressourcen
Ein Einführungsvideo finden Sie unter AWS re:Invent 2018: Capacity Management Made Easy with Amazon EC2 Auto
Wir stellen einige JSON- und YAML-Vorlagenausschnitte zur Verfügung, anhand derer Sie verstehen können, wie Sie Lifecycle-Hooks in Ihren Stack-Vorlagen deklarieren. AWS CloudFormation Weitere Informationen finden Sie in der AWS::AutoScaling::LifecycleHookReferenz im AWS CloudFormation Benutzerhandbuch.
Sie können auch unser GitHubRepository
Beispiele für die Verwendung von Lebenszyklus-Hooks finden Sie in den folgenden Blog-Beiträgen.