Auto Scaling-Gruppe für Ihre Elastic Beanstalk-Umgebung - AWS Elastic Beanstalk

Auto Scaling-Gruppe für Ihre Elastic Beanstalk-Umgebung

Ihre AWS Elastic Beanstalk Umgebung enthält eine Auto Scaling-Gruppe, die die Amazon EC2-Instances in Ihrer Umgebung verwaltet. In einer Umgebung mit nur einer Instance stellt die Auto Scaling-Gruppe sicher, dass immer eine Instance ausgeführt wird. In einer Umgebung mit Lastausgleich konfigurieren Sie die Gruppe mit einem auszuführenden Instance-Bereich, und Auto Scaling fügt Instances je nach Auslastung hinzu bzw. entfernt sie.

Die Auto Scaling-Gruppe wendet auch die Startkonfiguration für die Instances in Ihrer Umgebung an. Sie können die Startkonfiguration anpassen, um den Instance-Typ, das Schlüsselpaar, den Amazon Elastic Block Store (Amazon EBS)-Speicher und andere Einstellungen zu ändern, die nur beim Starten einer Instance konfiguriert werden können.

Die Auto Scaling-Gruppe verwendet zwei Amazon CloudWatch-Alarme, um Skalierungsvorgänge auszulösen. Mit den Standardauslösern wird die Skalierung durchgeführt, wenn der durchschnittliche ausgehende Netzwerkdatenverkehr einer Instance innerhalb von 5 Minuten 6 MiB über- oder 2 MiB unterschreitet. Um Auto Scaling effektiv nutzen zu können, müssen Sie Auslöser konfigurieren, die für Ihre Anwendung, Ihren Instance-Typ und die Serviceanforderungen geeignet sind. Sie können die Skalierung anhand unterschiedlicher Statistiken wie Latenz, Festplatten-I/O-Vorgänge, CPU-Auslastung und Anforderungsanzahl ausführen.

Damit die Amazon EC2-Instances Ihrer Umgebung während erwarteter Spitzenlasten beim Datenverkehr optimal genutzt werden, sollten Sie Ihre Auto Scaling-Gruppe so konfigurieren, dass die Anzahl der Instances nach einem festen Plan angepasst wird. Sie können Änderungen an der Konfiguration der Gruppe auf Tags- oder Wochenbasis planen oder einmalige Änderungen planen, um Marketing-Ereignisse abzufangen, durch die viel Datenverkehr auf Ihre Website ausgelöst wird.

Optional kann Elastic Beanstalk On Demand- und Spot-Instances für Ihre Umgebung kombinieren. Sie können Amazon EC2 Auto-Scaling zur Überwachung von Veränderungen und zur automatisierten Reaktion auf Änderungen, die sich auf die Verfügbarkeit Ihrer Spot-Instances auswirken, konfigurieren, indem Sie Capacity Rebalancing (Kapazitäten neu ausgleichen) aktivieren.

Außerdem wird mit Auto Scaling auch der Zustand der einzelnen gestarteten Amazon EC2-Instances überwacht. Falls eine Instance unerwartet beendet wird, erkennt Auto Scaling dies und startet eine andere Instance als Ersatz. Weitere Informationen dazu, wie Sie die Gruppe so konfigurieren, dass die Zustandsprüfung von Load Balancer verwendet wird, finden Sie unter Zustandsprüfungseinstellung für Auto-Scaling.

Sie können Auto Scaling mit der Elastic-Beanstalk-Konsole, der EB CLI oder mit Konfigurationsoptionen für die jeweilige Umgebung konfigurieren.

Unterstützung für Spot-Instance

Um Amazon EC2-Spot-Instances nutzen zu können, können Sie eine Spot-Option für Ihre Umgebung aktivieren. Die Auto Scaling-Gruppe Ihrer Umgebung kombiniert dann Amazon EC2-Kaufoptionen und verwaltet eine Mischung aus On Demand- und Spot-Instances.

Unter diesem Thema werden die folgenden Methoden zum Aktivieren von Spot Instance-Anforderungen für Ihre Umgebung beschrieben:

Wichtig

Die Nachfrage nach Spot-Instances kann sich von einem Moment zum anderen erheblich unterscheiden und auch die Verfügbarkeit von Spot-Instances kann sich abhängig von der Verfügbarkeit nicht genutzter Amazon EC2-Instances erheblich unterscheiden. Zudem besteht immer die Möglichkeit, dass Ihre Spot-Instance unterbrochen wird.

Um die Auswirkungen dieser Unterbrechungen auf Ihre Anwendung zu minimieren, können Sie die in Amazon EC2-Auto-Scaling enthaltene Option Kapazitätsrebalancierung (Kapazität neu ausgleichen) aktivieren. Wenn diese Funktion aktiviert ist, versucht EC2 automatisch, Spot-Instances in einer Auto Scaling-Gruppe zu ersetzen, bevor sie unterbrochen werden. So konfigurieren Sie Ihre Auto Scaling-Gruppe in der Elastic Beanstalk-Konsole. Alternativ können Sie die Elastic BeanstalkEnableCapacityRebalancing-Konfigurationsoption auf true im aws:autoscaling:asg-Namespace setzen.

Weitere Informationen finden Sie unter Capacity Rebalancing (Kapazität neu ausgleichen) im Benutzerhandbuch für Amazon EC2 Auto-Scaling und Spot Instance Interruptions (Spot-Instance-Unterbrechungen) im Amazon EC2-Benutzerhandbuch für Linux-Instances.

Elastic Beanstalk bietet verschiedene Konfigurationsoptionen zur Unterstützung der Spot-Funktion. Sie werden in den folgenden Abschnitten über die Konfiguration Ihrer Auto Scaling-Gruppe erläutert.

Zwei dieser Optionen der aws:ec2:instances-Namespace schenken wir besondere Aufmerksamkeit:

  • SpotFleetOnDemandBase

  • SpotFleetOnDemandAboveBasePercentage

Diese beiden Optionen korrelieren mit der MinSize-Option der aws:autoscaling:asg-Namespace:

  • Von MinSize hängt die anfängliche Kapazität Ihrer Umgebung ab, d.h. die Anzahl der Instanzen, die Sie mindestens ausführen möchten.

  • SpotFleetOnDemandBase hat keinen Einfluss auf die Anfangskapazität. Wenn die Spot-Funktion aktiviert ist, hält diese Option fest, wie viele On Demand-Instances bereitgestellt werden, bevor Spot-Instances Berücksichtigung finden.

  • Achten Sie darauf, wann SpotFleetOnDemandBase kleiner ist als MinSize. Sie erhalten immer noch genau MinSize Instances als Anfangskapazität. Mindestens SpotFleetOnDemandBase von ihnen sollten On Demand-Instances sein.

  • Achten Sie darauf, wann SpotFleetOnDemandBase größer ist als MinSize. Wenn die Skalierung Ihrer Umgebung erfolgt, erhalten Sie mindestens die Anzahl zusätzlicher Instances, die der Differenz zwischen den beiden Werten entspricht. Mit anderen Worten, Sie erhalten garantiert mindestens zusätzliche (SpotFleetOnDemandBase - MinSize)-Instances, die in Bereitstellung sind, bevor die SpotFleetOnDemandBase Anforderung gesättigt wird.

In Produktionsumgebungen sind Spot-Instances in skalierbaren Umgebungen mit Lastausgleich besonders nützlich. Wir empfehlen nicht, Spot-Instances in Umgebungen mit einer einzigen Instance zu verwenden. Wenn keine Spot-Instances verfügbar sind, verlieren Sie möglicherweise die gesamte Kapazität (eine einzelne Instance) Ihrer Umgebung. Möglicherweise möchten Sie dennoch eine Spot-Instance in einer Umgebung mit einer einzelnen Instance für die Entwicklung oder das Testen verwenden. Stellen Sie in diesem Fall sicher, dass Sie sowohl SpotFleetOnDemandBase als auch SpotFleetOnDemandAboveBasePercentage auf Null setzen. Alle anderen Einstellungen führen zu einer On-Demand-Instance.

Hinweise
  • Einige ältere AWS Konten stellen möglicherweise Standard-Instance-Typen für Elastic Beanstalk bereit, die keine Spot-Instances unterstützen (z. B. t1.micro). Wenn Sie beim Aktivieren von Spot-Instance-Anforderungen die Fehlermeldung None of the instance types you specified supports Spot (Keiner der angegebenen Instance-Typen unterstützt Spot) sehen, müssen Sie Instance-Typen konfigurieren, die die Spot-Funktion unterstützen. Verwenden Sie zur Auswahl von Spot-Instance-Typen Spot Instance Advisor.

  • Das Aktivieren von Spot-Instance-Anforderungen erfordert die Verwendung von Amazon-EC2-Startvorlagen. Wenn Sie diese Funktion während der Erstellung oder Aktualisierung der Umgebung konfigurieren, versucht Elastic Beanstalk, Ihre Umgebung so zu konfigurieren, dass Amazon-EC2-Startvorlagen verwendet werden (sofern die Umgebung sie nicht bereits verwendet). In diesem Fall schlägt die Erstellung oder Aktualisierung der Umgebung möglicherweise fehl, wenn Ihre Benutzerrichtlinie nicht die erforderlichen Berechtigungen besitzt. Daher empfehlen wir, unsere Richtlinie für verwaltete Benutzer zu verwenden oder die erforderlichen Berechtigungen zu Ihren benutzerdefinierten Richtlinien hinzuzufügen. Weitere Details zu den erforderlichen Berechtigungen finden Sie unter Erstellen einer benutzerdefinierten Benutzerrichtlinie.

Die folgenden Beispiele veranschaulichen verschiedene Szenarien zum Festlegen der verschiedenen Skalierungsoptionen. Alle Beispiele gehen von einer Umgebung mit Lastausgleich aus, in der Spot-Instance-Anforderungen aktiviert wurden.

Beispiel 1: On-Demand- und Spot-Instances als Teil der Anfangskapazität

Optionseinstellungen
Option Namespace Wert

MinSize

aws:autoscaling:asg

10

MaxSize

aws:autoscaling:asg

24

SpotFleetOnDemandBase

aws:ec2:instances

4

SpotFleetOnDemandAboveBasePercentage

aws:ec2:instances

50

In diesem Beispiel wird in der Umgebung mit zehn Instances begonnen, von denen sieben On-Demand-Instances (vier Basis-Instances und 50 % der sechs oberhalb der Basis) und drei Spot-Instances sind. Die Umgebung kann bis zu 24 Instances skalieren. Bei der Skalierung wird der Anteil an On-Demand-Instances in dem Flottenteil oberhalb der vier On-Demand-Basis-Instances bei 50 % gehalten, bis hin zu einem Maximum von insgesamt 24 Instances, von denen 14 On-Demand-Instances (vier On-Demand-Basis-Instances und 50 % der 20 oberhalb der Basis) und zehn Spot-Instances sind.

Beispiel 2: Gesamte On-Demand-Anfangskapazität

Optionseinstellungen
Option Namespace Wert

MinSize

aws:autoscaling:asg

4

MaxSize

aws:autoscaling:asg

24

SpotFleetOnDemandBase

aws:ec2:instances

4

SpotFleetOnDemandAboveBasePercentage

aws:ec2:instances

50

In diesem Beispiel wird in der Umgebung mit vier Instances begonnen, wovon alle On-Demand-Instances sind. Die Umgebung kann bis zu 24 Instances skalieren. Bei der Skalierung wird der Anteil an On-Demand-Instances in dem Flottenteil oberhalb der vier On-Demand-Basis-Instances bei 50 % gehalten, bis hin zu einem Maximum von insgesamt 24 Instances, von denen 14 On-Demand-Instances (vier On-Demand-Basis-Instances und 50 % der 20 oberhalb der Basis) und zehn Spot-Instances sind.

Beispiel 3: Zusätzliche On-Demand-Basis über die anfängliche Kapazität hinaus

Optionseinstellungen
Option Namespace Wert

MinSize

aws:autoscaling:asg

3

MaxSize

aws:autoscaling:asg

24

SpotFleetOnDemandBase

aws:ec2:instances

4

SpotFleetOnDemandAboveBasePercentage

aws:ec2:instances

50

In diesem Beispiel wird in der Umgebung mit drei Instances begonnen, wovon alle On-Demand-Instances sind. Die Umgebung kann bis zu 24 Instances skalieren. Die erste zusätzliche Instance oberhalb der ersten drei ist On-Demand, um die vier On-Demand-Basis-Instances zu vervollständigen. Bei der weiteren Skalierung wird der Anteil an On-Demand-Instances in dem Flottenteil oberhalb der vier On-Demand-Basis-Instances bei 50 % gehalten, bis hin zu einem Maximum von insgesamt 24 Instances, von denen 14 On-Demand-Instances (vier On-Demand-Basis-Instances und 50 % der 20 oberhalb der Basis) und zehn Spot-Instances sind.

Auto-Scaling-Gruppenkonfiguration mit der Elastic-Beanstalk-Konsole

Sie können die Funktionsweise von Auto-Scaling konfigurieren, indem Sie die Capacity (Kapazität) auf der Seite Configuration (Konfiguration) der Umgebung in der Elastic-Beanstalk-Konsole bearbeiten.

So konfigurieren Sie Ihre Auto-Scaling-Umgebung in der Elastic-Beanstalk-Konsole

  1. Öffnen Sie die Elastic-Beanstalk-Konsole und wählen Sie in der Liste 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 Capacity (Kapazität) die Option Edit (Bearbeiten).

  5. Konfigurieren Sie im Abschnitt Auto Scaling Group (Auto Scaling-Gruppe) die folgenden Einstellungen.

    • Environment type (Umgebungstyp) – Wählen Sie Load balanced (Lastverteilt) aus.

    • Min instances (Mindestanzahl Instances) – Die Mindestanzahl an EC2-Instances, die die Gruppe stets enthalten sollte. Die Gruppe beginnt mit der Mindestanzahl und fügt Instances hinzu, wenn eine Hochskalierung ausgelöst wird.

    • Max instances (Höchstanzahl Instances) – Die Höchstanzahl an EC2-Instances, die die Gruppe stets enthalten sollte.

      Anmerkung

      Wenn Sie mit fortlaufenden Updates arbeiten, stellen Sie sicher, dass die Höchstanzahl an Instances über der Einstellung Minimum instances in service (Mindestanzahl ausgeführter Instances) für fortlaufende Updates liegt.

    • Zusammensetzung der Flotte – Der Standardwert ist On-Demand-Instances. Wählen Sie Kombinierte Kaufoptionen und Instances aus, um Spot-Instance-Anfragen zu aktivieren.

      Die folgenden Optionen sind bei Spot-Instance-Anfragen aktiviert:

      • Höchstspot-Preis – Empfehlungen zu den maximalen Preisoptionen für Spot-Instances finden Sie unter Spot-Instance-Preisverlauf im Amazon-EC2-Benutzerhandbuch für Linux-Instances.

      • On-Demand-Basis – Die Mindestanzahl von On-Demand-Instances, die von der Auto-Scaling-Gruppe bereitgestellt werden, bevor Spot-Instances bei der Skalierung Ihrer Umgebung in Betracht gezogen werden.

      • On-Demand über Basis – Der Prozentsatz der On-Demand-Instances, die als Teil der zusätzlichen Kapazität der Auto-Scaling-Gruppe, über die -Instances hinaus, bereitgestellt wird.

        Anmerkung

        Die Optionen On-Demand-Basis und On-Demand über Basis korrelieren mit den Min (Min.) und Max (Max.) Instances-Optionen, die weiter oben aufgeführt sind. Weitere Informationen zu diesen Optionen und Beispielen finden Sie unter Unterstützung für Spot-Instance.

      • Kapazitätsrebalancierung aktivieren – Diese Option ist nur relevant, wenn mindestens eine Spot-Instance in Ihrer Auto-Scaling-Gruppe vorhanden ist. Wenn diese Funktion aktiviert ist, versucht EC2 automatisch, Spot-Instances in der Auto-Scaling-Gruppe zu ersetzen, bevor sie unterbrochen werden, wodurch die Unterbrechungen von Spot-Instances für Ihre Anwendungen minimiert werden. Weitere Informationen finden Sie unter Kapazitätsrebalancierung im Benutzerhandbuch zum Amazon-EC2-Auto-Scaling.

    • Instance type (Instance-Typ) – Der Typ von Amazon-EC2-Instance, der zur Ausführung Ihrer Anwendung gestartet wurde. Details hierzu finden Sie unter Instance-Typen.

    • AMI ID (AMI-ID) – Das Maschinen-Image, das von Elastic Beanstalk zum Starten von Amazon EC2-Instances in Ihrer Umgebung verwendet wird. Details hierzu finden Sie unter AMI-ID.

    • Availability Zones (Verfügbarkeitszonen) – Legen Sie die Anzahl an Availability Zones fest, auf die die Instances der Umgebung verteilt werden. Standardmäßig startet die Auto-Scaling-Gruppe Instances gleichmäßig über alle nutzbaren Zonen verteilt. Um Instances auf weniger Zonen zu verteilen, legen Sie die Anzahl der zu verwendenden Zonen fest. Verwenden Sie für Produktionsumgebungen mindestens zwei Zonen, um sicherzustellen, dass Ihre Anwendung auch beim Ausfall einer Availability Zone weiterhin verfügbar ist.

    • Placement (Platzierung) (optional) – Wählen Sie die zu verwendenden Availability Zones aus. Verwenden Sie diese Einstellung, wenn Ihre Instances auf Ressourcen in bestimmten Zonen zugreifen müssen oder wenn Sie zonenspezifische Reserved Instances (Vorbehaltene Instances) gekauft haben. Wenn Sie bei Ruhephase: '720' Benutzerdefinierte Availability Zones: 'us-west-2a, us-west-2b' MaxSize: '4' die Anzahl der Zonen festlegen, müssen Sie mindestens so viele benutzerdefinierte Zonen auswählen.

      Wenn Sie Ihre Umgebung in einer benutzerdefinierten VPC starten, können Sie diese Option nicht konfigurieren. In einer benutzerdefinierten VPC wählen Sie Availability Zones für die Subnetze aus, die Sie der Umgebung zuweisen.

    • Scaling cooldown (Ruhephase für die Skalierung) – Die Wartezeit (in Sekunden) für das Starten oder Beenden von Instances nach einer Skalierung, bevor Auslöser weiter ausgewertet werden. Weitere Informationen finden Sie unter Skalieren von Ruhephasen.

    
            Elastic-Beanstalk-Auto-Scaling-Konfigurationsfenster
  6. Wählen Sie Apply (Anwenden) aus.

Auto-Scaling-Gruppenkonfiguration mit der EB-CLI

Wenn Sie mit dem Befehl eb create eine Umgebung erstellen, können Sie einige Optionen bezüglich der Auto-Scaling-Gruppe Ihrer Umgebung angeben. Mit diesen Optionen können Sie die Kapazität der Umgebung steuern.

--single

Erstellen einer Umgebung mit einer Amazon-EC2-Instance ohne Lastverteilung. Wenn Sie diese Option nicht verwenden, wird ein Lastenausgleich der Umgebung hinzugefügt,die erstellt wurde.

--enable-spot

Aktivieren Sie Spot-Instance-Anforderungen für Ihre Umgebung.

Die folgenden Optionen für den Befehl eb create können nur zusammen mit --enable-spot verwendet werden.

--instance-types

Listen Sie die Amazon-EC2-Instance-Typen auf, die Ihre Umgebung verwenden soll.

--spot-max-price

Der Höchstpreis pro Einheitsstunde in USD, den Sie für eine Spot-Instance zu zahlen bereit sind. Empfehlungen zu Höchstpreisoptionen für Spot-Instances finden Sie unter Spot-Instance-Preisverlauf im Amazon-EC2-Benutzerhandbuch für Linux-Instances.

--on-demand-base-capacity

Die Mindestanzahl von On-Demand-Instances, die von der Auto-Scaling-Gruppe bereitgestellt werden, bevor Spot-Instances bei der Skalierung Ihrer Umgebung in Betracht gezogen werden.

--on-demand-above-base-capacity

Der Anteil der On-Demand-Instances als Teil der zusätzlichen Kapazität, den Ihre Auto-Scaling-Gruppe über die durch die --on-demand-base-capacity- Option angegebene Anzahl von Instances hinaus bereitstellt.

Im folgenden Beispiel wird eine Umgebung erstellt und die Auto-Scaling-Gruppe so konfiguriert, dass Spot-Instance-Anforderungen für die neue Umgebung aktiviert werden. Dabei sind drei Instance-Typen möglich. Für dieses Beispiel, können drei mögliche Instance-Typen verwendet werden.

$ eb create --enable-spot --instance-types "t2.micro,t3.micro,t3.small"
Wichtig

Es gibt eine andere ähnlich benannte Option, die --instance-type (keine “s”), die die EB-CLI nur bei der Verarbeitung von On-Demand-Instances erkennt. Verwenden Sie nicht --instance-type (keine „s“) mit der --enable-spot Option. Wenn Sie dies tun, ignoriert die EB-CLI es. Verwenden Sie stattdessen --instance-types (mit „s“) mit der --enable-spot Option.

Konfigurationsoptionen

Elastic Beanstalk stellt Konfigurationsoptionen für die Auto-Scaling-Einstellungen in zwei Namespaces bereit: aws:autoscaling:asg und aws:ec2:instances.

Der Namespace aws:autoscaling:asg

Der aws:autoscaling:asg-Namespace bietet Optionen für die allgemeine Skalierung und Verfügbarkeit.

Im folgenden Beispiel einer Konfigurationsdatei wird die Auto-Scaling-Gruppe so konfiguriert, dass sie zwei bis vier Instances, bestimmte Availability Zones und eine Ruhephase von 12 Minuten (720 Sekunden) verwendet. Kapazitätsrebalancierung für Spot-Instances ist aktiviert. Diese letzte Option wird nur wirksam, wenn EnableSpot auf true im aws:ec2:instances-Namespace gesetzt wird, wie im folgenden Konfigurationsdatei-Beispiel veranschaulicht.

option_settings: aws:autoscaling:asg: Availability Zones: Any Cooldown: '720' Custom Availability Zones: 'us-west-2a,us-west-2b' MaxSize: '4' MinSize: '2' EnableCapacityRebalancing: true

Der Namespace aws:ec2:instances

Der aws:ec2:instances Namespace bietet Optionen, die sich auf die Instances Ihrer Umgebung beziehen, einschließlich der Spot-Instance-Verwaltung. Ergänzt werden aws:autoscaling:launchconfiguration und aws:autoscaling:asg.

Wenn Sie die Umgebungskonfiguration aktualisieren und einen oder mehrere Instance-Typen aus der InstanceTypes-Option entfernen, beendet Elastic Beanstalk alle Amazon-EC2-Instances, die auf einem der entfernten Instance-Typen ausgeführt werden. Die Auto-Scaling-Gruppe Ihrer Umgebung startet dann nach Bedarf neue Instances, um die gewünschte Kapazität zu vervollständigen, unter Verwendung der aktuell angegebenen Instance-Typen.

Folgendes Beispiel einer Konfigurationsdatei konfiguriert die Auto Scaling-Gruppe, um Spot-Instance-Anforderungen für Ihre Umgebung zu aktivieren. Drei mögliche Instance-Typenkönnenverwendetwerden. Mindestens eine On-Demand-Instancewird fürBaseline-Kapazität und dauerhaft 33 % der On-Demand-Instances werden für jede zusätzliche Kapazität verwendet.

option_settings: aws:ec2:instances: EnableSpot: true InstanceTypes: 't2.micro,t3.micro,t3.small' SpotFleetOnDemandBase: '1' SpotFleetOnDemandAboveBasePercentage: '33'

Verwenden Sie zur Auswahl von Spot-Instance-Typen Spot Instance Advisor.