Ersetzen Sie die Root-Volumes während der Instanzaktualisierung - 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.

Ersetzen Sie die Root-Volumes während der Instanzaktualisierung

Funktionsweise

Durch den Austausch von Root-Volumes werden Ihre Instances aktualisiert, indem nur das Root-EBS-Volume ersetzt wird, während die Instance weiterhin läuft. Dadurch entfällt die Notwendigkeit, neue Instances zu starten, und potenzielle Kapazitätsengpässe werden vermieden. Durch diesen Prozess werden alle anderen Instance-Ressourcen geschont, einschließlich:

  • Netzwerkschnittstellen und IP-Adressen

  • EBS-Volumes ohne Root-Rechte

  • Instance-Speicher für Volumes und Daten

  • Sicherheitsgruppen und IAM-Rollen

Während des Austauschs des Root-Volumes wird Ihre Anwendung weiterhin auf der vorhandenen Instance ausgeführt. Das ursprüngliche Root-Volume wird getrennt, ein neues Root-Volume wird aus Ihrem angegebenen AMI erstellt und dann an dieselbe Instance angehängt. Die ursprünglichen Root-Volumes werden nach erfolgreichem Austausch automatisch gelöscht.

Wenn Sie die Strategie zum Ersetzen von Root-Volumes verwenden, durchlaufen Instances die folgenden Lebenszyklusstatus:

  1. ReplacingRootVolume- Der Austausch des Root-Volumes beginnt

  2. ReplacingRootVolume:Wait- Wartet auf den Abschluss des Lifecycle-Hooks (falls konfiguriert)

  3. ReplacingRootVolume:Proceed- Wird mit dem Austausch fortgefahren

  4. RootVolumeReplaced- Der Austausch wurde erfolgreich abgeschlossen

Nachdem der Austausch des Root-Volumes abgeschlossen ist, führt Auto Scaling Integritätsprüfungen für aktualisierte Instances durch. Wenn der Austausch des Root-Volumes für eine Instance fehlschlägt, markiert Auto Scaling diese Instance zur Kündigung und ersetzt sie durch eine neue Instance.

Voraussetzungen

  • Ihre Auto Scaling Scaling-Gruppe muss eine Richtlinie für gemischte Instanzen verwenden

  • Für alle Überschreibungen in der Richtlinie für gemischte Instanzen muss Folgendes angegeben werden ImageId

  • AMIs darf nur ein einziges Root-Volume enthalten

  • Alle Instances müssen der Konfiguration der Startvorlage der Gruppe entsprechen

  • Sie müssen die Instanzaktualisierung mit einer gewünschten Konfiguration starten, die eine Richtlinie für gemischte Instanzen enthält, die ImageId Überschreibungen enthält.

Starten Sie eine Instanzaktualisierung mit Replace Root Volume

Um eine Instanzaktualisierung mit Replace Root Volume (AWS CLI) zu starten

Verwenden Sie den folgenden start-instance-refreshBefehl, um eine Instanzaktualisierung von der aus zu starten AWS CLI. Sie können alle Voreinstellungen angeben, die Sie in einer JSON-Konfigurationsdatei ändern möchten. Wenn Sie auf die Konfigurationsdatei verweisen, geben Sie den Dateipfad und -namen an, wie im folgenden Beispiel gezeigt.

aws autoscaling start-instance-refresh --cli-input-json file://config.json

Inhalt von config.json:

Beispiel
{ "AutoScalingGroupName": "my-asg", "Strategy" : "ReplaceRootVolume", "DesiredConfiguration":{ "MixedInstancesPolicy":{ "LaunchTemplate": { "LaunchTemplateSpecification": { "LaunchTemplateId":"my-launch-template", "Version": "1" }, "Overrides": [ { "InstanceType":"c5.large", "ImageId":"ami-1234example" }, { "InstanceType":"m5.large", "ImageId":"ami-2345example" } ] } } }, "Preferences": { "InstanceWarmup": 60, "MinHealthyPercentage": 90, "AutoRollback": true, "ScaleInProtectedInstances": Ignore, "StandbyInstances": Ignore } }

Wenn keine Voreinstellungen angegeben werden, werden die Standardwerte verwendet. Weitere Informationen finden Sie unter Die Standardwerte für eine Instance-Aktualisierung verstehen.

Beispielausgabe:

{ "InstanceRefreshId": "08b91cf7-8fa6-48af-b6a6-d227f40f1b9b" }

Einschränkungen

  • Sie können eine Instance-Aktualisierung nicht mit Replace Root Volume starten, wenn die EC2 Auto Scaling Scaling-Gruppe oder die gewünschte Konfiguration für die Instance-Aktualisierung die Vorlagenversion verwendet $Latest oder die Vorlagenversion $Default startet.

  • Sie können eine Instance-Aktualisierung nicht mit Replace Root Volume auf einer Amazon EC2 Auto Scaling Scaling-Gruppe starten, wenn sie Instances enthält, deren Instance-Typ nicht in der Richtlinie für gemischte Instanzen enthalten ist.

  • Während einer Instance-Aktualisierung mit Replace Root Volume können Sie nur Instances mit Typen anhängen, die in der Richtlinie für gemischte Instanzen der gewünschten Konfiguration enthalten sind.

  • Sie können eine Instance-Aktualisierung nicht mit Replace Root Volume auf einer EC2 Auto Scaling Scaling-Gruppe starten, die über einen warmen Pool verfügt.

  • Sie können einer Amazon EC2 Auto Scaling Scaling-Gruppe, die über eine aktive Instance-Aktualisierung verfügt, keinen warmen Pool mit Replace Root Volume hinzufügen.

Verwenden Sie Lifecycle-Hooks mit Replace Root-Volume

Instances, bei denen das Root-Volume ersetzt wird, folgen ihren eigenen Lebenszyklusübergängen, sodass Sie Aktionen (z. B. eine Lambda-Funktion) vor und and/or nach dem Austausch aufrufen können. Weitere Informationen zu den Lebenszyklusstatus beim Austausch des Root-Volumes finden Sie unter. Statusübergänge im Lebenszyklus von Instances, bei denen das Root-Volume ausgetauscht wird

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.

Vor dem Austausch eines Stammvolumes kann ein Lifecycle-Hook in den folgenden Szenarien nützlich sein:

  • Sie möchten Ihre Anwendung ordnungsgemäß herunterfahren, bevor das Root-Volume ersetzt und die Instance neu gestartet wird.

  • Sie möchten Daten vom Root-Volume an einen anderen Speicherort verschieben, bevor das Volume ersetzt wird.

Nach dem Austausch des Root-Volumes kann ein Lifecycle-Hook in den folgenden Szenarien nützlich sein:

  • Sie möchten sicherstellen, dass Ihre Instance vollständig für das neue AMI bereit ist, bevor sie Traffic empfängt.

  • Sie möchten Anwendungsdaten, die zuvor auf dem Root-Volume vorhanden waren, bootstrappen.

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

  • Wenn ein Lifecycle-Hook für die autoscaling:EC2_INSTANCE_TERMINATING Lifecycle-Aktion konfiguriert ist, wird eine Instance, die kurz vor dem Austausch des Root-Volumes steht, pausiert, um eine benutzerdefinierte Aktion auszuführen, sobald sie den ReplacingRootVolume:Wait Status erreicht.

  • Wenn ein Lifecycle-Hook für die autoscaling:EC2_INSTANCE_LAUNCHING Lifecycle-Aktion konfiguriert ist, wird eine Instance, deren Root-Volume gerade ersetzt wurde, pausiert, um eine benutzerdefinierte Aktion auszuführen, wenn sie den Pending:Wait Status erreicht.

Wenn Instances einen Wartezustand erreichen, sendet Amazon EC2 Auto Scaling eine Benachrichtigung. Die Lifecycle-Hook-Benachrichtigungen von Auto Scaling enthalten ein Action Feld mit einem WertReplaceRootVolume, der angibt, dass für die Instance ein Root-Volume ersetzt wird.

Beispiele für diese Benachrichtigungen finden Sie im EventBridge Abschnitt dieses Handbuchs. Weitere Informationen finden Sie unter Die Aktualisierung der Instanz ersetzt Ereignisse im Lebenszyklus des Root-Volumes.