Wie kann ich meine Auto-Scaling-Gruppe korrekt aktualisieren, wenn ich meinen AWS CloudFormation-Stack aktualisiere?

Lesedauer: 3 Minute
0

Ich habe Aktualisierungen an meiner Auto-Scaling-Gruppe vorgenommen, habe jedoch bei einem AWS CloudFormation-Stack-Update nicht die erwarteten Ergebnisse erhalten.

Kurzbeschreibung

Die Ressource AWS::AutoScaling::AutoScalingGroup verwendet das UpdatePolicy-Attribut, um zu definieren, wie eine Auto-Scaling-Gruppenressource aktualisiert wird, wenn der AWS CloudFormation-Stack aktualisiert wird. Wenn Sie nicht die richtigen Einstellungen für das UpdatePolicy-Attribut konfiguriert haben, kann Ihr fortlaufendes Update zu unerwarteten Ergebnissen führen.

Sie können die AutoScalingRollingUpdate-Richtlinie verwenden, um zu regeln, wie AWS CloudFormation fortlaufende Updates für eine Auto-Scaling-Gruppe verarbeitet. Dieser gängige Ansatz behält dieselbe Auto-Scaling-Gruppe bei und ersetzt dann die alten Instances auf der Grundlage der von Ihnen festgelegten Parameter.

Hinweis: Die folgende Lösung konzentriert sich nur auf die AutoScalingRollingUpdate-Richtlinie. Sie können die AutoScalingReplacingUpdate-Richtlinie verwenden, um den Stack sofort und ohne Fehler zurückzusetzen.

Die AutoScalingRollingUpdate-Richtlinie unterstützt die folgenden Konfigurationsoptionen:

"UpdatePolicy": {
  "AutoScalingRollingUpdate": {
    "MaxBatchSize": Integer,
    "MinInstancesInService": Integer,
    "MinSuccessfulInstancesPercent": Integer,
    "PauseTime": String,
    "SuspendProcesses": [ List of processes ],
    "WaitOnResourceSignals": Boolean
  }
}

Lösung

Um herauszufinden, was Ihre Auto-Scaling-Gruppe daran hindert, während eines Stack-Updates korrekt zu aktualisieren, gehen Sie die folgenden Problembehebungsszenarien durch:

Konfigurieren Sie WaitOnResourceSignals und PauseTime, um Probleme mit Erfolgssignalen zu vermeiden

Legen Sie in Ihrer AutoScalingRollingUpdate-Richtlinie die Eigenschaft WaitOnResourceSignals auf false fest.

Hinweis: Wenn WaitOnResourceSignals auf true gesetzt ist, ändert sich die PauseTime in einen Timeout-Wert. AWS CloudFormation wartet bis zu der im PauseTime-Wert angegebenen maximalen Zeit auf den Empfang eines Erfolgssignals. Wenn kein Signal empfangen wird, bricht AWS CloudFormation das Update ab. Anschließend führt AWS CloudFormation ein Rollback des Stacks mit denselben Einstellungen, einschließlich des gleichen PauseTime-Werts, durch. Weitere Informationen finden Sie unter Hinzufügen einer UpdatePolicy zu einer Auto-Scaling-Gruppe.

Konfigurieren Sie MinSuccessfulInstancesPercent, um einen Stack-Rollback zu vermeiden

Wenn Sie während eines fortlaufenden Updates eine große Anzahl von Instances ersetzen und für jede Instance auf ein Erfolgssignal warten, legen Sie den Wert der Eigenschaft MinSuccessfulInstancesPercent in Ihrer AutoScalingRollingUpdate-Richtlinie fest.

Hinweis: Das Festlegen der Eigenschaft MinSuccessfulInstancesPercent verhindert, dass AWS CloudFormation den gesamten Stack zurücksetzt, wenn nur eine einzige Instance nicht gestartet werden kann. Weitere Informationen finden Sie unter UpdatePolicy-Attribut.

Konfigurieren Sie SuspendProcesses, um unerwartete Änderungen an der Auto-Scaling-Gruppe zu vermeiden

Unterbrechen Sie während eines fortlaufenden Updates die folgenden Auto Scaling-Prozesse:

  • HealthCheck
  • ReplaceUnhealthy
  • AZRebalance
  • AlarmNotification
  • ScheduledActions

Wichtig: Wenn Sie Ihre Auto-Scaling-Gruppe mit Elastic Load Balancing verwenden, sollten Sie die folgenden Prozesse nicht unterbrechen: Launch, Terminate und AddToLoadBalancer. Diese Prozesse sind erforderlich, um fortlaufende Aktualisierungen vorzunehmen.

**Hinweis:**Wenn eine unerwartete Skalierungsaktion den Status der Auto-Scaling-Gruppe während eines fortlaufenden Updates ändert, kann das Update fehlschlagen. Der Fehler kann auf eine inkonsistente Ansicht der Auto-Scaling-Gruppe durch AWS CloudFormation zurückzuführen sein.


AWS OFFICIAL
AWS OFFICIALAktualisiert vor 4 Jahren