2016-02-09 5 views
7

mit Ansible Ich erstelle ein AMI einer Ubuntu-Instanz, dann dieses AMI verwenden, um eine Launch-Konfiguration zu erstellen und dann zu aktualisieren und automatische Skalierung Gruppe, gibt es Verknüpfungen, die ich ASG und AMI beschleunigen kann Schritte, nehmen Sie 10 Minuten +Beschleunigen AMI und ASG Creation

Antwort

3

Verwenden Sie ein EBS-gesichertes AMI anstelle eines Instanzspeicher-unterstützten AMI. Vom AWS docs:

  Amazon EBS-Backed    Amazon Instance Store-Backed 
Boot time Usually less than 1 minute Usually less than 5 minutes 

- http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ComponentsAMIs.html#storage-for-the-root-device

+0

OK, ich gebe das einen Versuch, gibt es bestimmte Instanzgröße, die Dinge beschleunigen würde? – James

+0

Wenn ich mir die Liste Cloud Bilder - http://cloud-images.ubuntu.com/locator/ec2/ \t hvm: ebs \t \t hvm: ebs-EA1 hvm: ebs-ssd – James

+0

I don‘ t denke, die Größe der Instanz ist sehr wichtig. Ich glaube, dass die Geschwindigkeitsverstärkung von dem Unterschied zwischen der Beschaffung eines Betriebssystemabbilds von einem EBS-Volume und dem Herunterladen eines vollständigen Betriebssystemabbilds von S3 herrührt. – Asaph

9

fragte ich eine ähnliche Frage über ein Ticket AWS Support, hier gab es Antwort:

Der Hauptzeitraubender Prozess, wenn Starten einer neuen EC2-Instanz ist der Startvorgang des Betriebssystems innerhalb der Instanz: mehr oder weniger Sicherheitsgruppen/Netzwerk-ACLs, unterschiedliche Anzahl von SSH-Schlüsselpaaren und Rollen, die der Instanz zugeordnet sind, sollten in keine messbare Auswirkung auf die Zeit haben, die für den Start benötigt wird. Die meiste Zeit dauert es starten eine Instanz wird vom Betriebssystem selbst verbraucht.

, die mit im Kopf, lassen Sie mich einige der wichtigsten Punkte gehen, dass könnte die meiste Zeit verbrauchen, wenn eine Instanz Stiefel - für die alle Punkte unter ich ausschließlich auf Linux von einem EC2 Punkt Ansicht konzentrieren :

  • lokales Dateisystem Halter: wenn Ihre Instanz eine große Menge an Dateisystemen montieren muss, wird dies eine wenig Zeit, um das Boot Prozess hinzuzufügen. Abhängig von den verwendeten Dateisystemtypen müssen Sie möglicherweise regelmäßig eine bestimmte Anzahl von Tagen überprüfen - zum Beispiel unter Linux müssen Sie möglicherweise alle 90 Tage fsck auf einem ext4 - Dateisystem ausführen (dieser Zeitraum kann sich je nach dem ändern) Ihre Einstellungen), und das Betriebssystem löst diese Überprüfung automatisch aus, wenn das Dateisystem unter booten, wenn es feststellt, dass der Zeitraum überschritten wurde. Eine Strategie für kann dies verhindern, bevor Sie die AMI erstellen, die Sie verwenden werden, um Ihre neuen Instanzen zu starten, so dass alle von diesem AMI gestarteten Instanzen vor kurzem geprüft werden und Sie nicht laufen Unerwarteter fsck-Ausführungen, wenn Sie Ihre Instanzen zum ersten Mal starten. Abhängig von der Art des Dateisystems, das Sie verwenden, kann es möglich sein, diese regelmäßigen Prüfungen insgesamt zu deaktivieren, , aber ich würde es nicht empfehlen, da sie notwendig sind, um die Integrität des Dateisystemsim Laufe der Zeit zu erhalten.

  • Remote-Dateisystem Halter: wenn Ihre Instanz jedes Remote-Dateisystem mounten muss (zum Beispiel ein EFS Aktie oder jede herkömmliche NFS-Freigabe) kann Boot-Prozess abhängig von der Netzwerkkonnektivität an das Server-Sharing verzögert Dieses Remote-Dateisystem. Im schlimmsten Fall Szenario, wenn der Server, der das Dateisystem freigegeben ist, offline ist, wird Ihr Boot Prozess unterbrochen, bis diese Verbindung abläuft und fehlschlägt. Wenn Sie beim Starten von Ihrer Instanzen standardmäßig Remote-Dateisysteme migrieren, vergewissern Sie sich, dass die freigegebenen Server vor dem Starten der Instanzen verfügbar sind.

  • Regelmäßige OS-Initialisierungsskripte: Der größte Teil der Zeit, die beim Startvorgang benötigt wird, wird vom Betriebssystemdienst übernommen. Es gibt zwei Arten von Modellen dafür in Linux: die traditionelle SystemV init (die Dienste in einer seriellen Weise, eine nach der anderen startet), und die relativ neue Systemd (die starten kann Dienste parallel und damit zu verringern die Boot-Zeit in einigen Umständen). Welche davon Sie verwenden, hängt von der Linux-Distribution ab, die Sie in Ihren Instanzen ausführen. Wenn Sie zum Beispiel einen DB-Server starten müssen, der jedes Mal, wenn Sie Ihre Instanz booten, eine lange Zeit benötigen, kann es sinnvoll sein, systemd zu berücksichtigen, da für den Rest der nicht verwandten Dienste parallel gestartet werden kann , wie solange sie diesen DB-Server nicht als Voraussetzung haben.

  • Benutzerdaten und Cloud-Init-Skripte: Diese werden ausgeführt, nachdem die regulären OS-Init-Skripte beendet sind. Wie bei den vorherigen Elementen möchten Sie möglicherweise überprüfen, ob diese benutzerdefinierten Skripts optimiert sind, sodass sie die geringste Zeit benötigen; es ist empfehlenswert Skripte all benutzerdefinierten Benutzerdaten messen ihre Zeit individuell zu testen, bevor sie auf eine neue Instanz Start Hinzufügen, so dass Sie eine bessere Vorstellung von den Auswirkungen in der Gesamtzeit der Startinstanz haben können. Wenn Ihre Skripte Dateien von außerhalb der Instanz abrufen (wenn Sie etwas aus einem S3-Bucket herunterladen, führen Sie ein automatisches Update der installierten Pakete usw.), dieselben Überlegungen, die ich von den "Remote-Dateisystem Mounts" erwähnt habe Element oben genannten gelten - stellen Sie sicher, es gibt keine Netzwerkprobleme, die könnte verlangsamen oder verhindern diese Verbindung, da dies mehr Zeit für den gesamten Startvorgang Ihrer Instanz hinzufügen würde.

  • Instance-Typ: Der Instance-Typ beeinflusst die Zeit, die das Betriebssystem benötigt, um den Startvorgang zu beenden. Unter den gleichen Umständen wird eine t2.large Instanz schneller booten als eine t2.nano, weil sie mehr RAM, vCPUs und eine höhere Menge an CPU-Credits hat - die es dem Betriebssystem ermöglichen, den Boot-Vorgang schneller auszuführen . Wenn Sie im Rahmen des Instance-Starts große Datenmengen abrufen müssen, können Sie auch den erweiterten Netzwerkmodus und die EBS-optimierten -Instanzen verwenden, um sicherzustellen, dass Sie die beste verfügbare Bandbreite für Ihre -Anforderungen haben. Siehe die Links am Ende dieser Nachricht für weitere Details über dies.

  • EBS Volume-Typ: Wie beim Instanztyp ist auch die Leistung Ihrer EBS-Volumes ein Faktor, der sich auf die Gesamtzeit der Instanz-Startzeiten auswirken kann. Wenn Ihre Instanz während des Startvorgangs große Datenmengen von von einem sc1-Volume lesen muss (ein HDD-Laufwerk mit niedriger Leistung für Daten, auf die selten zugegriffen wird), ist der Startvorgang langsamer als wenn die Instanz dieselben Daten liest von einem PIOPS-Volumen mit einer viel höheren Leistung - wenn Ihr Gebrauch Fall ein Szenario enthält, in dem Sie davon betroffen sind, können Sie verschiedene Volumentypen prüfen, um die eine zu wählen, die besser Ihren Notwendigkeiten entspricht. Ebenso hat der Typ des Root-Volumes Ihrer Instanz auch Auswirkungen auf die Boot-Leistung, da Sie in allen Fällen Informationen von ihm lesen müssen.In den meisten Fällen reichen die Standardvolumes "General purpose SSD" a.k.a. gp2 EBS für die Root-Instanzen .

Letztlich ist die Zeit, um eine neue Instanz zu starten genommen wird bestimmt werden durch Benchmarks für Ihren speziellen Anwendungsfall läuft; Die generellen Überlegungen, die ich oben erwähnt habe, können Ihnen helfen, diese Zeit zu reduzieren, aber , um festzustellen, welche Einstellungen für Ihre Umgebung am besten sind müssen Sie testen und Feinabstimmung jeden Parameters, bis Sie einen Punkt wo die Startzeit erreichen passt zu Ihren Bedürfnissen.

Ich füge ein paar Links am Ende dieser Antwort mit mehr Details über die Elemente, die ich in dieser Antwort erwähnt habe.

Ich hoffe, dass diese Informationen für Sie nützlich waren. Bitte lassen Sie mich wissen, wenn Sie Fragen haben.

Danke,

Weiterführende Links: - EC2 Instance-Typen: https://aws.amazon.com/ec2/instance-types/ - EBS Volume-Typen: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html - EBS optimiert Instanzen: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSOptimized.html - Performance-Tipps für Volumina EBS: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSPerformance.html - Enhancing Netzwerkmodus auf EC2 Linux-Instanzen: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/enhanced-networking.html