Frage Wie kann ich automatisch ein neues Bild in einer AWS Auto Scaling Group erstellen?


Ich habe ein Web-Anwendung-Setup mit einer Load-Balancer und Auto-Scaling-Gruppe, um die Skalierung zu verwalten. Der Quellcode befindet sich in einem Git-Repository, so dass ich die Bilder nicht aktualisieren muss, wenn sich der Code ändert, aber gelegentlich ändert sich die Umgebung, sodass wir ein neues Bild erstellen. Dann muss dieses Bild in die automatische Skalierungsgruppe übertragen werden.

Gibt es eine Möglichkeit, die Bilder automatisch zu wechseln? Im Moment plane ich eine Scale-Up- und Scale-Down-Aktion, die die alten Instanzen beseitigt.


18
2018-04-30 17:59


Ursprung


Es ist wahrscheinlich effizienter, wenn Sie nach dem Erstellen der neuen Startkonfiguration und Aktualisieren der Autoscaling-Gruppe jede Instanz als fehlerhaft markieren (z. B. mithilfe von as-set-instance-health), so dass das Autoskaling einfach durch eine neue Instanz ersetzt wird. - cyberx86


Antworten:


Dazu möchte ich "AWS-HA-Release" vorschlagen - die Funktionsweise von AWS-HA-Release:

  1. Wenn die aktuelle Autoscaling-Gruppe und der ELB 5 gesunde Instanzen melden,
  2. AWS-HA-Release bringt eine neue Instanz in Produktion und wartet darauf, dass der ELB sie als gesund erkennt (die Gesamtzahl der fehlerfreien Instanzen auf 6 erhöhen)
  3. Entfernt eine alte Instanz (insgesamt bis 5)
  4. Bringt eine weitere Instanz in Dienst (insgesamt 6)
  5. Entfernt eine alte Instanz (insgesamt bis 5)
  6. und so weiter, bis alle Instanzen ersetzt wurden

In diesem Fall können Sie neuen Code oder neue AMI-Versionen ohne Ausfallzeiten versenden und profitieren von völlig neuen Instanzen. Das AWS-HA-Release-Tool ist verfügbar unter https://github.com/colinbjohnson/aws-missing-tools.


8
2017-11-12 04:05





Der einfachere Weg besteht darin, die Anzahl der minimalen Instanzen in ASG auf das Doppelte Ihrer aktuellen Anzahl zu erhöhen, wenn alle gestartet wurden, und dann diese minimale Anzahl von Instanzen auf die ursprüngliche Anzahl zu reduzieren. ELB wird ältere Instanzen löschen und neuere Instanzen mit Code verlassen.

Hier finden Sie die AWS CLI-Parameter und Beispiele: http://docs.aws.amazon.com/cli/latest/reference/autoscaling/update-auto-scaling-group.html


7
2018-04-07 12:36



Vergessen Sie nicht, zu erwähnen, dass die Beendigungspolitik "OldestInstance" sein sollte, um wie beabsichtigt zu arbeiten. Die Standard-Terminierungsrichtlinie kann unerwünschte Nebenwirkungen haben. - Computer Mage
Prost, das ist eine super bequeme, stressfreie Methode. - Elad Nava


Die Art und Weise, wie ich dieses Szenario handhabe, besteht in der Verwendung der UpdatePolicy-Funktion des AWS :: AutoScaling :: AutoScalingGroup-Objekts in der Wolkenbildung. Wenn der Wolkenbildungsstapel aktualisiert wird, wird der Zyklus der Instanzen verwaltet.

einige Referenzen. http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-updatepolicy.html


5
2018-04-07 01:42



Danke eine Tonne @ Graeme. Ich hatte keine Ahnung, dass Cloudformation diese Funktionalität anbietet. - AJB


Schauen Sie sich auch die Netflix Asgard Werkzeug, das jetzt Open Source ist. Es kann nicht nur Auto Scaling Groups erstellen, sondern auch Rolling Releases neuer AMI-Images für eine Gruppe von Instanzen.


2
2017-11-17 13:12



Du meinst "Netflix Asgard"
Ja - behoben - danke - platforms
Netflix Asgard ist jetzt veraltet, es wird durch ersetzt Netflix Spinnaker - dlaidlaw


Es gibt nicht wirklich eine wirklich gute Art, es zu tun, um ehrlich zu sein. Der beste Weg, den ich gefunden habe, ist eine Version in den ASG-Namen zu bringen. Jedes Mal, wenn ich das AMI aktualisiere, erstelle ich eine neue ASG + Launch Config mit der neuen Version, so dass es nicht mit der anderen Gruppe kollidiert. Dann beende ich alle Instanzen in der alten Gruppe.

Wenn eine fehlertolerante Bereitstellung erforderlich ist, empfehle ich, einen weiteren Schritt hinzuzufügen, indem Sie auch die Erstellung eines neuen Lastenausgleichsmoduls mit einbeziehen. Dadurch können Sie beide ASG voneinander isoliert haben. Es ermöglicht Ihnen auch, einen "Staging" -Bereich zu haben, um Ihre Änderungen ein letztes Mal vor der Aktualisierung zu testen. Wenn Sie dann zum Wechseln bereit sind, aktualisieren Sie die DNS-Einträge und beenden Sie alle Instanzen in der alten Gruppe.


0
2018-05-01 15:41