it-swarm.com.de

AWS EC2-Auto-Scaling-Gruppen: Ich bekomme Min und Max, aber was ist die Anzahl der gewünschten Instanzen?

Wenn Sie eine Auto Scaling-Gruppe in AWS EC2 einrichten, scheinen Min- und Max-Grenzen sinnvoll zu sein:

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

Ich habe jedoch nie in der Lage gewesen, meinen Kopf um das zu wickeln, was die Hölle Desired betreffen soll.

Ich habe immer Desired gleich Min gesetzt, da ich Amazon in der Regel den minimalen Zehnten zahlen möchte. Wenn Sie keine Instanz benötigen, um die Last zu handhaben, sollte dies die Min-Anzahl von Instanzen sein.

Ich weiß, wenn Sie ElasticBeanstalk verwenden und ein Min auf 1 und Max auf 2 setzen, wird ein Desired auf 2 gesetzt (natürlich!) - Sie können keinen Wert für Desired auswählen.

Was wäre der Anwendungsfall für eine andere Desired Anzahl von Instanzen und wie unterscheidet sie sich? Wenn Sie davon ausgehen, dass AWS eine niedrigere Skalierung als Desired aufweist, ist der Wert größer als Min?

42
Ray

Hier sind die Erklärungen für die Werte "Min, Soll und Max" vom AWS-Support:

MIN: Dies ist die Mindestanzahl von Instanzen, die in Ihrem .__ ausgeführt werden können. automatische Skalierungsgruppe. Wenn Ihr CloudWatch-Down-Alarm ausgelöst wird, Ihre Auto-Scale-Gruppe beendet keine Instanzen unter dieser Nummer

DESIRED: Wenn Sie einen CloudWatch-Alarm für ein Scale-up-Ereignis auslösen, dann. benachrichtigt den automatischen Scaler, um den gewünschten Wert in einen angegebenen Wert zu ändern Wenn Sie einen höheren Betrag eingeben, startet der Auto-Scaler eine Instanz, um diese Nummer. Wenn Sie einen CloudWatch-Alarm auslösen, um ihn zu verkleinern, dann ändert den gewünschten automatischen Scaler in eine festgelegte niedrigere Zahl und Der Auto-Scaler beendet Instanz (en), um diese Nummer zu erhalten. 

MAX: Dies ist die maximale Anzahl von Instanzen, die Sie in .__ ausführen können. Ihre automatische Skalengruppe. Wenn der CloudWatch-Alarm weiter ansteigt, ___. ausgelöst, erstellt Ihre Auto-Scale-Gruppe niemals mehr Instanzen als der angegebene Höchstbetrag.

36

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

 enter image description here

Mit min und max legen Sie die untere Grenze der Instanzskalierung fest. Mit der gewünschten Kapazität legen Sie fest, wie viel die Instanzanzahl momentan angezeigt werden soll. 

Beispiel: Sie wissen, dass Ihre Anwendung aufgrund einer Marketing-E-Mail oder einer Produkteinführung eine hohe Auslastung haben wird. Skalieren Sie zuvor einfach Ihre gewünschte Kapazität:

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

Quelle

18
Erik Ahlswede

Wenn Sie davon ausgehen, dass AWS niedriger skaliert wird, als gewünscht, ist größer als Min?

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

wenn z. B. eine AutoScalingGroup-Konfig 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, dann verringert Remove 1 instances die Instanzanzahl um 1, wenn der Alarm ausgelöst wird, bis DesiredCount = MinCount ist. 

Lessons Learned: Legen Sie für MinCount> 0 oder = DesiredCount fest. Dadurch wird sichergestellt, dass die Anwendung nicht heruntergefahren wird, wenn mincount = 0 ist und die CPU-Auslastung abnimmt.

7
A.K.Desai

"Gewünscht" ist (notwendigerweise) mehrdeutig.

  • Es bedeutet die "initial" Anzahl der Instanzen. Warum dann nicht einfach "initial"? Weil sich die Anzahl durch Ereignisse mit automatischer Skalierung ändern kann.
  • Es bedeutet also "current" Instanznummer. Warum dann nicht einfach "aktuell"? Denn während eines Autoscaling-Ereignisses werden Instanzen gestartet/beendet. Diese Instanzen zählen nicht zur "aktuellen" Anzahl von Instanzen. Mit "aktuell" erwartet ein Benutzer Instanzen, die bedienbar sind.
  • Es bedeutet also "Ziel" Instanznummer. Warum dann nicht einfach "zielen"? Ich denke, "Ziel" ist genauso gut (mehrdeutig) wie "erwünscht" ...
1
Dai

Basierend auf meiner Lektüre wird der Wert von DesiredCapacity bei Laienmaßen automatisch bei Scale-In- und Scale-Out-Ereignissen aktualisiert.

Mit anderen Worten,

Scale-In oder Scale-Out werden durch Verringern oder Erhöhen des DesiredCapacity-Werts ausgeführt.

0
5a7335h

Die gewünschte Kapazität bedeutet einfach die Anzahl der Instanzen, die beim Starten der automatischen Skalierung auftreten. Das heißt, wenn die gewünschte Kapazität = 4 ist, werden 4 Instanzen weiter ausgeführt, bis ein Ereignis zum Vergrößern oder Verkleinern ausgelöst wird. Wenn ein Skalierereignis auftritt, wird die Anzahl der Instanzen bis zur maximalen Kapazität erhöht, und wenn das Skalierereignis auftritt, sinkt es bis zur minimalen Kapazität.

Korrigieren Sie mich wenn falsch, danke.

0

Ich bemerkte, dass die gewünschte Kapazität nicht mehr verfügbar war, und es wurde keine neue Instanz gestartet, als

  1. Ich habe eine der Instanzen in den Standby-Modus versetzt. Es lief weiter, wurde jedoch von ELB getrennt (Anforderungen wurden beim Zugriff über ELB-DNS nicht an diese bestimmte Instanz weitergeleitet). Es wurde keine neue Instanz von AWS initiiert. Die gewünschte Kapazität wurde um 1 verringert
  2. Als ich den Status der Instanz (aus dem Standby) geändert habe, wurde die Instanz erneut an ELB angehängt (die Instanz hat beim Zugriff über ELB-DNS begonnen, Anforderungen abzurufen). Die gewünschte Kapazität wurde um 1 erhöht und zu 2

Daher scheint es, dass keine der mit ELB verknüpften Instanzen den von min und max festgelegten Schwellenwert nicht überschreiten kann, sondern die gewünschte Kapazität basierend auf einem eintretenden Scale-In- oder Scale-Out-Ereignis automatisch angepasst oder geändert wird. Es war definitiv etwas Unbekanntes für mich.

Dies könnte eine Möglichkeit sein, AWS mitzuteilen, dass dies die gewünschte Kapazität ist, die für den jeweiligen ELB zu diesem Zeitpunkt erforderlich ist.

0
Farwa Naqvi