Beschleunigung des Starts von Amazon EC2-Windows-Instanzen

16

Ich arbeite an einem Webdienst, der auf EC2 gehostet wird und abhängig von der Auslastung eine unterschiedliche Anzahl von Instanzen ausführen muss. Wir haben den Basisdienst eingerichtet und laufen, aber eines der Probleme, mit denen wir zu kämpfen haben, ist die Zeit, die für die Bereitstellung und den Start einer Windows-Instanz erforderlich ist (wir verwenden einige Drittanbieter-Tools, die nur unter Windows ausgeführt werden). Ich habe gesehen, dass dies zwischen 10 Minuten und erstaunlichen 45 Minuten dauert.

Hat jemand Tipps, wie der Start einer EC2-Instanz beschleunigt werden kann? Da die AMIs für Windows-Server im Vergleich zu Linux-AMIs beispielsweise groß sind, frage ich mich, ob möglicherweise sichergestellt werden soll, dass sich der S3-Bucket mit dem AMI in derselben Zone befindet, in der die Instanz gestartet wird, was vermutlich der Fall ist Beschleunigen Sie die Bereitstellung der neuen Instanz.

gareth_bowles
quelle

Antworten:

8

Ich habe letzte Nacht 3 Instanzen eines Vanilla Windows 2003-Servers installiert. Die ersten beiden dauerten ungefähr 45 Minuten, die dritte, ungefähr eine Stunde später, dauerte volle 2 Stunden, bis sie fertig war!

Diese hatten überhaupt nichts in sich, ohne S3-Nutzung. Ich bezweifle, dass es einen Weg gibt, diesen grundlegenden Schritt zu beschleunigen, abgesehen davon, dass wir darauf warten, dass Amazon im Laufe der Zeit die Bereitstellungsgeschwindigkeit verbessert. Ich würde also zu dem Schluss kommen, dass mit einer gewissen Verzögerung zu rechnen ist und Kurts Rat gut ist, nämlich 1 oder 2 bereits in Reserve zu halten.

Sie können auch ein paar Mal und zu einem bestimmten Zeitpunkt eine neue Instanz Ihres AMI-Typs erstellen. Probieren Sie es dann ein paar Mal mit Ihrem S3-Speicher aus und sehen Sie, wie viel Zeit das mit sich bringt. Ich gehe davon aus, dass die Verfügbarkeitszone zwischen dem Image und S3 übereinstimmen sollte, obwohl ich nicht weiß, wie viel Zeitunterschied das machen wird.

Nachdem Sie die maximale Zeit für die Bereitstellung festgelegt haben, müssen Sie der Auslastung / Nutzung so viele Minuten voraus sein.

Scott Forsyth - MVP
quelle
Danke für die Vorschläge - 2 Stunden sind ziemlich extrem. Seit ich diese Frage gestellt habe, ist mir aufgefallen, dass EC2 manchmal Windows-Instanzen unmittelbar nach dem Start neu startet. Ich weiß nicht, warum dies der Fall ist (ich habe kein Muster gefunden, warum einige Instanzen neu gestartet werden, während andere dies nicht tun), aber es kann die Startzeit um weitere 5 oder 10 Minuten verlängern.
gareth_bowles
2
@gareth - das liegt daran, dass der Computer im Netzwerk denselben Namen wie ein anderer Computer hat (dh, es ist ein Bild). Der EC2ConfigService erkennt dies, weist einen neuen Namen zu und startet ihn neu. Du kannst das mit der installierten ec2config Konfiguration util deaktivieren.
Kieren Johnstone
20

Die Amazon Windows-Instanzen werden beim Start neu gestartet, da die Standardkonfiguration des Windows-Dienstes "EC2 Config" darin besteht, Ihren Host in den internen DNS-Namen der Instanz umzubenennen. Das Umbenennen von Hosts erfordert einen Neustart unter Windows. Wenn Sie den internen DNS-Namen Ihrer Instanz nicht verwenden müssen, können Sie die Funktion SetComputerName deaktivieren. Windows-Instanzen haben außerdem den Vorteil, dass Sie die Startlaufwerke, auf denen Sie möglicherweise Ihre Konfiguration bereits gebündelt haben, nicht erneut initialisieren müssen, um beim Starten der Instanz etwas mehr Zeit zu sparen. All dies ist über den EC2 Windows-Konfigurationsdienst möglich.

Windows-Konfigurationsdienst: http://docs.amazonwebservices.com/AWSEC2/latest/UserGuide/appendix-windows-config.html

Bei kleinen Windows-Instanzen dauert der Start normalerweise 15 bis 18 Minuten (größere Instanzen sind schneller). Abhängig von Ihren Anforderungen können Sie möglicherweise Ihre gesamte Software im AMI bündeln und alles in diesem Zeitraum starten und ausführen lassen. Ich verstehe die Vorbehalte, nicht alles in einem AMI zu bündeln, aber es könnte die Verbesserung der Startzeit wert sein, Produktions-AMIs mit allem, was darin gebündelt ist, zu haben. Halten Sie die Erstellungsskripte getrennt, wenn Sie dies in Ihren Erstellungsumgebungen wünschen.

Außerdem hatte Amazon jetzt EBS-Root-Volumes im Gegensatz zu Instance-Store-Root-Volumes veröffentlicht. Kleine Windows-Images, die auf einem EBS-Volume ausgeführt werden, werden nach fast 20 Minuten in fast 5 Minuten hochgefahren. Außerdem müssen Sie nicht beenden - Sie können sie anhalten / starten -, je nach Einrichtung kann dies in einigen Startskripten einige Minuten länger dauern.

Das grundlegende Anpassen Ihres Windows EC2-Konfigurationsdienstes, Ihres AMI und möglicherweise die Verwendung eines EBS-Startvolumes sollte die Startzeiten auf fast 5 Minuten reduzieren. Sie können den Sysprep, der beim Start einer ec2-Instanz ausgeführt wird, abhängig von Ihrer App vermeiden, insbesondere für Entwicklungszwecke. Ein nicht syspreppiertes m1.large-Image, das eine Änderung des Hostnamens beim Start vermeidet, kann in ungefähr 2 Minuten gestartet werden, was überhaupt nicht schlecht ist.

Soweit ich weiß, ist dies derzeit das Beste, was Sie mit Windows unter Amazon EC2 tun können, aber das ist wirklich nicht schlecht. Wenn Sie in der Lage sind, basierend auf durchschnittlichen Nutzungsmustern in der Nähe von 10 Minuten in die Zukunft zu prognostizieren, sollten Sie in der Lage sein, zusätzliche Instanzen hochzufahren und die zusätzliche Last zu bewältigen.

Ameer Deen
quelle
Das interne Umbenennen des Hosts ist ein toller Tipp - danke! Ich möchte EBS-Root-Volumes auch ausprobieren, nicht zuletzt, weil es Backups viel einfacher macht. Ich denke, ich muss eine durchschnittliche Startzeit von 10 Minuten prognostizieren. Das ist an sich kein Problem, aber die hohe Variabilität der Startzeiten ist immer noch ein echtes Problem.
gareth_bowles
Dies sollte in den AWS-Dokumenten angegeben werden.
Peter Mounce
4

Haben Sie ein minimales System, das Ihnen dabei helfen könnte, so viel wie möglich in EBS zu behalten? Oder vielleicht einen Apache-Ansatz wählen und einen oder zwei in Reserve laufen lassen?

Kurt
quelle
4

Wir sind auf genau dieses Problem gestoßen, aber auf sehr ernste Weise - unser neues Startup erweitert Amazon EC2 in eine Virtual Lab-Umgebung (Mehrbenutzer, Richtlinien, Freigabe usw.) und musste daher die Startzeit von beschleunigen Windows-Maschinen. Unsere größte Entscheidung war, nur EBS-basierte Volumes in unserer Anwendung zu unterstützen, da dies die einzigen sind, die in 5-10 Minuten gestartet werden können. In unseren Tests haben wir festgestellt, dass die Startzeiten von Instancespeichern sehr unterschiedlich sind und manchmal sehr viel Zeit in Anspruch nehmen, was sie für uns unbrauchbar macht.

Simon @ LabSlice Virtual Lab Management auf EC2

Simon bei LabSlice-com
quelle