Was ist die beste Vorgehensweise für die Kommunikation zwischen Amazon EC2-Instanzen?

41

Ich habe Amazon EC2-Instanzen für ein bevorstehendes Projekt eingerichtet. Es sind alles Mikro-Instanzen, auf denen Ubuntu Server 64bit ausgeführt wird. Folgendes habe ich bisher eingerichtet:

  • Webserver - Apache
  • Datenbankserver - MySQL
  • Entwicklungsserver - Apache & MySQL
  • Dateiserver - SVN & Bacula (Backups werden in S3-Buckets durchgeführt)

Derzeit gibt es nur einen Webserver, aber irgendwann werden es mehr sein.

Meine erste Frage ist, wie Amazon EC2-Instanzen am besten und sichersten miteinander kommunizieren können. Derzeit verwende ich SSH. Ist das die beste Methode?

Laut Amazon werden für Instanzen, die über ihre elastischen IP-Adressen miteinander kommunizieren, Datenübertragungsgebühren erhoben. Instanzen, die über ihre privaten IP-Adressen kommunizieren, können dies jedoch kostenlos tun. Leider scheinen sich private IPs zu ändern, wenn die Instanz gestoppt und neu gestartet wird.

Das ist meine zweite Frage: Wie können Sie die privaten IP-Adressen von Amazon-Instanzen nutzen, wenn diese nicht statisch sind?

Ich weiß, dass die Instanzen wahrscheinlich nicht sehr häufig gestoppt und gestartet werden, aber dennoch, wenn die IP-Adresse in verschiedenen Konfigurationsdateien enthalten ist, wäre es mühsam, sie alle durchzugehen und zu ändern.

Ich mache mir hauptsächlich Sorgen um die Webserver, die Zugriff auf den Datenbankserver und den Dateiserver benötigen, die bei der Durchführung von Sicherungen Zugriff auf alle Instanzen benötigen.

Hinweis: Ich habe Bacula noch nie verwendet und habe es noch nicht eingerichtet, gehe aber davon aus, dass die IP-Adressen der Clients für die Sicherung benötigt werden.

ks78
quelle
2
+1 - Ich würde elastische private IPs lieben. Beachten Sie auch, dass Sie meiner Meinung nach nicht über private IP-Adressen zwischen Regionen kommunizieren können.
Joel K
Ich denke, Sie werden feststellen, dass ein einzelner m1.small Ihnen eine viel bessere Leistung bietet als mehrere t1.micro. Aktualisieren Sie dann auf c1.medium. Starten Sie dann multiple c1.medium oder verwenden Sie einen noch größeren Instanztyp. Beachten Sie jedoch, dass m1.small und c1.medium nur 32-Bit und nicht 64-Bit unterstützen.
Eric Hammond

Antworten:

29

Lesen Sie den Artikel von Eric Hammond, in dem die Verwendung elastischer IP-Adressen auch aus EC2 heraus erläutert wird. Diese Methode führt zu KEINEN Bandbreitengebühren, da das Auflösen der elastischen IP-Adresse (nach Namen) aus EC2 heraus die private IP-Adresse zurückgibt.

http://alestic.com/2009/06/ec2-elastic-ip-internal

Für mehr Optionen habe ich einen Artikel, der ein paar Alternativen untersucht:

http://shlomoswidler.com/2010/06/track-changes-to-your-dynamic-cloud-services-automatically.html

Shlomo Swidler
quelle
Vielen Dank für Ihre Antwort. Ich denke immer mehr, dass dynamisches DNS der richtige Weg ist, obwohl ich noch nie zuvor ein DNS eingerichtet habe. Kennen Sie Websites, die eine detaillierte Anleitung zur Vorgehensweise bieten?
ks78
6

Stellen Sie Ihre EC2-Instanz in einer AWS Virtual Private Cloud (VPC) bereit. Wenn Sie Ihre VPC konfigurieren, weisen Sie allen EC2-Instanzen in der VPC CIDR zu, und die interne IP ist statisch.

user188724
quelle
Dies ist bei weitem der beste Ansatz.
ceejayoz
2
  • Sicherste Kommunikationsmethode

SSH ist eine sehr gute Methode zum Übertragen von Daten zwischen verschiedenen Servern. Wenn Sie jedoch nach einer dauerhaften Verbindung (zum Beispiel zu einer Datenbank) suchen, können Sie jede Art von verschlüsselter Tunnelsoftware verwenden, z stunnel

  • Nicht statische private IPs

Da statische private IP-Adressen nicht möglich sind, können Sie dafür eine Art automatische Serverbereitstellung verwenden. Es gibt verschiedene Tools wie mcollective, capistrano oder func, mit denen Sie Ihre neue Instanz auf einem zentral festgelegten Server registrieren und Aktionen für mehrere generieren können Maschinen, die darauf basieren

Lynxman
quelle
Ich hatte ursprünglich die gleiche Frage auf StackOverflow gepostet. Dort schlug jemand vor, einen DNS-Server zu verwenden. Wenn sich die privaten IP-Adressen ändern, wäre dies nicht von Bedeutung, da für die Kommunikation von DNS bereitgestellte Namen verwendet würden. Was halten Sie von dieser Lösung?
ks78
1
Es ist keine schlechte Lösung, wenn Sie in der Lage sind, eine dynamische DNS-Zone auf dem neuesten Stand zu halten. Da Sie jedoch diese Zone sowie einen primären DNS-Server für alle Ihre Instanzen verwenden müssten, würden Sie auch eine einzige Fehlerquelle erhalten. Aus diesem Grund habe ich stattdessen mcollective oder capistrano vorgeschlagen, da dies Ihnen auch den Vorteil verschafft, komplexe Operationen auf Ihren Knoten
auszuführen
Vielen Dank. Ich habe mich nur gefragt, wie Sie zu dieser Lösung stehen würden. Ich werde mich mit mcollective und capistrano befassen.
ks78
Entschuldigung, einen alten Thread wiederzubeleben, aber sind private IPs auf ec2 immer noch nicht statisch? Das habe ich bei einem brandneuen ec2-Setup nicht miterlebt - die Netzwerkschnittstellen bleiben bestehen, nachdem ich Server gestoppt habe, und private IP-Adressen haben sich bei mir noch nicht geändert. Bei Bedarf kann ich auch sekundäre private IP-Adressen auswählen.
Icyitscold