Ich habe eine Webanwendung mit einem Load Balancer und einer automatischen Skalierungsgruppe eingerichtet, um die Skalierung zu verwalten. Der Quellcode befindet sich in einem Git-Repository, sodass ich die Bilder nicht aktualisieren muss, wenn sich der Code ändert, sondern gelegentlich die Umgebung ändert, sodass wir ein neues Bild erstellen. Dann muss das Bild in die automatische Skalierungsgruppe geschaltet 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.
amazon-ec2
amazon-web-services
autoscaling
Plattformen
quelle
quelle
as-set-instance-health
), sodass die Autoscaling-Funktion sie einfach durch eine neue Instanz ersetzt.Antworten:
Ich möchte "AWS-HA-Release" vorschlagen, um dies zu tun - so funktioniert AWS-HA-Release:
In diesem Fall können Sie neuen Code oder neue AMI-Versionen ohne Ausfallzeit ausliefern und von völlig neuen Instanzen profitieren. Das AWS-HA-Release-Tool ist unter https://github.com/colinbjohnson/aws-missing-tools verfügbar .
quelle
Die einfachere Möglichkeit besteht darin, die Anzahl der minimalen Instanzen in der Auto-Scaling-Gruppe (ASG) auf das Doppelte der aktuellen Anzahl zu erhöhen, zu warten, bis alle gestartet wurden, und dann die minimale Anzahl von Instanzen auf den ursprünglichen Wert zu ändern. ELB beendet ältere Instanzen und hinterlässt neuere Instanzen mit Code. Um dies zu erreichen, sollte die Kündigungsrichtlinie auf " OldestInstance " gesetzt werden, damit sie wie beabsichtigt funktioniert. Die Standardkündigungsrichtlinie kann unerwünschte Nebenwirkungen haben.
Sie können die AWS CLI-Parameter und Beispiele hier einsehen : http://docs.aws.amazon.com/cli/latest/reference/autoscaling/update-auto-scaling-group.html
quelle
In diesem Szenario verwalte ich die UpdatePolicy-Funktion des AWS :: AutoScaling :: AutoScalingGroup-Objekts in der Cloud-Formation. Wenn der Cloud Formation Stack aktualisiert wird, verwaltet er den Zyklus der Instanzen.
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
quelle
Schauen Sie sich auch das Netflix Asgard- Tool an, das jetzt Open Source ist. Es kann nicht nur Auto Scaling Groups einrichten, sondern auch fortlaufende Releases neuer AMI-Images für eine Gruppe von Instanzen ausführen.
quelle
Ehrlich gesagt gibt es keine wirklich gute Möglichkeit, dies zu tun. Am besten füge ich eine Version in den ASG-Namen ein. Jedes Mal, wenn ich die AMI aktualisiere, erstelle ich eine neue ASG + -Startkonfiguration mit der neuen Version, damit sie nicht mit der anderen Gruppe in Konflikt steht. Dann beende ich alle Instanzen in der alten Gruppe.
Wenn eine fehlertolerantere Bereitstellung erforderlich ist, empfehle ich, einen weiteren Schritt hinzuzufügen, indem auch ein neuer Loadbalancer erstellt wird. Auf diese Weise können Sie beide ASGs voneinander isolieren. Außerdem können Sie einen Bereich "Staging" einrichten, in dem Sie Ihre Änderungen ein letztes Mal testen können, bevor Sie sie aktualisieren. Wenn Sie dann zum Wechseln bereit sind, aktualisieren Sie die DNS-Einträge und beenden Sie alle Instanzen in der alten Gruppe.
quelle
Wie ich hier gepostet habe (ähnliche Frage, nur mit Terraform), ist es in keiner Weise in ASG integriert, außer wenn Sie Cloudformation verwenden. Ich kämpfte auch damit und schrieb einen "Roller", der mehrere ASGs überwacht, deren Status und Aktualisierungen überprüft. Freue mich immer über Feedback. http://github.com/deitch/aws-asg-roller
quelle