Verwenden Sie Lifecycle-Hooks mit einem warmen Pool in der Auto Scaling Scaling-Gruppe - 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.

Verwenden Sie Lifecycle-Hooks mit einem warmen Pool in der Auto Scaling Scaling-Gruppe

Instances in einem Warm Pool verwalten ihren eigenen, unabhängigen Lebenszyklus, um Ihnen bei der Erstellung der entsprechenden benutzerdefinierten Aktion für jeden Übergang zu helfen. Dieser Lebenszyklus soll Ihnen helfen, Aktionen in einem Zielservice (z. B. einer Lambda-Funktion) aufzurufen, während eine Instance noch initialisiert wird und bevor sie in Betrieb genommen wird.

Anmerkung

Die API Operationen, die Sie zum Hinzufügen und Verwalten von Lebenszyklus-Hooks und zum Abschließen von Lebenszyklusaktionen verwenden, werden nicht geändert. Nur der Instance-Lebenszyklus wird geändert.

Weitere Informationen über das Hinzufügen von Lebenszyklus-Hooks finden Sie unter Fügen Sie Lifecycle-Hooks zu Ihrer Auto Scaling Scaling-Gruppe hinzu. Weitere Informationen über das Abschließen einer Lebenszyklus-Aktion finden Sie unter Eine Lebenszyklusaktion in einer Auto Scaling Scaling-Gruppe abschließen.

Für Instances, die in den Warm Pool aufgenommen werden, benötigen Sie möglicherweise aus einem der folgenden Gründe einen Lebenszyklus-Hook:

  • Sie möchten EC2 Instances von einem aus startenAMI, dessen Initialisierung viel Zeit in Anspruch nimmt.

  • Sie möchten Benutzerdatenskripts ausführen, um die Instanzen zu bootenEC2.

Für Instances, die den Warm Pool verlassen, benötigen Sie möglicherweise aus einem der folgenden Gründe einen Lebenszyklus-Hook:

  • Sie können etwas mehr Zeit in Anspruch nehmen, um die EC2 Instanzen für die Verwendung vorzubereiten. Sie haben möglicherweise Services, die gestartet werden müssen, wenn eine Instance neu gestartet wird, bevor Ihre Anwendung ordnungsgemäß funktionieren kann.

  • Sie möchten Cache-Daten vorab ausfüllen, um sicherzustellen, dass ein neuer Server nicht mit einem leeren Cache gestartet wird.

  • Sie möchten neue Instances als verwaltete Instances mit Ihrem Konfigurationsverwaltungsservice registrieren.

Lebenszyklusstatusübergänge für Instances in einem Warm Pool

Eine Instance mit automatischer Skalierung kann im Verlauf ihres Lebenszyklus in verschiedene Status übergehen.

Im folgenden Diagramm wird der Übergang zwischen Status für automatische Skalierung veranschaulicht, wenn Sie einen Warm Pool verwenden:

Die Lebenszyklusstatusübergänge für Instances in einem Warm-Pool.

¹ Dieser Status variiert je nach Einstellung des Pool-Status des Warm Pools. Wenn der Pool-Status auf Running gesetzt ist, ist dieser Status stattdessen Warmed:Running. Wenn der Pool-Status auf Hibernated gesetzt ist, ist dieser Status stattdessen Warmed:Hibernated.

Berücksichtigen Sie beim Hinzufügen von Lebenszyklus-Hooks Folgendes:

  • Wenn ein Lebenszyklus-Hook für die autoscaling:EC2_INSTANCE_LAUNCHING-Lebenszyklusaktion konfiguriert ist, wird eine neu gestartete Instance zunächst angehalten, um eine benutzerdefinierte Aktion auszuführen, wenn sie den Warmed:Pending:Wait-Zustand erreicht, und dann erneut, wenn die Instance neu gestartet wird und den Pending:Wait-Zustand erreicht.

  • Wenn ein Lebenszyklus-Hook für die EC2_INSTANCE_TERMINATING-Lebenszyklusaktion konfiguriert ist, wird eine beendende Instance angehalten, um eine benutzerdefinierte Aktion auszuführen, wenn sie den Terminating:Wait-Zustand erreicht. Wenn Sie jedoch eine Richtlinie für die Wiederverwendung von Instances so festlegen, dass Instances bei der Abwärtsskalierung in den Warm-Pool zurückgeführt werden, anstatt sie zu beenden, dann wird eine Instanz, die in den Warm-Pool zurückkehrt, angehalten, um eine benutzerdefinierte Aktion im Warmed:Pending:Wait-Zustand für die EC2_INSTANCE_TERMINATING-Lebenszyklusaktion durchzuführen.

  • Wenn die Nachfrage nach Ihrer Anwendung den warmen Pool erschöpft, kann Amazon EC2 Auto Scaling Instances direkt in der Auto Scaling Scaling-Gruppe starten, solange die Gruppe noch nicht ihre maximale Kapazität erreicht hat. Wenn die Instances direkt in der Gruppe gestartet werden, werden sie nur angehalten, um eine benutzerdefinierte Aktion im Pending:Wait-Zustand auszuführen.

  • Um zu steuern, wie lange eine Instance in einem Wartezustand verbleibt, bevor sie in den nächsten Status übergeht, konfigurieren Sie Ihre benutzerdefinierte Aktion so, dass sie den complete-lifecycle-action-Befehl verwendet. Bei Lifecycle-Hooks verbleiben Instances im Wartestatus, entweder bis Sie Amazon EC2 Auto Scaling benachrichtigen, dass die angegebene Lebenszyklusaktion abgeschlossen ist, oder bis der Timeout-Zeitraum endet (standardmäßig eine Stunde).

Im Folgenden wird der Ablauf für ein Aufskalierungsereignis zusammengefasst.

Ein Swimlane-Diagramm von einem Aufskalierungsereignis.

Wenn Instances einen Wartestatus erreichen, sendet Amazon EC2 Auto Scaling eine Benachrichtigung. Beispiele für diese Benachrichtigungen finden Sie im EventBridge Abschnitt dieses Handbuchs. Weitere Informationen finden Sie unter Beispielereignisse und -muster in einem warmen Pool.

Unterstützte Benachrichtigungsziele

Amazon EC2 Auto Scaling unterstützt die Definition der folgenden Ziele als Benachrichtigungsziele für Lebenszyklusbenachrichtigungen:

  • EventBridge Regeln

  • SNSAmazon-Themen

  • SQSAmazon-Warteschlangen

Wichtig

Denken Sie daran: Wenn Sie ein Benutzerdatenskript in Ihrer Startvorlage oder Startkonfiguration haben, das Ihre Instances beim Start konfiguriert, müssen Sie keine Benachrichtigungen erhalten, um benutzerdefinierte Aktionen für Instances auszuführen, die gestartet oder neu gestartet werden.

Die folgenden Abschnitte enthalten Links zur Dokumentation, in der beschrieben wird, wie Benachrichtigungsziele konfiguriert werden:

EventBridge Regeln: Um Code auszuführen, wenn Amazon EC2 Auto Scaling eine Instance in einen Wartestatus versetzt, können Sie eine EventBridge Regel erstellen und eine Lambda-Funktion als Ziel angeben. Um verschiedene Lambda-Funktionen basierend auf verschiedenen Lebenszyklusbenachrichtigungen aufzurufen, können Sie mehrere Regeln erstellen und jede Regel einem bestimmten Ereignismuster und einer Lambda-Funktion zuordnen. Weitere Informationen finden Sie unter Erstellen Sie EventBridge Regeln für Ereignisse im warmen Pool.

SNSAmazon-Themen: Um eine Benachrichtigung zu erhalten, wenn eine Instance in einen Wartestatus versetzt wird, erstellen Sie ein SNS Amazon-Thema und richten dann die SNS Amazon-Nachrichtenfilterung so ein, dass Lebenszyklusbenachrichtigungen je nach Nachrichtenattribut unterschiedlich zugestellt werden. Weitere Informationen finden Sie unter Benachrichtigungen über Amazon SNS erhalten.

SQSAmazon-Warteschlangen: Um einen Lieferpunkt für Lebenszyklusbenachrichtigungen einzurichten, an dem ein relevanter Verbraucher sie abholen und verarbeiten kann, können Sie eine SQS Amazon-Warteschlange und einen Warteschlangenverbraucher erstellen, der Nachrichten aus der SQS Warteschlange verarbeitet. Wenn der Warteschlangenverbraucher Lebenszyklusbenachrichtigungen basierend auf einem Nachrichtenattribut unterschiedlich verarbeiten soll, müssen Sie auch den Warteschlangenverbraucher so einrichten, dass er die Nachricht analysiert und dann auf die Nachricht reagiert, wenn ein bestimmtes Attribut dem gewünschten Wert entspricht. Weitere Informationen finden Sie unter Benachrichtigungen über Amazon SQS erhalten.