Ich habe eine einfache Webanwendung, die auf einer großen Instanz mit EC2 bereitgestellt wird. Ich möchte jetzt den neuesten Code auf diesem Server bereitstellen, aber ich möchte dies auf eine Weise tun, die Ausfallzeiten minimiert und für den Endbenutzer so reibungslos wie möglich ist. Hier ist mein Plan:
- Starten Sie eine weitere große Instanz
- Installieren Sie alle Softwareschichten auf dieser Instanz
- Stellen Sie ein EBS-Laufwerk wieder her und hängen Sie es an die Instanz an
- Stellen Sie unseren neuesten produktionsbereiten Code auf der neuen Instanz bereit
- Führen Sie alle Tests aus (einschließlich manueller Tests der Anwendung).
- (Wenn die Tests bestanden wurden) Setzen Sie auf der Live-Site einen Hinweis "Site Under Maintenance".
- Sichern Sie die EBS-Instanz auf der Live-Site
- Trennen Sie die EBS-Instanz vom neuen Server und ersetzen Sie sie durch die neueste Sicherung
- Verwenden Sie die ec2-Associate-Adresse, um die IP-Adresse auf die neue Instanz zu verschieben
- Lehnen Sie sich zurück und warten Sie, bis der Datenverkehr durch die neue Instanz fließt
- Beenden Sie die alte Instanz
Scheint dies eine gute Strategie zu sein? Gibt es Tutorials oder Bücher, die dieses Thema behandeln könnten? Ich habe bereits Cloud Application Architectures von George Reese gelesen, ein ausgezeichnetes Buch, das jedoch nicht die Bereitstellung abdeckt. Außerdem weiß ich, dass es Tools wie RightScale oder enStratus gibt, die ich verwenden kann, wenn ich mehr als eine Instanz verwende.
amazon-ec2
deployment
jensendarren
quelle
quelle
Antworten:
Dies scheint ein guter Gesamtansatz zu sein. Sie können Schritt 2 ausschneiden und so die Startzeit verkürzen, indem Sie ein benutzerdefiniertes AMI erstellen, das alle erforderlichen Softwareschichten enthält. Trotzdem würde ich beim Start immer noch alle Pakete aktualisieren, um sicherzustellen, dass Sie die neuesten Sicherheitsupdates erhalten.
Möglicherweise möchten Sie auch über die Verwendung einer EBS-gestützten Instanz nachdenken. Auf diese Weise können Sie das Startvolume, den Software-Stack und Ihre Anwendung auf EBS verwenden, wodurch einige der oben genannten Schritte entfallen.
quelle
OK, das wurde vor einiger Zeit gefragt, aber ich werde mich trotzdem mit meinen 2 Cent einschalten. Ich denke, Sie verpassen die Vorteile von Cloud Computing.
Zunächst sollten Sie Ihren Anwendungscode und Ihre persistenten Daten auf zwei verschiedenen virtuellen Maschinen trennen. Dies kostet Sie ein wenig Kommunikationslatenz zwischen VMs, sollte jedoch Ihre Verwaltung erheblich vereinfachen. Denken Sie daran, dass 2 kleine VMs anstelle von 1 großen VM nicht teurer sind. Wählen Sie daher die Anzahl der Hosts, die Ihren Anforderungen am besten entspricht.
Wenn möglich, möchten Sie, dass Ihre Anwendungsserver in dem Sinne "zustandslos" sind, dass sie keine persistenten Daten enthalten sollten, und Sie sollten in der Lage sein, eine neue Instanz mit einem Minimum an manueller Arbeit zu erzeugen.
Zweitens sollten Sie überlegen, ob einige der von Amazon verwalteten Dienste wie SimpleDB oder Relational Database Service (gehostetes MySQL) gut zu Ihrem dauerhaften Datenspeicher passen.
Der ideale Fluss sieht ungefähr so aus:
quelle