Auto Scaling kann nicht bis zum Ende einer Stunde warten, um eine Instanz zu beenden. Allerdings gibt es ein paar Optionen zu entdecken!
Wenn eine Skalierungsrichtlinie ausgelöst wird, die Auto Scaling zum Skalieren anweist (eine Amazon EC2-Instanz entfernen), wählt sie zuerst eine Availability Zone mit den meisten Instanzen aus und bestimmt dann, welche Instanz in dieser Availability Zone beendet werden soll. Diese Wahl wird von einem Termination Policy, hergestellt, die die Werte haben kann:
- OldestInstance: Auto Scaling beendet die älteste Instanz in der Gruppe. Diese Option ist nützlich, wenn Sie die Instanzen in der Auto Scaling-Gruppe auf einen neuen EC2-Instance-Typ aktualisieren und schließlich Instanzen durch ältere Instanzen durch neuere Instanzen ersetzen möchten.
- NewestInstance: Auto-Skalierung beendet die neueste Instanz in der Gruppe. Diese Richtlinie ist nützlich, wenn Sie eine neue Startkonfiguration testen, sie jedoch nicht in der Produktion beibehalten möchten.
- OldestLaunchConfiguration: Auto Scaling beendet Instanzen mit der ältesten Startkonfiguration. Diese Richtlinie ist nützlich, wenn Sie eine Gruppe aktualisieren und die Instanzen aus einer vorherigen Konfiguration auslaufen lassen.
- ClosestToNextInstanceHour: Auto Scaling beendet Instanzen, die der nächsten Abrechnungsstunde am nächsten sind. Diese Richtlinie hilft Ihnen, die Nutzung Ihrer Instanzen zu maximieren und Kosten zu verwalten.
Die letzte Option, ClosestToNextInstanceHour, fast ist es, was Sie suchen, dass es eine Instanz zu beenden, die eine stündliche Gebühr nächste verursachen. Es wird jedoch nicht bis zum Ende der Stunde "warten".
Eine Option besteht darin, eine eigene Anwendung zu schreiben, die festlegt, wann eine Instanz skaliert werden soll, bis die Instanz ihren vollen Wert angegeben hat. Die App könnte dann TerminateInstanceInAutoScalingGroup
aufrufen, um die Instanz zu entfernen und zu beenden. Wenn eine Instanz als 'Back-End' verwendet wird (Web-Requests nicht direkt verarbeiten), wird eine Auto Scaling Lifecycle Hook verwendet, die ein Signal sendet, wenn eine Instanz aus einer Auto-Scaling-Gruppe, aber davor entfernt wird ist beendet. Dies wird normalerweise verwendet, um der Instanz die Möglichkeit zu geben, "Arbeit" zu beenden, z. B. das Kopieren von Protokolldateien und das Beenden einer Aufgabe. Wenn die Instanz zur Verarbeitung lang laufender Hintergrundaufgaben verwendet wird, kann der Lebenszyklus-Hook verwendet werden, um zu warten, bis die Arbeit beendet ist oder bis die Rechnungsstunde fast beendet ist, bevor die Instanz beendet werden kann.
All dies erfordert jedoch einige benutzerdefinierte Skripts. Die standardmäßige automatische Skalierungskonfiguration beendet eine Instanz sofort als Reaktion auf eine Skalierungsrichtlinie (sofern nicht Connection Draining in Kraft ist).
Soweit ich weiß, unterstützt das nicht. Am ehesten ist es wahrscheinlich, die Abschlussrichtlinie auf ** ClosestToNextInstanceHour ** zu setzen. Auf diese Weise, wenn Sie zwei Instanzen einen mit 5 Minuten vor der nächsten Stunde haben und die anderen 55, würde ersterer getötet werden. Referenz: [Anpassen der Terminierungsrichtlinie] (http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/AutoScalingBehavior.InstanceTermination.html#custom-termination-policy) –
Weitere Informationen hier http://shlomoswidler.com /2011/02/play-chicken-with-spot-instances.html – Daniel777