Bereitstellungsrichtlinien und -einstellungen - AWS Elastic Beanstalk

Bereitstellungsrichtlinien und -einstellungen

AWS Elastic Beanstalk bietet mehrere Optionen für die Verarbeitung von Bereitstellungen, darunter Bereitstellungsrichtlinien (All at once (Alle auf einmal), Rolling (Fortlaufend), Rolling with additional batch (Fortlaufend mit zusätzlichem Stapel), Immutable (Unveränderlich) und Traffic splitting (Datenverkehrsaufteilung)) und Optionen, mit denen Sie die Stapelgröße sowie das Zustandsprüfungsverhalten bei Bereitstellungen konfigurieren können. Standardmäßig stellt Ihre Umgebung alle Bereitstellungen gleichzeitig bereit. Wenn Sie die Umgebung über die EB CLI erstellt haben und es sich um eine skalierbare Umgebung handelt (d. h., Sie haben die Option --single nicht angegeben), verwendet sie fortlaufende Bereitstellungen.

Bei fortlaufenden Bereitstellungen teilt Elastic Beanstalk die Amazon EC2-Instances der Umgebung in Batches auf und stellt die neue Version der Anwendung jeweils in einem Stapel bereit. Auf den verbleibenden Instances in der Umgebung wird weiterhin die alte Version der Anwendung ausgeführt. Während der fortlaufenden Bereitstellung werden Anforderungen sowohl von Instances mit der alten Anwendungsversion als auch von Instances mit der neuen Anwendungsversion (in den bereits aktualisierten Stapeln) verarbeitet. Details hierzu finden Sie unter Funktionsweise fortlaufender Bereitstellungen.

Um auch während der Bereitstellungen die volle Kapazität zu wahren, können Sie die Umgebung so konfigurieren, dass erst ein neuer Instance-Batch gestartet wird, bevor andere Instances außer Betrieb genommen werden. Diese Option wird als fortlaufende Bereitstellung mit zusätzlichem Batch bezeichnet. Nach erfolgter Bereitstellung beendet Elastic Beanstalk den zusätzlichen Instance-Batch.

Bei unveränderlichen Bereitstellungen wird eine unveränderliche Aktualisierung ausgeführt. Dabei wird zusätzlich zu den Instances mit der alten Anwendungsversion eine ganze Gruppe neuer Instances mit der neuen Anwendungsversion in einer separaten Auto Scaling-Gruppe gestartet. Die Probleme, die von teilweise abgeschlossenen fortlaufenden Bereitstellungen verursacht werden können, treten bei unveränderlichen Bereitstellungen nicht auf. Falls die neuen Instances die Zustandsprüfungen nicht bestehen, werden sie von Elastic Beanstalk beendet – und die ursprünglichen Instances sind unverändert vorhanden.

Mit Datenverkehrsaufteilungs-Bereitstellungen können Sie Canary-Tests als Teil Ihrer Anwendungsbereitstellung durchführen. In einer Bereitstellung mit Datenverkehrsaufteilung startet Elastic Beanstalk eine vollständige Reihe neuer Instances, genau wie bei einer unveränderlichen Bereitstellung. Anschließend leitet er einen bestimmten Prozentsatz des eingehenden Clientdatenverkehrs für einen bestimmten Evaluierungszeitraum an die neue Anwendungsversion weiter. Wenn die neuen Instances fehlerfrei bleiben, leitet Elastic Beanstalk den gesamten Datenverkehr an sie weiter und beendet die alten Instances. Wenn die neuen Instances keine Zustandsprüfungen bestehen oder wenn Sie die Bereitstellung abbrechen, verschiebt Elastic Beanstalk den Datenverkehr zurück zu den alten Instances und beendet die neuen Instances. Der Service wird nie unterbrochen. Details hierzu finden Sie unter Funktionsweise von Bereitstellungen mit Datenverkehrsaufteilung.

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

Im Falle, dass die Anwendung nicht alle Zustandsprüfungen besteht, aber mit einem niedrigeren Status ordnungsgemäß funktioniert, können Sie die Option Healthy threshold ändern und so zulassen, dass Instances die Zustandsprüfungen auch mit einem niedrigeren Status (z. B. Warning) bestehen. Um bei fehlgeschlagenen Bereitstellungen aufgrund von nicht bestandenen Zustandsprüfungen eine Aktualisierung unabhängig vom Status zu erzwingen, aktivieren Sie die Option Ignore health check (Zustandsprüfung ignorieren).

Sofern Sie eine Batchgröße für fortlaufende Aktualisierungen angeben, verwendet Elastic Beanstalk diesen Wert auch für den fortlaufenden Anwendungsneustart. Verwenden Sie fortlaufende Neustarts, wenn die Proxy- und Anwendungsserver, die auf den Instances der Umgebung ausgeführt werden, ohne Ausfallzeit neu gestartet werden müssen.

Konfigurieren von Anwendungsbereitstellungen

Aktivieren und konfigurieren Sie in der Environment Management Console die Stapelbereitstellung von Anwendungsversionen, indem Sie die Option Updates and Deployments (Updates und Bereitstellungen) auf der Seite Configuration (Konfiguration) der Umgebung ändern.

So konfigurieren Sie Bereitstellungen (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. Wählen Sie unter Application Deployments (Anwendungsbereitstellungen) eine Option für Deployment policy (Bereitstellungsrichtlinie) sowie Batch-Einstellungen und Optionen für die Zustandsprüfung aus.

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

Im Bereich Application deployments (Anwendungsbereitstellungen) der Seite Rolling updates and deployments (Fortlaufende Updates und Bereitstellungen) sind die folgenden Optionen für Anwendungsbereitstellungen verfügbar:

  • Deployment policy (Bereitstellungsrichtlinie) – Wählen Sie eine der folgenden Bereitstellungsoptionen aus:

    • All at once (Alle auf einmal) – Die neue Version wird auf allen Instances gleichzeitig bereitgestellt. Während der Bereitstellung sind alle Instances der Umgebung kurzzeitig außer Betrieb.

    • Rolling (Fortlaufend) – Die neue Version wird in Stapeln bereitgestellt. Während der Bereitstellung ist der jeweilige Batch außer Betrieb, sodass die Kapazität der Umgebung um die Anzahl der Instances in einem Batch reduziert wird.

    • Rolling with additional batch (Fortlaufend mit zusätzlichem Stapel) – Die neue Version wird in Stapeln bereitgestellt, aber zuerst wird ein neuer Instance-Stapel gestartet, um die volle Kapazität auch während der Bereitstellung zu gewährleisten.

    • Immutable (Unveränderlich) – Die neue Version wird mithilfe einer unveränderlichen Aktualisierung auf einer neuen Instance-Gruppe bereitgestellt.

    • Datenverkehrsaufteilung – Stellen Sie die neue Version für eine neue Gruppe von Instances bereit und teilen Sie den eingehenden Clientdatenverkehr vorübergehend zwischen der vorhandenen und der neuen Anwendungsversion auf.

Für die Bereitstellungsrichtlinien Rolling (Fortlaufend) und Rolling with additional Batch (Fortlaufend mit zusätzlichem Stapel) können Sie Folgendes konfigurieren:

  • Batch size (Stapelgröße) – Die Größe der Gruppe von Instances für die Bereitstellung in jedem Stapel.

    Wählen Sie Percentage (Prozentsatz) aus, um einen Prozentsatz für die Gesamtanzahl der EC2-Instances in der Auto Scaling-Gruppe (bis zu 100 %) zu konfigurieren, oder wählen Sie Fixed (Fest) aus, um eine feste Anzahl von Instances zu konfigurieren (bis auf die maximale Anzahl der Instances in der Auto Scaling-Konfiguration Ihrer Umgebung).

Sie können für die Bereitstellungsrichtlinie Traffic Splitting (Datenverkehrsaufteilung) Folgendes konfigurieren:

  • Traffic split (Datenverkehrsaufteilung) – Der anfängliche Prozentsatz des eingehenden Clientdatenverkehrs, den Elastic Beanstalk auf Umgebungs-Instances verlagert, auf denen die von Ihnen bereitgestellte neue Anwendungsversion ausgeführt wird.

  • Auswertungszeit für Datenverkehrsaufteilung – Der Zeitraum (in Minuten), den Elastic Beanstalk nach einer anfänglich fehlerfreien Bereitstellung wartet, bevor der gesamte eingehende Clientdatenverkehr auf die von Ihnen bereitgestellte neue Anwendungsversion verschoben wird.


        Konfigurationsseite für Bereitstellung von Elastic Beanstalk-Anwendungen

Der Abschnitt Deployment Preferences (Bereitstellungspräferenzen) enthält die Optionen für Zustandsprüfungen.

  • Ignore health check (Zustandsprüfung ignorieren) – Verhindert den Rollback einer Bereitstellung, falls ein Batch nicht innerhalb des unter Command timeout (Befehls-Timeout) angegebenen Werts als stabil eingestuft wird.

  • Healthy threshold (Schwellenwert für den fehlerfreien Zustand) – Damit kann der Grenzwert, bei dem eine Instance als stabil eingestuft wird, für fortlaufende Bereitstellungen, fortlaufende Aktualisierungen und unveränderliche Aktualisierungen herabgesetzt werden.

  • Command timeout (Befehls-Timeout) – Gibt an, wie viele Sekunden darauf gewartet wird, dass eine Instance als stabil eingestuft wird, bevor die Bereitstellung abgebrochen oder – bei aktivierter Ignore health check (Zustandsprüfung ignorieren)-Option – mit dem nächsten Batch begonnen wird.


        Konfigurationsseite für Bereitstellung von Elastic Beanstalk-Anwendungen

Funktionsweise fortlaufender Bereitstellungen

Im Rahmen der Batch-Verarbeitung trennt Elastic Beanstalk alle Instances im Batch vom Load Balancer, stellt die neue Anwendungsversion bereit und ordnet die Instances wieder zu. Sofern Connection Draining (Verbindungsausgleich) aktiviert ist, gleicht Elastic Beanstalk bestehende Verbindungen der Amazon-EC2-Instances in jedem Batch aus, bevor mit der Bereitstellung begonnen wird.

Nachdem die Instances im Batch wieder dem Load Balancer zugeordnet wurden, wartet Elastic Load Balancing, bis die Instances die mindestens erforderlichen Elastic Load Balancing-Zustandsprüfungen (der Healthy check count threshold-Wert) bestanden haben, anschließend wird dann der Datenverkehr an sie weitergeleitet. Falls keine URL für die Zustandsprüfung konfiguriert ist, kann das sehr schnell gehen, da eine Instance die Zustandsprüfung bereits besteht, sobald sie eine TCP-Verbindung annimmt. Ist eine URL für die Zustandsprüfung definiert, leitet der Load Balancer den Datenverkehr erst an die aktualisierten Instances weiter, wenn diese als Antwort auf eine 200 OK-Anforderung den Statuscode HTTP GET an die URL für die Zustandsprüfung senden.

Elastic Beanstalk wartet, bis alle Instances in einem Batch stabil sind, bevor mit dem nächsten Batch begonnen wird. Beim Basis-Health-Reporting hängt der Status einer Instance vom Status der Elastic Load Balancing-Zustandsprüfung ab. Wenn alle Instances im Batch genügend Zustandsprüfungen bestanden haben, um von Elastic Load Balancing als stabil eingestuft zu werden, ist der Batch abgeschlossen. Sind erweiterte Zustandsberichte aktiviert, berücksichtigt Elastic Beanstalk noch einige weitere Faktoren, darunter das Ergebnis eingehender Anforderungen. Mit erweiterten Zustandsberichten müssen alle Instances 12 aufeinanderfolgende Zustandsprüfungen mit dem Status "OK" innerhalb von zwei Minuten für Webserverumgebungen und 18 Zustandsprüfungen innerhalb von drei Minuten für Worker-Umgebungen bestehen.

Die Bereitstellung schlägt fehl, wenn ein Instance-Batch nicht innerhalb des Timeout-Werts für Befehle als stabil eingestuft wird. Nach einer fehlgeschlagenen Bereitstellung überprüfen Sie den Zustand der Instances in Ihrer Umgebung nach Informationen über die Ursache des Fehlers. Führen Sie dann einen Rollback mit einer anderen Bereitstellung mit einer fixen oder funktionierenden, guten Version Ihrer Anwendung durch.

Schlägt eine Bereitstellung nach dem erfolgreichen Abschluss von einem oder mehreren Stapeln fehl, wird auf den aktualisierten Stapeln die neue Anwendungsversion und auf ausstehenden Stapeln weiterhin die alte Version ausgeführt. Die auf den Umgebungs-Instances ausgeführte Version wird auf der Zustandsprüfungsseite in der Konsole angezeigt. Auf dieser Seite wird die Bereitstellungs-ID der zuletzt für die Instances der Umgebung ausgeführte Bereitstellung angegeben. Wenn Sie Instances aus der fehlgeschlagenen Bereitstellung beenden, ersetzt Elastic Beanstalk diese durch Instances, auf denen die Anwendungsversion der letzten erfolgreichen Bereitstellung ausgeführt wird.

Funktionsweise von Bereitstellungen mit Datenverkehrsaufteilung

Mit Datenverkehrsaufteilungs-Bereitstellungen können Sie Canary-Tests durchführen. Sie leiten einen Teil des eingehenden Clientdatenverkehrs an die neue Anwendungsversion weiter, um die Integrität der Anwendung zu überprüfen, bevor Sie die neue Version einsetzen und den gesamten Datenverkehr dahin weiterleiten.

Während einer Bereitstellung mit Datenverkehrsaufteilung erstellt Elastic Beanstalk einen neuen Satz von Instance in einer separaten temporären Auto Scaling-Gruppe. Elastic Beanstalk weist dann den Load Balancer an, einen bestimmten Prozentsatz des eingehenden Datenverkehrs Ihrer Umgebung an die neuen Instances weiterzuleiten. Anschließend verfolgt Elastic Beanstalk für einen festgelegten Zeitraum die Integrität dieser neuen Instances. Ist alles in Ordnung, verschiebt Elastic Beanstalk den verbleibenden Datenverkehr auf die neuen Instances und fügt sie der ursprünglichen Auto Scaling-Gruppe der Umgebung hinzu, wodurch die alten Instances ersetzt werden. Anschließend bereinigt Elastic Beanstalk die alten Instances und entfernt die temporäre Auto Scaling-Gruppe.

Anmerkung

Die Kapazität der Umgebung ändert sich während einer Bereitstellung mit Datenverkehrsaufteilung nicht. Elastic Beanstalk startet die gleiche Anzahl von Instances in der temporären Auto Scaling-Gruppe wie in der ursprünglichen Auto Scaling-Gruppe zum Zeitpunkt des Bereitstellungsbeginns. Für die Dauer der Bereitstellung wird dann eine konstante Anzahl von Instances in beiden Auto Scaling-Gruppen verwaltet. Berücksichtigen Sie diese Tatsache bei der Konfiguration der Evaluierungszeit für die Datenverkehrsaufteilung der Umgebung.

Das Rollback der Bereitstellung auf die vorherige Anwendungsversion erfolgt schnell und wirkt sich nicht auf den Dienst für den Clientdatenverkehr aus. Wenn die neuen Instances keine Zustandsprüfungen bestehen oder wenn Sie die Bereitstellung abbrechen, verschiebt Elastic Beanstalk den Datenverkehr zurück zu den alten Instances und beendet die neuen Instances. Sie können jede Bereitstellung abbrechen, indem Sie die Übersichtsseite der Umgebung in der Elastic Beanstalk-Konsole verwenden und unter Environment actions (Umgebungsaktionen)die Option Abort current operation (Aktuellen Vorgang abbrechen) auswählen. Sie können auch die AbortEnvironmentUpdate-API oder den entsprechenden AWS CLI-Befehl aufrufen.

Für die Bereitstellung zur Datenverkehrsaufteilung ist ein Application Load Balancer erforderlich. Elastic Beanstalk verwendet diesen Load Balancer-Typ standardmäßig, wenn Sie Ihre Umgebung mit der Elastic Beanstalk-Konsole oder der EB CLI erstellen.

Namespaces für die Bereitstellungsoption

Sie können die Konfigurationsoptionen im Namespace aws:elasticbeanstalk:command zum Konfigurieren Ihrer Bereitstellungen verwenden. Wenn Sie die Richtlinie für die Datenverkehrsaufteilung auswählen, stehen zusätzliche Optionen für diese Richtlinie im Namespace aws:elasticbeanstalk:trafficsplitting zur Verfügung.

Mit der Option DeploymentPolicy legen Sie den Bereitstellungstyp fest. Folgende Werte werden unterstützt:

  • AllAtOnce – Deaktiviert fortlaufende Bereitstellungen; die Bereitstellung erfolgt stets auf allen Instances gleichzeitig.

  • Rolling – Aktiviert standardmäßig fortlaufende Bereitstellungen.

  • RollingWithAdditionalBatch – Startet vor der Bereitstellung einen zusätzlichen Instance-Batch, um die volle Kapazität zu gewährleisten.

  • Immutable – Führt bei jeder Bereitstellung eine unveränderliche Aktualisierung aus.

  • TrafficSplitting – Führt Bereitstellungen mit Datenverkehrsaufteilung aus, um Ihre Anwendungsbereitstellungen einem Canary-Test zu unterziehen.

Wenn Sie fortlaufende Bereitstellungen aktivieren, legen Sie die Optionen BatchSize und BatchSizeType fest, um die Größe der einzelnen Batches zu definieren. Um beispielsweise 25 % aller Instances in den einzelnen Stapeln bereitzustellen, geben Sie folgende Optionen und Werte an.

Beispiel .ebextensions/rolling-updates.config

option_settings: aws:elasticbeanstalk:command: DeploymentPolicy: Rolling BatchSizeType: Percentage BatchSize: 25

Um unabhängig von der Anzahl ausgeführter Instances jeweils fünf Instances in den einzelnen Batches bereitzustellen und einen zusätzlichen Batch mit fünf Instances, auf denen bereits die neue Version ausgeführt wird, vor der Außerbetriebnahme einer anderen Instance bereitzustellen, geben Sie folgende Optionen und Werte an.

Beispiel .ebextensions/rolling-additionalbatch.config

option_settings: aws:elasticbeanstalk:command: DeploymentPolicy: RollingWithAdditionalBatch BatchSizeType: Fixed BatchSize: 5

Um für jede Bereitstellung mit dem Zustandsprüfungs-Grenzwert Warning (Warnung) eine unveränderliche Aktualisierung auszuführen und die Bereitstellung fortzusetzen, auch wenn die Instances im Stapel die Zustandsprüfungen nicht innerhalb von 15 Minuten bestanden haben, geben Sie folgende Optionen und Werte an.

Beispiel .ebextensions/immutable-ignorehealth.config

option_settings: aws:elasticbeanstalk:command: DeploymentPolicy: Immutable HealthCheckSuccessThreshold: Warning IgnoreHealthCheck: true Timeout: "900"

Geben Sie die folgenden Optionen und Werte an, um Bereitstellungen mit Datenverkehrsaufteilung durchzuführen, 15 Prozent des Clientdatenverkehrs an die neue Anwendungsversion weiterzuleiten und die Integrität für 10 Minuten zu bewerten.

Beispiel .ebextensions/traffic-splitting.config

option_settings: aws:elasticbeanstalk:command: DeploymentPolicy: TrafficSplitting aws:elasticbeanstalk:trafficsplitting: NewVersionPercent: "15" EvaluationTime: "10"

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.