Unveränderliche Umgebungsaktualisierungen - AWS Elastic Beanstalk

Unveränderliche Umgebungsaktualisierungen

Unveränderliche Umgebungsaktualisierungen stellen eine Alternative zu fortlaufenden Updates dar. Unveränderliche Umgebungsaktualisierungen sorgen dafür, dass Konfigurationsänderungen, bei denen ein Ersetzen von Instances erforderlich ist, effizient und sicher angewendet werden. Wenn ein unveränderliches Umgebungs-Update fehlschlägt, erfordert der Rollbackvorgang nur das Beenden einer Auto Scaling-Gruppe. Ein fehlgeschlagenes fortlaufendes Update erfordert hingegen die Durchführung eines zusätzlichen fortlaufenden Updates, um die Änderungen rückgängig zu machen.

Um ein unveränderliches Umgebungs-Update durchzuführen, erstellt Elastic Beanstalk eine zweite, temporäre Auto Scaling-Gruppe hinter dem Load Balancer Ihrer Umgebung für die neuen Instances. Zunächst startet Elastic Beanstalk eine einzelne Instance mit der neuen Konfiguration in der neuen Gruppe. Diese Instance stellt Datenverkehr zusammen mit allen Instances in der ursprünglichen Auto Scaling-Gruppe bereit, auf denen die vorherige Konfiguration ausgeführt wird.

Wenn die erste Instance die Zustandsprüfungen besteht, startet Elastic Beanstalk zusätzliche Instances mit der neuen Konfiguration, die der Anzahl der Instances, die in der ursprünglichen Auto Scaling-Gruppe ausgeführt werden, entsprechen. Wenn alle neuen Instances Zustandsprüfungen bestehen, überträgt Elastic Beanstalk sie an die ursprüngliche Auto Scaling-Gruppe und beendet die temporäre Auto Scaling-Gruppe und alte Instances.

Anmerkung

Während eines unveränderlichen Umgebungs-Update verdoppelt sich die Kapazität Ihrer Umgebung für eine kurze Zeit, wenn die Instances in der neuen Auto Scaling-Gruppe Anforderungen verarbeiten und bevor die Instances der ursprünglichen Auto Scaling-Gruppe beendet werden. Wenn Ihre Umgebung viele Instances hat oder Sie ein niedriges On-Demand-Instance-Kontingent haben, stellen Sie sicher, dass Sie genügend Kapazität haben, um ein unveränderliches Umgebungs-Update durchzuführen. Wenn Sie in der Nähe der Kontingentgrenze liegen, sollten Sie stattdessen fortlaufende Updates verwenden.

Unveränderliche Updates erfordern erweiterte Zustandsberichte zum Auswerten des Zustands Ihrer Umgebung während des Updates. Erweiterte Zustandsberichte kombinieren Standard-Load Balancer-Zustandsprüfungen mit Instance-Überwachung, um sicherzustellen, dass die Instances, auf denen die neue Konfiguration ausgeführt wird, Anforderungen erfolgreich verarbeitet.

Sie können auch unveränderliche Updates für die Bereitstellung neuer Versionen Ihrer Anwendung verwenden, als Alternative zu fortlaufenden Bereitstellungen. Wenn Sie Elastic Beanstalk so konfigurieren, dass unveränderliche Updates für die Anwendungsbereitstellung verwendet werden, werden alle Instances in Ihrer Umgebung jedes Mal ersetzt, wenn Sie eine neue Version Ihrer Anwendung bereitstellen. Wenn eine unveränderliche Anwendungsbereitstellung fehlschlägt, kehrt Elastic Beanstalk die Änderungen sofort zurück, indem die neue Auto Scaling-Gruppe beendet wird. Dies kann eine teilweise Flottenbereitstellungen verhindern, die auftreten kann, wenn eine fortlaufende Bereitstellung fehlschlägt, nachdem einige Stapel bereits abgeschlossen wurden.

Warnung

Einige Richtlinien ersetzen alle Instances während der Bereitstellung oder Aktualisierung. Dadurch gehen alle angesammelten Amazon-EC2-Steigerungsguthaben verloren. Dies geschieht in den folgenden Fällen:

  • Verwaltete Plattform-Updates mit aktiviertem Instance-Ersatz

  • Unveränderliche Updates

  • Bereitstellungen mit unveränderlichen Updates oder Datenverkehrsaufteilung aktiviert

Wenn ein unveränderliches Update fehlschlägt, laden die neuen Instances Bundle-Protokolle auf Amazon S3 hoch, bevor Elastic Beanstalk sie beendet. Elastic Beanstalk hinterlässt eine Stunde lang Protokolle eines fehlerhaften unveränderlichen Updates in Amazon S3 bevor sie gelöscht werden (anstatt der standardmäßigen 15 Minuten für Bundle- und Tail-Protokolle).

Anmerkung

Wenn Sie unveränderliche Updates für die Bereitstellung von Anwendungsversionen verwenden aber nicht für die Konfiguration, erhalten Sie möglicherweise eine Fehlermeldung, wenn Sie versuchen, eine Anwendungsversion bereitzustellen, die Konfigurationsänderungen enthält, die in der Regel ein fortlaufendes Update auslösen würden (beispielsweise Konfigurationen, die den Instance-Typ ändern). Um dies zu vermeiden, machen Sie die Konfigurationsänderung in einem separaten Update oder konfigurieren Sie unveränderliche Updates für Bereitstellungs- und Konfigurationsänderungen.

Es ist nicht möglich, ein unveränderliches Update in Verbindung mit Konfigurationsänderungen durchzuführen. Beispiel: Sie können keine -Einstellungen ändern, die eine Instance-Ersetzung erfordern, während auch andere Einstellungen aktualisiert werden, oder eine unveränderliche Bereitstellung mit Konfigurationsdateien durchführen, die Konfigurationseinstellungen oder zusätzliche Ressourcen in Ihrem Quellcode ändern. Wenn Sie versuchen, Ressourceneinstellungen zu ändern (z. B. Load Balancer-Einstellungen) und gleichzeitig ein unveränderliches Update durchführen, gibt Elastic Beanstalk einen Fehler zurück.

Wenn Ihre Ressourcenkonfigurationsänderungen nicht abhängig von Ihrer Quellcodeänderung oder Instance-Konfiguration sind, führen Sie sie in zwei Updates hinzu. Wenn sie abhängig sind, führen Sie stattdessen eine blaue/grüne Bereitstellung durch.

Konfigurieren unveränderlicher Updates

Sie können unveränderliche Updates in der Elastic Beanstalk-Konsole aktivieren und konfigurieren.

So aktivieren Sie unveränderliche Updates (Konsole)

  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. Legen Sie im Abschnitt Configuration Updates Rolling update type auf Immutable (Unveränderlich) fest.

    
            Der Abschnitt für Konfigurations-Updates auf der Konfigurationsseite für fortlaufende Updates und Bereitstellungen
  6. Wählen Sie Apply (Anwenden) aus.

Der aws:autoscaling:updatepolicy:rollingupdate-Namespace

Sie können auch die Optionen im aws:autoscaling:updatepolicy:rollingupdate-Namespace zum Konfigurieren unveränderlicher Updates verwenden. Die folgende Beispiel-Konfigurationsdatei ermöglicht unveränderliche Updates für Konfigurationsänderungen.

Beispiel .ebextensions/immutable-updates.config

option_settings: aws:autoscaling:updatepolicy:rollingupdate: RollingUpdateType: Immutable

Die folgende Beispiel-Konfigurationsdatei ermöglicht unveränderliche Updates für Konfigurationsänderungen und Bereitstellungen.

Beispiel .ebextensions/immutable-all.config

option_settings: aws:autoscaling:updatepolicy:rollingupdate: RollingUpdateType: Immutable aws:elasticbeanstalk:command: DeploymentPolicy: Immutable

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.