Rechenbeispiel für Spot-Kapazitäten Kühl kalkuliert: EC2-Spot-Instanzen und -Flotten auf Amazon Web Services

Autor / Redakteur: Michael Matzer / Florian Karlstetter |

Spot Instances von Amazon Elastic Compute Cloud (EC2) liefern dem AWS-Cloud-Nutzer die kostengünstigste Variante, um Rechenkapazität zu nutzen. Sogenannte „Spot-Flotten“ sorgen automatisch dafür, dass die gebuchte Rechenkapazität zum vereinbarten Preis am gewünschten Standort bereitsteht. Entscheidend für die Höhe des Einsparpotentials bei sehr hoher Verfügbarkeit ist die optimale Konfiguration der Spot-Flotte.

Anbieter zum Thema

EC2-Spot-Instances von AWS als kostengünstige Alternative zu klassischen On-Demand-Instanzen.
EC2-Spot-Instances von AWS als kostengünstige Alternative zu klassischen On-Demand-Instanzen.
(Bild: gemeinfrei (stevepb / pixabay) / Pixabay )

Es gibt einen ausgefeilten Spotmarkt für ungenutzte EC2-Kapazitäten und andere Amazon-Services. Bis 2017 musste man solche Kapazitäten ersteigern, doch dies gehört seit November 2017 der Vergangenheit an (siehe Abbildung 7). Spot Instances von EC2 sind mittlerweile in 18 Regionen und 51 Availability Zones verfügbar, wo sie Hunderte von Optionen für die Instance-Nutzung bieten. Wie sich beim Durchblättern der EC2-Seiten ergibt, existieren zahlreiche Helferlein und Tabellen, die AWS dem Kunden frei Haus liefert. Angesichts dieser Starthilfe soll EC2 als Beispiel für die Berechnung solcher Spot-Kapazitäten dienen.

Bildergalerie
Bildergalerie mit 9 Bildern

Free Tier: die kostenlose Grundlage

Zunächst einmal kann das kostenlose Kontingent von Amazon EC2 genutzt werden, um den monatlichen Dauerbetrieb zu testen. Dies erlauben die Linux- und Windows-Server-t2.micro-Instances mit 750 kostenfreien Stunden (1 GB RAM und 32-Bit- und 64-Bit-Plattformunterstützung). Frei Haus kommt auch der Elastic Load Balancer, aufgeteilt zwischen Classic und Application Load Balancer, 15 GB Datenverarbeitung für Classic Load Balancer und 15 LCUs für Application Load Balancer. Ebenso unentbehrlich sind die 30 GB AWS Elastic Block Storage plus 2 Mio. E/As und 1 GB Snapshot-Speicher. Bei EBS gilt es auf die Label „SSD“ und „Magnetisch“ (= Festplatte) zu achten. Die 2 Mio. E/As beziehen sich auf „Magnetisch“. Zu guter Letzt profitieren neue Kunden von 500 MB/Monat Amazon Elastic Container Registry-Speicher.

EC2-Spot-Instances

Es gibt vier Möglichkeiten, EC2-Instanzen zu buchen: On-Demand, Reserved (RI), Dedicated Hosts und Spot. Von Interesse sind hier nur Spot Instances. Amazon EC2 Spot-Instances ermöglichen es, für EC2-Workloads skalierbare Reserve-Rechenkapazitäten zu buchen. EC2-Workloads sind beispielsweise: Big Data und Analysen, auf Containern ausgeführte Workloads, CI/CD und Tests, Web Services, High Performance Computing (HPC) und Bild- und Medien-Rendering.

Spot-Instances können mit zwei Minuten Benachrichtigungsvorlauf durch EC2 unterbrochen werden, wenn EC2 die Kapazität zurück braucht. Da Spot-Instanzen, verglichen mit On-Demand-Preisen, häufig zu einem niedrigeren Preis verfügbar sind, können Nutzer die Ausführungskosten ihrer Anwendungen reduzieren, Rechenkapazität und Durchsatz ihrer Anwendung für das gleiche Budget steigern und neue Arten von Cloud Computing-Anwendungen aktivieren. Mit Spot-Instanzen können sie die Betriebskosten im Vergleich zu On-Demand-Instances um bis zu 90 Prozent senken. Weitere Informationen über den AWS Spot Market findet man hier.

Spot-Instances können Nutzer über die Spot-Verwaltungskonsole, das CLI (Command Line Interface), die API oder dieselbe Schnittstelle anfordern, die zum Starten von On-Demand-Instances verwendet wird, indem sie einfach auswählen, dass sie „Spot“ verwenden möchten. Diese Anforderung wird gewährt, falls die notwendigen Kapazitäten vorhanden sind.

Ebenso wie bei allen anderen Buchungs-Optionen wählen Nutzer für ihre Spot-Instance eine geographische Region aus, sowie eine Startvorlage mit einem vorab konfigurierten oder benutzerdefinierten Amazon Machine Image (AMI), konfigurieren Sicherheits-Optionen und Netzwerkzugriff sowie einen von mehreren Instanz-Typen aus. Wahlweise können auch statische IP-Endpunkte und dauerhafter Blockspeicher (EBS, s.o.) konfiguriert werden.

Spot-Preise

Für die Dauer der Ausführung der Instances zahlen Nutzer bei Spot-Instances den bei der Anforderung angegebenen maximalen Stundensatz. Der Stundensatz verändert sich dynamisch und Kunden zahlen maximal den On-Demand-Stundensatz. Die Spot-Instance-Preise werden von Amazon EC2 festgelegt und ändern sich schrittweise entsprechend der langfristigen Trends beim Angebot von und der Nachfrage nach Spot-Instance-Kapazitäten. Die durchschnittliche Häufigkeit von Unterbrechungen solcher Spot-Instanzen betrug in den letzten 30 Tagen der Messung Anfang April 2019 unter fünf Prozent. Amazon: „Die Unterbrechungsrate ist die Rate, mit der Spot im letzten Monat Kapazität zurückgefordert hat. Die Angabe erfolgt in Bereichen: <5 %, 5-10 %, 10-15 %, 15-20 % und >20 %.“

Eine Tabelle gibt die Spot-Instance-Preise für die einzelnen Regionen und die Instance-Typen an (die Aktualisierung erfolgt alle 2 Minuten). Schlauköpfe versuchen herauszufinden, zu welchem Zeitpunkt die Spot-Preise regelmäßig am günstigsten sind. Das Modell gilt erst seit November 2017. Eine Versteigerung findet also im herkömmlichen Sinne nicht statt. Aber: Mithilfe des Spot Instance Bid Advisor können Nutzer die aktuellen Spot-Preise mit den On-Demand-Standardpreisen vergleichen.

Der maximale Standardpreis ist stets der Preis für eine On-Demand-Instanz. Man kann indes fortfahren, indem man einen maximalen Spot-Preis in der Höhe des Zehnfachen des On-Demand-Preises festlegt (falls dies sinnvoll erscheint). Hat man bislang Anwendungen auf Spot-Instanzen laufen lassen, so bedeutet das neue Maximum, dass man dies weiterhin tun kann, sofern man die Optionen RequestSpotInstances oder RequestSpotFleet nutzt. Das seit Ende 2017 geltende Spot-Preismodell ist abwärts kompatibel, so dass der Nutzer an seinen bisherigen Anwendungen keine Änderungen vornehmen muss.

Spot-Instances können auch für eine vorab definierte Dauer – in Stundenschritten bis zu einer Laufzeit von sechs Stunden – mit einem Rabatt von 30 bis 50 Prozent im Vergleich zum On-Demand-Preis ausgeführt werden. Weitere Informationen zur Preisgestaltung finden Nutzer auf Seiten mit der AWS-Preisübersicht und auf der Seite „Amazon EC2-Preise“.

Der Spot-Instance-Berater hilft, den Pool mit der geringsten Wahrscheinlichkeit einer Unterbrechung (!) zu ermitteln, und gibt die Einsparungen aus, die Nutzer mit On-Demand-Tarifen durch den Wechsel zu Spot-Instanzen erzielen können. Nutzer sollten vorher unbedingt die Unterbrechungstoleranz ihrer Anwendung und ihre Kosteneinsparungsziele gewichten, wenn sie eine Spot-Instance auswählen. Je seltener die Anwendungen unterbrochen werden, desto länger laufen wahrscheinlich auch die Spot-Instances.

Bildergalerie
Bildergalerie mit 9 Bildern

Rechenbeispiel für ein Spot-Kontingent

Indem man den o.a. Instance Advisor nutzt, gelangt man zügig zu einem Kostenbeispiel, das einen ersten Eindruck von den Einsparmöglichkeiten vermittelt, die man im Vergleich zu On-Demand-Preisen erzielen kann. Es gibt je nach Anforderung über 100 Instance-Typen, aber es ist relativ sicher, mit dem Basisbedarf anzufangen:

  • Region: Frankfurt/M
  • Betriebssystem: Linux/Unix (oder Windows)
  • Instance-Typ-Filter nach vCPU: 8 (Minimum: 1, Maximum: 64)
  • Arbeitsspeicher in GB: 16 (Minimum: 0, Maximum: 244)
  • [Wählen Sie] Instance-Typen unterstützt von EMR: ja/nein? Da diese Option nur für ein Cluster-Netzwerk mit Hadoop auf Basis von Amazon Elastic MapReduce nötig ist, sagen wir erstmal: nein.

AWS berechnet die nötigen Instance-Typen für die Anforderung automatisch, wirft aber keine Preise aus, sondern nur das Einsparpotential gegenüber den On-Demand-Option. „Die Einsparungen im Vergleich zu On-Demand werden für die vergangenen 30 Tage berechnet. Sie können zwischen Availability Zones variieren", weist die Homepage hin. Um den Endpreis zu erhalten, müsste der Nutzer den Preis jedes einzelnen Instance-Typs heraussuchen und mit der angeforderten Kapazität in seiner Tabelle multiplizieren. Um die Einsparungsrate zu kalkulieren, müsste er die gleiche Prozedur für On-Demand-Preise wiederholen und die zwei Resultate vergleichen.

Weitere Beispiele für die Nutzung der Preisentwicklung für Spot-Instances zum Entwickeln preisgesteuerter Anwendungen finden Nutzer unter "aws-spot-labs" auf GitHub. Obwohl die Tabelle etwas komplex aussieht, enthält sie doch sehr hilfreiche Beispiele, Vorlagen und Demos für Spot-Flotten bereit, die man sich als Experte mal ansehen sollte.

Funktionsweise der Spot-Flotten

Amazon empfiehlt die Nutzung von Spot-Flotten, mit denen Nutzer die Verwaltung und das Verhalten von Spot-Instances automatisieren können. Eine Spot-Flotte ist eine Menge oder Flotte von Spot Instances, optional auch von On-Demand Instances. Zwecks Automation sagt der Nutzer der Spot-Flotte lediglich, wie viel Kapazität benötigt wird, und die Flotte kümmert sich um den Rest.

Die Flotte versucht, eine ausreichende Anzahl von Spot Instances und On-Demand Instances zu starten, um die Kapazitäts-Zielvorgabe zu erfüllen. Diese Anforderung ist erfüllt, sobald der gewählte Spot-Preis den aktuellen Spot-Preis übersteigt und es noch freie Kapazität gibt. Darüber hinaus versucht die Flotte, ihre Zielkapazität beizubehalten, sollten die gebuchten Spot Instances unterbrochen werden. Für letzteres können Spot-Preisänderungen und mangelnde Kapazität verantwortlich sein.

Ein „Spot Instance Pool“ ist eine Menge ungenutzter EC2-Instanzen desselben Typs, desselben Betriebssystems, der gleichen Availability Zone und der Netzwerkplattform (EC2-Classic oder EC2-VPC). Mithilfe der RequestSpotFleet-API lassen sich Tausende von Spot-Instancen starten und so Ressourcen automatisch diversifizieren. Beantragt der Nutzer eine Spot-Flotte, können die Details von der Pool-Definition abweichen. Aber die Spot-Flotte wählt primär diejenigen Spot Instance Pools aus, die zur Erfüllung der Anforderung verwendet werden, gemäß den Startvorgaben und in der Konfiguration der Spot-Flottenanforderung. Die Spot Instances kommen dann aus den selektierten Pools.

Spot Instances und Spot Fleets lassen sich so einrichten, dass sie automatisch auf eine Unterbrechung reagieren: Sie halten an oder „überwintern“ statt beendet zu werden, wenn die Kapazität nicht mehr zur Verfügung steht.

Rechenbeispiel für eine Spot-Flotte

Wie dieses Leistungsmerkmal funktioniert, beschreibt ein gesondertes AWS-Dokument im User Guide sowie ein Blogbeitrag. In diesem detaillierten und anschaulichen Beitrag setzt der Autor Jeff Barr, der Chief Evangelist für AWS, eine EC2-Spot-Flotte für die Workload einer Genanalyse auf. Das Gleiche gelte für Risikoanalyse, Bild-Rendering oder Logdatei-Auswertung. Langer Rede kurzer Sinn: Jeff Barr wählt 2880 vCPUs, wobei 960 vCPUs von On-Demand-Instanzen (als zuverlässige Grundlage) und 1920 vCPUs von Spot-Instanzen bereitgestellt werden.

Der On-Demand-Preis pro vCPU ist laut Barr für m5.24xlarge niedriger als der On-Demand-Preis pro vCPU für m4.16large. Deshalb wird die EC2-Flotte zehn m5.24xlarge-Instanzen starten, um die grundlegende Anforderung von 960 vCPUs erfüllen zu können. Je nach aktueller Spot-Preisgestaltung (pro vCPU) wählt die EC2-Spot-Flotte 30 m4.16xlarge-Instanzen oder 20 m5.24xlarge-Instanzen starten, um die angeforderten 1920 vCPUs so oder so bereitzustellen. Dann kann die Workload gestartet werden.

Wie schon im Rechenbeispiel 1 angedeutet, können Spot-Instanzen nicht nur mit EC2 allein genutzt werden, sondern auch mit anderen AWS-Services, die auf EC2 basieren.

(ID:45890171)