Fortlaufende Updates der Elastic Beanstalk-Umgebungskonfiguration - AWS Elastic Beanstalk

Fortlaufende Updates der Elastic Beanstalk-Umgebungskonfiguration

Wenn eine Konfigurationsänderung vorsieht, dass Instances ersetzt werden, kann Elastic Beanstalk das Update in Stapeln durchführen, um Ausfallzeiten zu vermeiden, während die Änderung verbreitet wird. Während eines fortlaufenden Updates wird die Kapazität nur um die Größe eines einzigen Stapels reduziert, den Sie konfigurieren können. Elastic Beanstalk schaltet einen Stapel an Instances offline, beendet diese und startet dann einen Stapel mit der neuen Konfiguration. Nachdem der neue Stapel beginnt, Anfragen zu bedienen, fährt Elastic Beanstalk mit dem nächsten Stapel fort.

Fortlaufende Konfigurations-Update-Stapel können in regelmäßigen Abständen (zeitbasiert) verarbeitet werden – mit einer Verzögerung zwischen jedem Stapel oder basierend auf dem Zustand. Für zeitbasierte fortlaufende Updates können Sie die Dauer konfigurieren, die Elastic Beanstalk wartet, nachdem der Start eines Instance-Stapels abgeschlossen ist, bevor mit dem nächsten Stapel fortgefahren wird. Durch diese Pausenzeit kann Ihre Anwendung einen Bootsrap durchführen und mit dem Verarbeiten von Anforderungen beginnen.

Bei zustandsbasierten fortlaufenden Updates wartet Elastic Beanstalk, bis Instances in einem Stapel die Zustandsprüfungen bestanden haben, bevor mit dem nächsten Stapel fortgefahren wird. Der Zustand einer Instance wird durch das System für Zustandsberichte bestimmt. Dieses kann grundlegend oder erweitert sein. Beim grundlegenden Zustandssystem wird ein Stapel als stabil betrachtet, wenn alle Instances darin die Elastic Load Balancing (ELB)-Zustandsprüfungen bestehen.

Bei erweiterten Zustandsberichten müssen alle Instances in einem Stapel mehrere aufeinanderfolgende Zustandsprüfungen bestehen, bevor Elastic Beanstalk mit dem nächsten Stapel fortfährt. Zusätzlich zu den ELB-Zustandsprüfungen, bei denen nur Ihre Instances geprüft werden, werden bei der erweiterten Zustandsprüfung Anwendungsprotokolle und der Status der anderen Ressourcen Ihrer Umgebung überprüft. In einer Webserverumgebung mit erweiterten Zustandsberichten müssen alle Instances im Laufe von zwei Minuten zwölf Zustandsprüfungen bestehen (18 Prüfungen über drei Minuten für Worker-Umgebungen). Wenn eine Instance die Zustandsprüfung nicht besteht, wird die Anzahl zurückgesetzt.

Wenn ein Stapel während des Timeouts des fortlaufenden Updates keinen stabilen Zustand erreicht (Standard: 30 Minuten), wird das Update abgebrochen. Das Timeout beim fortlaufenden Update ist eine Konfigurationsoption, die im aws:autoscaling:updatepolicy:rollingupdate-Namespace verfügbar ist. Wenn Ihre Anwendung Zustandsprüfungen nicht mit dem Ok-Status besteht, sie auf einer anderen Stufe jedoch stabil ist, können Sie die HealthCheckSuccessThreshold-Option im aws:elasticbeanstalk:healthreporting:system-Namespace so festlegen, dass die Stufe geändert wird, auf der Elastic Beanstalk eine Instance als stabil betrachtet.

Wenn das fortlaufende Update fehlschlägt, startet Elastic Beanstalk ein weiteres, um zur vorherigen Konfiguration zurückzukehren. Ein fortlaufendes Update kann aufgrund fehlerhafter Zustandsprüfungen fehlschlagen oder wenn Sie durch das Starten neuer Instances die Kontingente auf Ihrem Konto überschreiten. Wenn Sie beispielsweise ein Kontingent für die Anzahl der Amazon EC2-Instances erreichen, kann das fortlaufende Update fehlschlagen, wenn versucht wird, einen Stapel an neuen Instances bereitzustellen. In diesem Fall schlägt das Rollback ebenfalls fehl.

Bei einem fehlgeschlagenen Rollback wird der Aktualisierungsvorgang beendet und Ihre Umgebung verbleibt in einem instabilen Zustand. Nicht verarbeitete Stapel führen nach wie vor Instances mit der alten Konfiguration aus, während erfolgreich abgeschlossene Stapel über die neue Konfiguration verfügen. Um eine Umgebung nach einem fehlgeschlagenen Rollback zu reparieren, beheben Sie zuerst das zugrundeliegende Problem, durch das das Update fehlschlägt, und initiieren Sie anschließend ein weiteres Umgebungs-Update.

Eine alternative Methode ist, die neue Version Ihrer Anwendung für eine andere Umgebung bereitzustellen und dann einen CNAME-Austausch durchzuführen, um den Datenverkehr ohne Ausfallzeit weiterzuleiten. Weitere Informationen finden Sie unter Blau/Grün-Bereitstellungen mit Elastic Beanstalk.

Fortlaufende Updates im Vergleich zu fortlaufenden Bereitstellungen

Fortlaufende Updates erfolgen, wenn Sie die Einstellungen ändern, die vorsehen, dass neue Amazon EC2-Instances für Ihre Umgebung bereitgestellt werden. Dazu gehören Änderungen an der Auto Scaling-Gruppenkonfiguration, wie Instance-Typ- und Schlüsselpaar-Einstellungen, sowie Änderungen an den VPC-Einstellungen. Bei einem fortlaufenden Update wird jeder Instance-Stapel beendet, bevor ein neuer Stapel bereitgestellt wird, der den alten ersetzen soll.

Fortlaufende Bereitstellungen treten auf, wenn Sie Ihre Anwendung bereitstellen. Sie können in der Regel durchgeführt werden, ohne dass Instances in Ihrer Umgebung ersetzt werden. Elastic Beanstalk schaltet jeden Stapel offline, stellt die neue Anwendungsversion bereit und nimmt sie dann wieder in Betrieb.

Eine Ausnahme liegt dann vor, wenn Sie Einstellungen ändern, bei denen der Instance-Austausch gleichzeitig mit der Bereitstellung einer neuen Anwendungsversion erfolgen muss. Wenn Sie beispielsweise die Schlüsselnamen-Einstellungen in einer Konfigurationsdatei in Ihrem Quell-Bundle ändern und es in Ihrer Umgebung bereitstellen, lösen Sie ein fortlaufendes Update aus. Anstatt Ihre neue Anwendungsversion für jeden Stapel an vorhandenen Instances bereitzustellen, wird ein neuer Instance-Stapel mit der neuen Konfiguration bereitgestellt. In diesem Fall erfolgt keine separate Bereitstellung, da die neuen Instances mit der neuen Anwendungsversion aufgerufen werden.

Jedes Mal, wenn neue Instances als Teil eines Umgebungs-Updates bereitgestellt werden, gibt es eine Bereitstellungsphase, in der der Quellcode Ihrer Anwendung für die neuen Instances bereitgestellt wird. Darüber hinaus werden alle Konfigurationseinstellungen, die das Betriebssystem oder die Software auf den Instances ändern, angewendet. Einstellungen der Bereitstellungs-Zustandsprüfung (Ignore health check (Zustandsprüfung ignorieren)), Healthy threshold (Zulässige Schwelle) (Command timeout (Befehls-Timeout)) gelten auch für zustandsbasierte fortlaufende Updates und unveränderliche Updates während der Bereitstellungsphase.

Konfigurieren von fortlaufendes Updates

Sie können fortlaufende Updates in der Elastic Beanstalk-Konsole aktivieren und konfigurieren.

So aktivieren Sie fortlaufende Updates

  1. Öffnen Sie die Elastic-Beanstalk-Konsole und wählen Sie in der Liste Regions (Regionen) Ihre AWS-Region aus.

  2. Wählen Sie im Navigationsbereich Environments (Umgebungen) aus und wählen Sie dann in der Liste den Namen Ihrer Umgebung aus.

    Anmerkung

    Wenn Sie viele Umgebungen haben, verwenden Sie die Suchleiste, um die Umgebungsliste zu filtern.

  3. Wählen Sie im Navigationsbereich Configuration (Konfiguration) aus.

  4. Wählen Sie in der Konfigurationskategorie Rolling updates and deployments (Fortlaufende Updates und Bereitstellungen) die Option Edit (Bearbeiten).

  5. Wählen Sie im Bereich Configuration updates (Konfigurationsaktualisierungen) für Rolling update type (Typ der fortlaufenden Aktualisierung) und wählen Sie eine der Optionen unter Rolling (Fortlaufend) aus.

    
            Der Abschnitt für Konfigurations-Updates auf der Konfigurationsseite für fortlaufende Updates und Bereitstellungen
  6. Wählen Sie die Einstellungen Batch size (Stapelgröße), Minimum capacity (Mindestkapazität) und Pause time (Pausendauer).

  7. Wählen Sie Apply (Anwenden) aus.

Im Bereich Configuration updates (Konfigurationsaktualisierungen) der Seite Updates and Deployments (Updates und Bereitstellungen) sind die folgenden Optionen für fortlaufende Updates verfügbar:

  • Rolling update type (Art des fortlaufenden Updates) – Elastic Beanstalk wartet, nachdem das Aktualisieren eines Instance-Stapels abgeschlossen wurde, bevor mit dem nächsten Stapel fortgefahren wird, damit diese Instances das Bootstrapping abschließen und mit dem Bereitstellen von Datenverkehr beginnen können. Wählen Sie aus den folgenden Optionen aus:

    • Rolling based on Health (Fortlaufend basierend auf dem Zustand) – Warten Sie, bis Instances im aktuellen Stapel stabil sind, bevor Sie Instances in Betrieb nehmen und den nächsten Stapel starten.

    • Rolling based on Time (Fortlaufend basierend auf Zeit) – Geben Sie eine Dauer ein, die zwischen dem Starten neuer Instances und deren Inbetriebnahme gewartet wird, bevor der nächste Stapel gestartet wird.

    • Immutable (Unveränderlich) – Wenden Sie die Konfigurationsänderungen auf eine neue Gruppe von Instances an, indem Sie ein unveränderliches Update durchführen.

  • Batch size (Stapelgröße) – Die Anzahl der Instances, die in jedem Stapel ersetzt werden sollen, zwischen 1 und 10000. Standardmäßig ist dieser Wert ein Drittel der Mindestgröße der Auto Scaling-Gruppe, auf eine Ganzzahl aufgerundet.

  • Minimum capacity (Mindestkapazität) – Die minimale Anzahl der Instances, die weiterhin ausgeführt werden, während andere Instances aktualisiert werden, zwischen 0 und 9999). Der Standardwert ist entweder die Mindestgröße der Auto Scaling-Gruppe oder eine Instance weniger als die maximale Größe der Auto Scaling-Gruppe – je nachdem, welche Zahl die niedrigere ist.

  • Pause time (Pausendauer) (nur zeitbasiert) – Die Zeit, die gewartet wird, nachdem ein Stapel aktualisiert wurde, bevor mit dem nächsten Stapel fortgefahren wird, sodass Ihre Anwendung mit dem Empfang von Datenverkehr beginnen kann. Zwischen 0 Sekunden und einer Stunde.

Der aws:autoscaling:updatepolicy:rollingupdate-Namespace

Sie können auch die Konfigurationsoptionen im aws:autoscaling:updatepolicy:rollingupdate-Namespace zum Konfigurieren fortlaufender Bereitstellungen verwenden.

Verwenden Sie die RollingUpdateEnabled-Option, um fortlaufende Updates zu aktualisieren, und RollingUpdateType, um den Update-Typ auszuwählen. Folgende Werte werden für unterstützt RollingUpdateType:

  • Health – Warten Sie, bis Instances im aktuellen Stapel stabil sind, bevor Sie Instances in Betrieb nehmen und den nächsten Stapel starten.

  • Time – Geben Sie eine Dauer ein, die zwischen dem Starten neuer Instances und deren Inbetriebnahme gewartet wird, bevor der nächste Stapel gestartet wird.

  • Immutable – Wenden Sie die Konfigurationsänderungen auf eine neue Gruppe von Instances an, indem Sie ein unveränderliches Update durchführen.

Wenn Sie fortlaufende Updates aktivieren, legen Sie die Optionen MaxBatchSize und MinInstancesInService fest, um die Größe der einzelnen Stapel zu definieren. Für zeitbasierte und zustandsbasierte fortlaufende Updates können Sie auch PauseTime bzw. Timeout konfigurieren.

Um beispielsweise bis zu fünf Instances gleichzeitig zu starten, während mindestens zwei Instances in Betrieb bleiben, und um fünf Minuten und 30 Sekunden zwischen Stapeln zu warten, geben Sie die folgenden Optionen und Werte an.

Beispiel .ebextensions/timebased.config

option_settings: aws:autoscaling:updatepolicy:rollingupdate: RollingUpdateEnabled: true MaxBatchSize: 5 MinInstancesInService: 2 RollingUpdateType: Time PauseTime: PT5M30S

Zum Aktivieren zustandsbasierter fortlaufender Updates mit einem 45-Minuten-Timeout für jeden Stapel geben Sie die folgenden Optionen und Werte an.

Beispiel .ebextensions/healthbased.config

option_settings: aws:autoscaling:updatepolicy:rollingupdate: RollingUpdateEnabled: true MaxBatchSize: 5 MinInstancesInService: 2 RollingUpdateType: Health Timeout: PT45M

Timeout- und PauseTime-Werte müssen in ISO8601-Dauer angegeben werden: PT#H#M#S, wobei jedes #-Zeichen für die Anzahl der Stunden, Minuten beziehungsweise Sekunden steht.

Die EB CLI und Elastic-Beanstalk-Konsole wenden die für die vorhergehenden Optionen empfohlenen Werte an. Diese Einstellungen müssen entfernt werden, wenn Sie Konfigurationsdateien zum Konfigurieren dieser Einstellungen verwenden möchten. Details dazu finden Sie unter Empfohlene Werte.