Lebenszyklus-Hooks bei Amazon EC2 Auto Scaling - Amazon EC2 Auto Scaling

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 Abskalierungsereignis eintritt, pausiert ein Lebenszyklus-Hook die Instance, bevor sie beendet wird, und sendet Ihnen eine Benachrichtigung mit Amazon EventBridge. Während sich die Instance im Wartestatus befindet, können Sie eine - AWS Lambda Funktion aufrufen oder eine Verbindung mit der Instance herstellen, um Protokolle oder andere Daten herunterzuladen, bevor die Instance vollständig beendet ist.

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.

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 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.

  • 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 Benachrichtigungen über Spot-Instance-Unterbrechungen im Amazon EC2-Benutzerhandbuch für Linux-Instances. 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.

  • Erstellen und Aktualisieren von Lebenszyklus-Hooks mit der oder ein SDK bietet Optionen AWS CLI AWS CloudFormation, die beim Erstellen eines Lebenszyklus-Hooks aus der 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 Services wie Lambda, Amazon SNS und Amazon SQS umgeleitet werden.

  • Sie können einer Auto Scaling-Gruppe während der Erstellung mehrere Lebenszyklus-Hooks hinzufügen, indem Sie die CreateAutoScalingGroup API über die AWS CLI AWS CloudFormation oder ein SDK aufrufen. Jeder Hook muss jedoch das gleiche Benachrichtigungsziel und die gleiche IAM-Rolle haben, falls angegeben. Um Lebenszyklus-Hooks mit unterschiedlichen Benachrichtigungszielen und unterschiedlichen Rollen zu erstellen, erstellen Sie die Lebenszyklus-Hooks einzeln in separaten Aufrufen der 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 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 skalieren als Reaktion auf CloudWatch Metrikdaten wie CPU und Netzwerk-E/A, die über mehrere Instances aggregiert werden, ein- und aus. 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.

Ein Einführungsvideo finden Sie unter AWS re:Invent 2018: Kapazitätsverwaltung mit Amazon EC2 Auto Scaling auf leicht gemachtYouTube.

Wir stellen einige JSON- und YAML-Vorlagenausschnitte bereit, mit denen Sie verstehen können, wie Lebenszyklus-Hooks in Ihren AWS CloudFormation Stack-Vorlagen deklariert werden. Weitere Informationen finden Sie in der -AWS::AutoScaling::LifecycleHookReferenz im AWS CloudFormation -Benutzerhandbuch.

Sie können auch unser GitHubRepository besuchen, um Beispielvorlagen und Benutzerdatenskripts für Lebenszyklus-Hooks herunterzuladen.

Beispiele für die Verwendung von Lebenszyklus-Hooks finden Sie in den folgenden Blog-Beiträgen.