EC2 Auto-Scaling mit Spot- und On-Demand-Instanzen?

11

Ich möchte die Kosten unserer automatisch skalierenden EC2-Gruppen optimieren, indem sie Spot-Instanzen anstelle von On-Demand-Instanzen starten.

Was ich wirklich möchte, ist, dass einige Server als On-Demand-Instanzen in der Gruppe bleiben können, unabhängig davon, was mit dem Preismarkt für Spotinstanzen passiert. Dann möchte ich, dass alle zusätzlichen Server in der Gruppe, die über meinem konfigurierten Minimum liegen, Spot-Instanzen sind. Ich bin im Allgemeinen mit der Verzögerung beim Hinzufügen von Servern über Spot-Anfragen einverstanden.

Ich kann anscheinend keinen Weg finden, dies zu tun, und ich habe versucht, die AWS-Dokumentation zu durchsuchen. Es scheint, dass eine ASG entweder auf Abruf oder vor Ort sein kann, aber kein Hybrid.

Ich könnte möglicherweise manuell eine On-Demand-Instanz zum Elastic Load Balancer hinzufügen, der der Auto-Scaling-Gruppe zugewiesen ist, aber dann würde die Last dieses Servers nicht in die Auto-Scaling-Messungen und -Trigger einbezogen.

Ich nehme an, ich könnte einen lächerlich hohen Gebotspreis eingeben, um sicherzustellen, dass ich immer die Server bekomme, die ich brauche, aber dann schaue ich mir die Preisentwicklung an und sehe gelegentlich große Spitzen.

Die AWS-Dokumentation widerspricht sich selbst, da an einer Stelle angegeben wird, dass bei Eingabe eines Server-Minimums sichergestellt ist, dass diese Anzahl vorhanden ist. Aber wenn Sie über Spot-Instanzen lesen, gibt es keine Zusicherungen. Die Preisdifferenz für Spot ist überzeugend, daher möchte ich diese so weit wie möglich nutzen und gleichzeitig eine stets aktuelle Basis beibehalten. Ist das möglich?

Plattformen
quelle

Antworten:

1

Im Moment können Sie On-Demand- und Spot-Instanzen in einem einzelnen ASG mischen

Mit Amazon EC2 Auto Scaling können Sie jetzt Instanzen für Kaufoptionen, Verfügbarkeitszonen (AZ) und Instanzfamilien in einer einzigen Auto Scaling-Gruppe (ASG) bereitstellen und automatisch skalieren, um Skalierung, Leistung und Kosten zu optimieren. Jetzt können Sie Spot-Instanzen mit On-Demand und RIs in eine einzige ASG aufnehmen , um bis zu 90% Rechenaufwand zu sparen.

ALex_hha
quelle
Ja - danke, dass Sie diese Frage aktualisiert haben. Ich habe Ihre als neue kanonische Antwort darauf markiert.
Plattformen
15

Der oben diskutierte Ansatz wäre etwas chaotisch und nicht so flexibel. Der kanonischere Ansatz besteht darin, nur zwei ASGs zu erstellen (eine für Spot- und eine für On-Demand) und diese dann beide bei derselben ELB zu registrieren ( hier beschrieben ). Dies gibt Ihnen die Möglichkeit, jedes einzeln zu steuern, anstatt zu versuchen, mit LC-Swaps in einem einzigen ASG zu spielen.

Reich
quelle
7

Dieser hybride Auto-Scaling- Ansatz scheint leider nicht sofort verfügbar zu sein.

Möglicherweise können Sie diese Einschränkung jedoch wie folgt umgehen (ungetestet, nur ein Systemdesign, mit dem ich schon eine Weile jongliert habe):

Mögliche Problemumgehung

Wie unter Verwenden der automatischen Skalierung zum Starten von Spot-Instanzen beschrieben , ist das Spot-Preis-Gebot ein Parameter der verwendeten Startkonfiguration . Wie Sie bereits betont haben, ist keine Hybridstartkonfiguration verfügbar, sondern muss entweder bei Bedarf oder vor Ort sein. Dies bedeutet, dass für den Anwendungsfall zwei verschiedene Startkonfigurationen erforderlich sind.

Dies scheint nicht sofort zu helfen, da Sie einer Auto Scaling-Gruppe jeweils nur eine Startkonfiguration mit den folgenden (teilweise veralteten) Einschränkungen zuordnen können (siehe Startkonfiguration ):

Wenn Sie Ihrer Auto Scaling-Gruppe eine neue oder aktualisierte Startkonfiguration hinzufügen, werden alle neuen Instanzen mit den neuen Konfigurationsparametern gestartet. Bestehende Instanzen sind nicht betroffen . Wenn die automatische Skalierung verkleinert werden muss, werden zuerst Instanzen mit einer älteren Startkonfiguration beendet . [Hervorhebung von mir]

Die betonten Teile sind der Schlüssel aber mit dem ehemaligen der Forderung Deckung der On-Demand - Instanzen zu halten , nachdem sie von der jeweiligen Anfangs On-Demand - Startkonfiguration der zusätzlichen Punktstartkonfiguration zu ändern läuft, und diese nicht unbedingt der Fall sein mehr aufgrund Die kürzlich eingeführten Richtlinien zur Beendigung der automatischen Skalierung (zur Abwechslung gab es normalerweise keine Fanfare über einen begleitenden AWS-Blogbeitrag), dokumentiert in der Richtlinie zur Beendigung der automatischen Skalierung für Ihre automatische Skalierungsgruppe :

Bevor die automatische Skalierung eine zu beendende Instanz auswählt, wird zunächst die Verfügbarkeitszone identifiziert, die mehr Instanzen als die anderen von der Gruppe verwendeten Verfügbarkeitszonen enthält. Wenn alle Verfügbarkeitszonen dieselbe Anzahl von Instanzen haben, wird eine zufällige Verfügbarkeitszone identifiziert. Innerhalb der identifizierten Verfügbarkeitszone verwendet die automatische Skalierung die Beendigungsrichtlinie, um die Instanz für die Beendigung auszuwählen . [Hervorhebung von mir]

Wie in umrissener Wie Sie Ihre Kündigung Politik Works , können Sie nun festlegen , NewestInstance , wenn Sie die letzte Instanz gestartet wollen beendet werden , die vor kurzem ins Leben gerufen Spot - Instanzen eine der sein würde:

Die automatische Skalierung verwendet die Startzeit der Instanz, um die Instanz zu identifizieren, die zuletzt gestartet wurde.

Natürlich kann dies etwas mehr sein, z. B. können Sie entweder eine der Richtlinien als eigenständige Richtlinie angeben oder mehrere Richtlinien in einer geordneten Liste auflisten. Dieser Ansatz sollte jedoch sicherstellen, dass alle Instanzen in die Liste einbezogen werden automatische Skalierung von Messungen und Triggern ; Eine Einschränkung bleibt jedoch:

Vorbehalt

Wenn der Load Balancer eine der On-Demand-Instanzen aus einem anderen Grund beendet (z. B. weil sie an sich ungesund geworden ist), wird sie nicht automatisch durch eine On-Demand-Instanz ersetzt. Sie müssen dieses Ereignis also separat überwachen und berücksichtigen, z. B. indem Sie die On-Demand-Startkonfiguration vorübergehend erneut aktivieren.

Viel Glück!

Steffen Opel
quelle
2
Das macht Sinn - tolle Detektivarbeit. Es besteht immer noch ein Ausfallrisiko, aber anscheinend haben Sie mehrere neue Möglichkeiten entdeckt, um dieses Risiko zu verringern. Hoffentlich haben wir eines Tages ein einfaches Kontrollkästchen für ASGs: "Instanzen bei oder unter dem Serverminimum sind On-Demand-Instanzen." Vielen Dank!
Plattformen
1

Ich habe mich von den Antworten hier inspirieren lassen, um https://github.com/ashwanthkumar/matsya zu finden

Es hilft Ihnen dabei, Folgendes zu tun

  • Für Ihre Hadoop / Mesos / YARN-Clusteranforderungen benötigen Sie immer eine Flotte von Maschinen
  • Sie möchten mit Spot Geld sparen, aber auch auf OD zurückgreifen, da Sie die Rechenleistung benötigen, um Ihre SLA zu erfüllen
  • Wechseln Sie bei OD wieder zu Spot, um wieder Geld zu sparen.
Ashwanthkumar
quelle
1
Bitte beachten Sie unsere Richtlinien zur Eigenwerbung
HBruijn
Die Antwort wurde mit guten Absichten geteilt, dass es nützlich sein könnte. Wenn Sie es als Eigenwerbung finden, kann ich die Antwort löschen.
Ashwanthkumar
Wenn ich gedacht hätte, dass Ihre Antwort tatsächlich Spam ist, hätte ich sie bereits als solche markiert, sodass Sie Ihren Beitrag nicht löschen müssen. Der Link zur Produktwerbung ist vorbeugender, da eine solche Antwort zwar wertvoll sein kann, aber ein ausgewogenes Verhältnis besteht, das relativ neuen Benutzern wie Ihnen häufig nicht bewusst ist. Und als Moderator ziehe ich es vor, Sie jetzt zu unterrichten, bevor Sie irgendwelche
Grenzen
Macht Sinn. Vielen Dank für die Hinweise zur Politik.
Ashwanthkumar
1

Wenn Sie nur 1 ASG mit einer statischen Anzahl von On-Demand-Instanzen möchten, sollte Folgendes funktionieren:

  • Erstellen Sie eine Auto Scaling-Gruppe basierend auf der Spot Instance Launch-Konfiguration.

  • Unterbrechen Sie die automatische Skalierung in ASG

  • Fügen Sie ASG manuell On-Demand-Instanzen (statische Grundlast) hinzu und aktivieren Sie den Instanzschutz für diese Instanzen.

  • Setzen Sie die automatische Skalierung in ASG fort

  • Die Standardrichtlinie für die automatische Skalierung ignoriert jetzt die On-Demand-Instanzen (aus Schutzgründen) und beendet die gleiche Anzahl von Spot-Instanzen wie die On-Demand-Instanz, um die gewünschte Anzahl der Gruppe zu erreichen. Bei Scale-In- oder Out-Aktivitäten werden nur Spot-Instanzen gestartet oder beendet.

MaXimus
quelle