Wenn ich die Amazon EC2-Instanz herunterfahre und sie dann erneut starte, ist dann alles in Ordnung?


12

Ich habe eine Website, die auf einer Amazon EC2 Linux-basierten Instanz ausgeführt wird und einem regulären Domainnamen (x.com) zugeordnet ist. Diese Site kommuniziert mit einer Datenbank in einer zweiten EC2-Instanz.

Ich muss diese Instanz herunterfahren und die Rechenleistung dahinter erhöhen. Wenn ich das tue, wie lange dauert es, und wenn ich den Computer wieder hochfahre, wird meine Site dann wieder online geschaltet? Bleiben die IP-Adresse, die DNS-Informationen usw. erhalten, so dass der Domänenname weiterhin funktioniert und weiterhin mit der Datenbank gesprochen werden kann?

Zu Ihrer Information: Dies wird derzeit im AWS EC2-Infofenster für den Webserver angezeigt (die genauen IP-Adressen haben sich geringfügig geändert, aber Sie haben die Idee):

Public DNS: ec2-54-1-1-1.us-west-1.compute.amazonaws.com
Private DNS: ip-10-1-1-1.us-west-1.compute.internal
Private IPs: 10.1.1.1

Antworten:


13

Das Stoppen und Starten einer EBS-Boot-Instanz ähnelt bis auf wenige Ausnahmen einem einfachen Neustart der Instanz.

  1. Der Instanz wird eine neue interne IP-Adresse zugewiesen.

  2. Der Instanz wird eine neue öffentliche IP-Adresse zugewiesen.

  3. Befindet sich die Instanz nicht in einer VPC, wird die Zuordnung einer elastischen IP-Adresse zur Instanz aufgehoben.

  4. Alle Daten zur kurzlebigen Speicherung (häufig unter / mnt) gehen verloren

Es gibt auch einige Auswirkungen auf die Abrechnung und Verfügbarkeit, die ich in diesem Artikel beschrieben habe:

Neustart vs. Stopp / Start der Amazon EC2-Instanz
http://alestic.com/2011/09/ec2-reboot-stop-start

VPC-Instanzen haben ein etwas anderes Verhalten, einschließlich des Beibehaltens elastischer IP-Adressen durch Beenden / Starten.

Wenn Sie eine Instanz als Datenbankserver verwenden und eine Verbindung mit der internen IP-Adresse (kostengünstiger, schneller) herstellen möchten und die Datenbankclients nach einem Stopp / Start nicht neu konfigurieren müssen, können Sie sie zuweisen eine elastische IP-Adresse für die Instanz und verwenden Sie den externen elastischen IP-DNS-Namen. Dies wird in die aktuelle interne IP-Adresse aufgelöst, nachdem Sie die elastische IP-Adresse der neu gestarteten Instanz erneut zugeordnet haben, und Ihre Kunden werden dort weitermachen, wo sie aufgehört haben.

In diesem Artikel werde ich auf diesen Ansatz näher eingehen:

Verwenden von Elastic IP zum Identifizieren interner Instanzen in Amazon EC2
http://alestic.com/2009/06/ec2-elastic-ip-internal

Wie es sich anhört, als hätten Sie es erwartet, ist Stop / Start eine einfache Möglichkeit, die Hardware zu ändern, die Ihre Instanz mit Strom versorgt. Ich schrieb darüber zusammen mit einigen Anweisungen und Warnungen in diesem Artikel:

Verschieben einer EC2-Instanz in einen größeren (oder kleineren) Instanztyp
http://alestic.com/2011/02/ec2-change-type

Für Ihre spezielle Situation würde ich empfehlen, der Instanz eine elastische IP-Adresse zuzuweisen und Ihr DNS so zu ändern, dass es auf die elastische IP-Adresse verweist, wobei ein CNAME auf den externen DNS-Namen verweist. Sie können dies direkt nach dem Stopp / Start oder vor dem Start tun, um sicherzustellen, dass alles vor dem Stopp / Start funktioniert.


Ist das noch genau? Ich war heute Morgen gerade in einem Chat mit dem AWS-Support und sie sagten, dass die elastische IP nicht getrennt wird, wenn eine Instanz gestoppt wird. Außerdem habe ich noch nie gesehen, dass sich unsere internen IP-Adressen beim Stoppen und Starten einer Instanz geändert haben.
bshacklett

@bsacklett Diese Antwort war etwas veraltet. Ich habe es aktualisiert, um zu erklären, dass nur Nicht-VPC-Instanzen die elastische IP verlieren. Heutzutage sind die meisten Fälle tatsächlich VPC.
Eric Hammond

4

Sieht also so aus, als ob Sie Elastic IP nicht verwenden, wie ich anhand Ihrer Informationen sehen kann.

Ich glaube, Sie müssen CNAME im DNS verwenden, um auf diese Instanz zu verweisen. Wenn Sie ec2-54-1-1-1.us-west-1.compute.amazonaws.comIhren Computer neu starten, ändert sich dieser DNS-Name und Ihre Site funktioniert nicht mehr.

Die interne IP-Adresse ändert sich ebenfalls, es sei denn, Sie verwenden VPC, was Sie nicht sind.

Wenn ich Sie wäre, würde ich beim Neustarten dieser Maschine sehr vorsichtig sein.

Was die Zeit betrifft, dauert es nicht länger als ein paar Minuten.

Wenn auf der DB-Instanz iptables ausgeführt wird, sodass nur diese interne IP-Adresse eine Verbindung zur DB herstellen kann, funktioniert dies ebenfalls nicht, da sich Ihre interne IP-Adresse ändert.

Seien Sie also vorsichtig, wenn Sie diese Instanz neu starten möchten, und denken Sie darüber nach.


2

Ihre interne IP / Ihr Hostname ändern sich und Ihre elastische IP wird getrennt (es sei denn, Sie befinden sich in einer VPC).

Fügen Sie die elastische IP-Adresse erneut hinzu, nachdem Sie die Instanz neu gestartet haben. Ich tue dies regelmäßig, um die Instanzgrößen zu ändern, und Sie haben nur ein paar Minuten Ausfallzeit.

Vergewissern Sie sich, dass Apache und alle anderen Dienste gestartet sind ( chkconfigwenn Sie amazon linux ami ausführen).


1

Soweit ich mich erinnern kann, sollte es nicht länger als 5-10 Minuten dauern, bis das System seinen Typ geändert und neu gestartet hat (es ist kein EBS-System). Damit Dienste nach dem Neustart des Systems gestartet werden können, müssen Sie sicherstellen, dass alle Dienste beim Neustart aktiviert sind (wie bei Puppet auf meinem Ubuntu 12.04, das ich in / etc / default / puppet aktiviert habe). Notieren Sie sich die IP-Adresse (ich habe sie lange zurückgelegt, damit Sie sich nicht genau erinnern können) und höchstens Ihre IP-Adresse kann sich vom System lösen, aber sie ist immer noch in Ihrem Konto vorhanden System neu gestartet und Sie werden in Ordnung sein.


1

Wie bereits erwähnt, wird eine elastische IP-Adresse erneut an die Instanz angehängt, sodass Ihre DNS-Einstellungen nicht geändert werden müssen. Auf die eine oder andere Weise ändert sich jedoch Ihre private IP-Adresse. Dies bedeutet wahrscheinlich, dass Sie Ihre GRANT-Einstellungen in mysql aktualisieren müssen. Weil du nicht nur GRANT ALL PRIVILEGES ON *.* to 'somedude'@'%'... richtig? ;)

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.