AWS EC2 Auto Scaling Groups: Ich erhalte Min und Max, aber wofür sind die gewünschten Instanzen begrenzt?

75

Wenn Sie Setup ein Auto Scaling - Gruppen in AWS EC2 Minund MaxGrenzen scheinen Sinn zu machen:

  • Die Mindestanzahl von Instanzen, auf die basierend auf Richtlinien verkleinert werden soll
  • Die maximale Anzahl von Instanzen, auf die basierend auf Richtlinien skaliert werden kann

Ich war jedoch nie in der Lage, meinen Kopf um das zu wickeln, was zum Teufel das bewirken Desiredsoll.

Ich habe immer nur Desiredgleich gesetzt Min, weil ich Amazon im Allgemeinen den minimal möglichen Zehnten zahlen möchte, und es sei denn, Sie benötigen eine Instanz, um das Laden zu bewältigen, sollte es die MinAnzahl der Instanzen sein.

Ich weiß, wenn Sie ElasticBeanstalka Minauf 1 und Max2 setzen und setzen , setzt es a Desiredauf 2 (natürlich!) - Sie können keinen Wert für auswählen Desired.

Was wäre der Anwendungsfall für eine andere DesiredAnzahl von Instanzen und wie unterscheidet er sich? Wenn Sie erwarten, dass AWS niedriger skaliert als Ihr, Desiredwenn gewünscht, größer als Min?

Strahl
quelle
1
Sie machen es richtig, indem Sie Ihren gewünschten Wert auf min setzen, da gewünscht den "aktuellen Betrag" auf dem ASG anzeigt. Wenn ein Alarm zum "Erhöhen" oder "Verringern" ausgelöst wird, ändert sich der gewünschte Betrag (wie ein Schalter auf einem Bedienfeld), sodass ASG eine Instanz erstellt oder entfernt. Sie können meine detaillierte Antwort unten überprüfen.
Bahadir Tasdemir

Antworten:

75

Hier sind die Erläuterungen zu den "Min-, gewünschten und Max" -Werten des AWS-Supports:

MIN: Dies ist die Mindestanzahl von Instanzen, die in Ihrer automatischen Skalierungsgruppe ausgeführt werden können. Wenn Ihr CloudWatch-Alarm für die Verkleinerung ausgelöst wird, beendet Ihre automatische Skalierungsgruppe niemals Instanzen unterhalb dieser Nummer

GEWÜNSCHT: Wenn Sie einen CloudWatch-Alarm für ein Scale-up-Ereignis auslösen, wird der automatische Skalierer benachrichtigt, um den gewünschten Wert auf einen bestimmten höheren Wert zu ändern, und der automatische Skalierer startet eine oder mehrere Instanzen, um diese Nummer zu erreichen. Wenn Sie einen CloudWatch-Alarm auslösen, um ihn zu verkleinern, wird der gewünschte automatische Skalierer auf eine bestimmte niedrigere Zahl geändert, und der automatische Skalierer beendet Instanzen, um zu dieser Zahl zu gelangen.

MAX: Dies ist die maximale Anzahl von Instanzen, die Sie in Ihrer automatischen Skalierungsgruppe ausführen können. Wenn Ihr CloudWatch-Skalierungsalarm weiterhin ausgelöst wird, erstellt Ihre automatische Skalierungsgruppe niemals Instanzen, die über dem angegebenen Höchstbetrag liegen.

Bahadir Tasdemir
quelle
15
Ja, macht Sinn. Min und Max sind Grenzen. Gewünscht ist das, was Sie ursprünglich festgelegt haben. Der Autoscaler kann sich jedoch an Ihre Alarmregeln anpassen. Vielen Dank.
Ray
Gibt es einen Link zur Dokumentation?
Rod
Ich habe dem AWS-Support eine Frage gestellt. Dies ist die formale Antwort. Ich weiß nicht, ob es Unterlagen gibt.
Bahadir Tasdemir
1
Im Grunde ist es so, als würde man eine manuelle CloudWatch-Reise einstellen. Wenn Sie 20 festlegen, wird die Anzahl der Server zum Zeitpunkt Ihres Ereignisses auf 20 skaliert, dann jedoch automatisch verkleinert, wenn Ihre Konfiguration dies angibt. Oder anders ausgedrückt: Wenn Sie Ihre min manuell auf 20 einstellen und dann auf 4 reduzieren, hat dies genau den gleichen Effekt.
Chuck Le Butt
31

Stellen Sie sich das wie ein Gleitbereich-UI-Element vor.

Geben Sie hier die Bildbeschreibung ein

Mit min und max legen Sie die Untergrenze Ihrer Instanzskalierung fest. Mit der gewünschten Kapazität legen Sie fest, wie hoch die Instanzanzahl derzeit sein soll.

Beispiel: Sie wissen, dass Ihre Anwendung aufgrund einer Marketing-E-Mail oder einer Produkteinführung stark ausgelastet sein wird. Skalieren Sie einfach vorher die gewünschte Kapazität:

aws autoscaling set-desired-capacity --auto-scaling-group-name my-auto-scaling-group --desired-capacity 2 --honor-cooldown

Quelle

Erik Ahlswede
quelle
Wann würde die Anzahl der aktuellen Instanzen jemals unter den vom Schieberegler festgelegten Wert fallen? Ich weiß, dass es bei Bedarf bis zum Maximum über das Gewünschte hinaus skalieren kann, aber ich sehe noch keinen Fall, in dem es unter das Gewünschte fallen würde.
Ray
@ Ray Ich habe auf Ihre Frage als Antwort geantwortet. Ich weiß, dass es eine einjährige Frage ist, bin aber heute auf dieses Problem gestoßen und habe meine eigene Frage beantwortet, indem ich mir diese angesehen habe. Erik, sehr gutes Beispiel für den Slider-Teil.
AKDesai
13

Wenn Sie erwarten, dass AWS niedriger skaliert als gewünscht, wenn gewünscht, größer als min?

Dies geschieht, wenn Sie einen CloudWatch-Alarm basierend auf einer AutoScaling-Richtlinie festlegen. Immer wenn dieser Alarm ausgelöst wird, wird der DesiredCount auf den in der Konfiguration angegebenen Wert aktualisiert.

Beispiel: Wenn eine AutoScalingGroup-Konfiguration Min = 1, Desired = 3, Max = 5 hat und auf einer AutoScalingPolicy ein Alarm eingestellt ist, der besagt, dass die CPU-Auslastung für aufeinanderfolgende 10 Minuten <50% beträgt Remove 1 instances, wird die Anzahl der Instanzen weiter reduziert 1, wenn der Alarm ausgelöst wird, bis DesiredCount = MinCount.

Lessons Learned: Setzen Sie den MinCount auf> 0 oder = DesiredCount. Dadurch wird sichergestellt, dass die Anwendung nicht heruntergefahren wird, wenn mincount = 0 und die CPU-Auslastung sinken.

AKDesai
quelle
1
Ja, nachdem ich den Webmaster-Beitrag und Ihren erneut gelesen habe, habe ich die Schlüsselphase von Eriks analysiert: "Derzeit mag die Anzahl der Instanzen, um zu schweben". Harter Anruf, bei dem es sich um die beste Antwort handelt. Ich mag die Slider-Analogie, finde Erik aber immer noch ein wenig vage und erwähne nicht klar (zumindest für mich), dass die Autoscaling-Alamrs tatsächlich das "Gewünschte" modifizieren. Ihre Antwort weist sehr deutlich darauf hin. Wenn deine und Eriks zu einer zusammengefasst würden, würde dies definitiv meine Auswahl der richtigen beeinflussen, aber im Moment bekommst du nur beide positive Stimmen.
Ray
Ja, ich stimme dir zu. Ich habe nur den unbeantworteten Teil Ihrer Frage beantwortet. Danke für die positive Abstimmung.
AKDesai
10

"Gewünscht" ist (notwendigerweise) mehrdeutig.

  • Dies bedeutet die " anfängliche " Anzahl von Instanzen. Warum dann nicht einfach "initial"? Weil sich die Anzahl durch Ereignisse mit automatischer Skalierung ändern kann.
  • Es bedeutet also " aktuelle " Anzahl von Instanzen. Warum dann nicht einfach "aktuell"? Denn während eines Autoscaling-Ereignisses werden Instanzen gestartet / beendet. Diese Instanzen zählen nicht für die "aktuelle" Anzahl von Instanzen. Mit "aktuell" erwartet ein Benutzer Instanzen, die betriebsbereit sind.
  • Es bedeutet also " Ziel " der Instanznummer. Warum dann nicht einfach "zielen"? Ich denke "Ziel" ist genauso gut (mehrdeutig) wie "gewünscht" ...
theaws.blog
quelle
Danke das war hilfreich. Ich habe nicht bemerkt, dass sich dieser Wert geändert hat, nachdem die ASG erstellt wurde.
jDub9
Ich glaube jetzt, dass sich das Wort "Begehren" über diese drei Definitionen erstreckt. Manchmal bedeutet es eine Anfangszahl, manchmal aktuell, manchmal ist es nur ein Ziel und manchmal ist es eine Mischung aus allen.
sobi3ch
Es hilft wirklich. Dies sollte die gewählte Antwort sein!
Ryan Lyu
Dies sollte die gewählte Antwort sein. Diese Antwort ist, wenn ein Ninja-Meister spricht :)
Sandeep Shukla
0

Basierend auf meiner Lektüre wird der DesiredCapacityWert für Laien automatisch bei Scale-In- und Scale-Out-Ereignissen aktualisiert.

Mit anderen Worten,

Scale-In oder Scale-Out erfolgt durch Verringern oder Erhöhen des DesiredCapacityWerts.

Sateesh Pagolu
quelle
0

Gewünschte Kapazität bedeutet einfach die Anzahl der Instanzen, die beim Starten der automatischen Skalierung gestartet / ausgelöst werden. Das heißt, wenn die gewünschte Kapazität = 4 ist, werden 4 Instanzen so lange ausgeführt, bis ein Scale-up- oder Scale-down-Ereignis ausgelöst wird. Wenn ein Scale-up-Ereignis auftritt, wird die Anzahl der Instanzen bis zur maximalen Kapazität erhöht, und wenn ein Scale-down-Ereignis auftritt, wird sie bis zur minimalen Kapazität verringert.

Korrigieren Sie mich, wenn Sie falsch liegen, danke.

Mukesh Singh Rawat
quelle
0

Ich bemerkte, dass die gewünschte Kapazität abnahm und keine neue Instanz auftauchte, als

  1. Ich habe eine der Instanzen auf Standby gesetzt. Es lief weiter, wurde jedoch von ELB getrennt (Anforderungen wurden beim Zugriff über ELB-DNS nicht an diese bestimmte Instanz weitergeleitet). Von AWS wurde keine neue Instanz initiiert. Die eher gewünschte Kapazität wurde um 1 verringert.
  2. Als ich den Instanzstatus (aus dem Standby-Modus) änderte, wurde die Instanz erneut an ELB angehängt (die Instanz erhielt beim Zugriff über ELB-DNS Anforderungen). Die gewünschte Kapazität wurde um 1 erhöht und wurde 2.

Daher scheint es, dass keine an ELB angehängte Instanzen den durch min und max festgelegten Schwellenwert nicht überschreiten können, aber die gewünschte Kapazität wird automatisch angepasst oder geändert, basierend auf dem Auftreten eines Scale-In- oder Scale-Out-Ereignisses. Es war definitiv etwas Unbekanntes für mich.

Dies kann eine Möglichkeit sein, AWS darüber zu informieren, dass dies die gewünschte Kapazität ist, die für die jeweilige ELB zu einem bestimmten Zeitpunkt erforderlich ist.

Farwa Naqvi
quelle
0

Min und Max sind selbsterklärend, aber erwünscht war verwirrend, bis ich der ASG eine Richtlinie zur automatischen Skalierung der Zielverfolgung beigefügt habe, bei der die CPU-Auslastung die Zielmetrik war. Hier wurden die gewünschten Instanzen basierend auf der Ziel-CPU-Auslastung skaliert und skaliert. Wenn eine gewünschte Anzahl durch Cloudformation / Handbuch platziert wird, erstellt ASG vorerst die gleiche Anzahl von Instanzen wie die gewünschte Anzahl. Die spätere ASG-Richtlinie passt die gewünschten Instanzen jedoch automatisch an die Ziel-CPU-Auslastung an.

SudhirKumar
quelle