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 mithilfe von Amazon eine Benachrichtigung EventBridge. Während sich die Instanz im Wartezustand befindet, können Sie eine aufrufen AWS Lambda Funktion oder Verbindung zur Instanz herstellen, um Protokolle oder andere Daten herunterzuladen, bevor die Instanz 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
Kontrollieren Sie die Aufbewahrung von Instanzen mit Richtlinien für den Instanzlebenszyklus
Schließen Sie eine Lifecycle-Aktion in einer Auto Scaling-Gruppe ab
Tutorial: Verwenden Sie Instanzmetadaten, 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
| Veranstaltung | 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 Instance-Lebenszyklus bei Amazon EC2 Auto Scaling. Instances in einem Warm Pool haben auch einen eigenen Lebenszyklus, wie unter Lebenszyklusstatusübergänge für Instances in einem Warm Pool beschrieben.
-
Wenn Sie einen warmen Pool für Ihre Auto Scaling-Gruppe konfigurieren, stoppt Amazon EC2 Auto Scaling jede Instance, die in den warmen Pool gelangt, oder versetzt sie in den Ruhezustand. Die Aktion Stopp oder Hibernate wartet nicht darauf, dass die Ausführung der Benutzerdaten abgeschlossen ist. Um eine Instanz bis zur Fertigstellung Ihres Bootstrap-Skripts abzuhalten, verwenden Sie einen Lifecycle-Hook für den
EC2_INSTANCE_LAUNCHINGLifecycle-Aktion. Weitere Informationen finden Sie unter Verwenden Sie Lifecycle-Hooks mit einem warmen Pool in der Auto Scaling-Gruppe. -
Standardmäßig werden die Hooks für den Lebenszyklus der Kündigung nach bestem Wissen und Gewissen ausgeführt. Wenn ein Hook im Lebenszyklus einer Termination das Zeitlimit überschreitet oder abgebrochen wird, fährt Amazon EC2 Auto Scaling mit der sofortigen Beendigung der Instance fort. Sie können Hooks für den Terminierungslebenszyklus mit einer Richtlinie für den Instance-Lebenszyklus zur Aufbewahrung von Instances kombinieren. Weitere Informationen finden Sie unter Kontrollieren Sie die Aufbewahrung von Instanzen mit Richtlinien für den Instanzlebenszyklus.
-
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 in der Amazon 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 Kapazitätsausgleich bei Auto Scaling als Ersatz für gefährdete Spot-Instances.
-
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.
-
Erstellen und Aktualisieren von Lifecycle-Hooks mit dem AWS CLI, CloudFormation, oder ein SDK bietet Optionen, die beim Erstellen eines Lifecycle-Hooks aus dem AWS-Managementkonsole. Beispielsweise erscheint das Feld zur Angabe des ARN eines SNS-Themas oder einer SQS-Warteschlange nicht in der Konsole, da Amazon EC2 Auto Scaling bereits Ereignisse an Amazon sendet EventBridge. Diese Ereignisse können gefiltert und umgeleitet werden AWS Dienste wie Lambda, Amazon SNS und Amazon SQS nach Bedarf.
-
Sie können einer Auto Scaling-Gruppe beim Erstellen mehrere Lifecycle-Hooks hinzufügen, indem Sie den CreateAutoScalingGroup API unter Verwendung der AWS CLI, CloudFormation, oder ein SDK. 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 an PutLifecycleHook API.
-
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
InServiceerreicht 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 folgende Faktoren vergrößert und verkleinert CloudWatch Metrikdaten wie CPU und Netzwerk I/O, die über mehrere Instanzen hinweg aggregiert sind. 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
InServiceerreicht 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: Kapazitätsmanagement leicht gemacht mit Amazon EC2 Auto Scaling
Wir stellen einige JSON- und YAML-Vorlagenausschnitte zur Verfügung, anhand derer Sie verstehen können, wie Sie Lifecycle-Hooks in Ihrem Konto deklarieren CloudFormation Vorlagen stapeln. Weitere Informationen finden Sie in der AWS::AutoScaling::LifecycleHook Referenz in der AWS CloudFormation Benutzerleitfaden.
Sie können auch unsere besuchen GitHub Endlager
Beispiele für die Verwendung von Lebenszyklus-Hooks finden Sie in den folgenden Blog-Beiträgen.