Warum wird empfohlen, elastische IPs von Amazon EC2 mit einem CNAME anstelle eines A-Datensatzes zu verwenden?

7

Ich richte einen Server auf EC2 ein, der von Leuten verwendet wird, die ausgeflippt sind, wenn sie ec2-111-111-111-111.compute-1.amazonaws.com in der URL-Leiste sehen. Ich weiß, dass dies durch die Verwendung eines A-Datensatzes anstelle eines CNAME gelöst werden kann. In der Dokumentation von Amazon wird jedoch die Verwendung eines CNAME angegeben.

Was passiert, wenn ich einen A-Datensatz verwende? Ich habe einige Tutorials im Web gesehen, in denen es heißt, aber ich brauche auch meine Website, um zuverlässig zu sein.

Die Website wird nur mit einer Instanz ausgeführt und wird wahrscheinlich nur mit einer Instanz ausgeführt. Daher halte ich es nicht für wichtig, dass mehrere Instanzen miteinander kommunizieren.

Canuk
quelle
2
Das sollte sich mit einem CNAME- oder A-Datensatz nicht ändern. In beiden Fällen zeigt der Browser den Hostnamen an, den der Benutzer eingegeben hat, es sei denn, Sie leiten in Ihrer App zum kanonischen Namen des Servers um. Wenn Sie das tun, hören Sie auf! :)
Bill Weiss
Bessere Frage, warum wird es dann in die andere URL aufgelöst? Ich dachte, es war, weil es ein CNAME
Canuk

Antworten:

13

Vereinfachte Version: Ein Datensatz verweist auf IP-Adressen. CNAME verweist auf andere A-Datensätze.

Sie könnten einen A-Eintrag verwenden, dafür sollten Sie jedoch eine hochverfügbare IP-Adresse für Ihre EC2-Instanz haben. Amazon nennt dieses Produkt "Elastic IP Addresses".

Wenn Sie einen CNAME für einen von Amazon verwalteten A-Datensatz einrichten, hat Amazon die Kontrolle über eine Indirektionsebene. Nach einem Serverausfall könnte Amazon dies beispielsweise verwenden, um den A-Eintrag in eine neue IP-Adresse zu ändern. Auf diese Weise könnte Amazon den Dienst wieder zum Laufen bringen, und Sie müssten nichts ändern.

Im Allgemeinen empfiehlt es sich, zwei DNS-Einträge, einen A-Eintrag für den jeweiligen Server und CNAME-Einträge für die von ihm bereitgestellten Dienste wie "www" zu verwenden. Auf diese Weise haben Sie eine saubere Trennung zwischen Hardware und Diensten, was die Verwaltung in vielen Fällen erleichtert.

Wenn Sie also nicht für "Elastic IP Addresses" bezahlen, sollten Sie einen CNAME für den von Amazon für Sie eingerichteten A-Datensatz verwenden, dh einen CNAME für "www.yourdomain.com", der auf "ec2-111-111" verweist -111-111.compute-1.amazonaws.com. ".

Jesper M.
quelle
1
Danke für die Antwort. Ich habe zwar eine elastische IP, laut Amazon-Dokumentation soll jedoch kein A-Datensatz auf diese elastische IP verweisen, sondern stattdessen ein CNAME verwendet werden. Aus irgendeinem Grund, wenn ich einen CNAME einrichte, der auf "ec2-111-111-111-111.compute-1.amazonaws.com" verweist. Es wird weiterhin in ec2-111-111-111-111.compute-1.amazonaws.com in der Adressleiste aufgelöst, anstatt nur ec2.example.com zu bleiben.
Canuk
@Canuk: Das macht für mich keinen Sinn. Könnte es sich um einen Fehler auf HTTP-Ebene handeln, dh, Ihr Webserver sendet eine HTTP-Umleitung an die Amazon-Adresse oder so etwas ... Sie können versuchen, die Sequenz über rexswain.com/httpview.html anzuzeigen . Wenn das nicht hilft, schreiben Sie hier die echten Hostnamen, und wir können sie uns ansehen.
Jesper M
Es stellte sich heraus, dass es sich um einen Konfigurationsfehler auf dem Server handelte. Danke für Ihre Hilfe. Ich habe es als CNAME belassen, um den Vorteil zu haben, dass Amazon die Indirektionsebene kontrolliert.
Canuk
2

Sie werden ec2-111-111-111-111.compute-1.amazonaws.com mit einem CNAME-Datensatz niemals sehen. Wenn Sie zu Ihrer CNAMEed-Domain wechseln, wird auf die URL von amazonaws.com umgeleitet. Dies liegt nicht daran, dass es sich um einen CNAME handelt, sondern daran, dass Ihre App oder Ihr Webserver dies tut.

ceejayoz
quelle
2

Die ec2-*.amazonaws.comHostnamen werden in verschiedene IP-Adressen aufgelöst, je nachdem, ob Sie sie extern aus dem Internet oder intern aus einer anderen EC2-Instanz auflösen.

Dies bedeutet, dass bei zwei EC2-Servern, z. B. einem Datenbankserver und einem Webserver, Ihr Webserver den Datenbankserver unter einer internen 10.xxx-IP-Adresse sehen würde, während Sie von außen den Webserver sehen würden an einer regulären nicht privaten IP-Adresse. (Natürlich möchten Sie nicht, dass ein Datenbankserver von außen sichtbar ist, aber dies ist nur ein praktisches Beispiel.)

Wenn Sie eine elastische IP-Adresse verwenden, haben Sie eine bekannte permanente IP-Adresse und es sollte in Ordnung sein, einen A-Datensatz zu verwenden, um darauf zu verweisen. Wenn Sie keine elastische IP haben (und warum nicht, sie sind kostenlos), möchten Sie anscheinend den CNAME verwenden, falls Amazon Ihre IP-Adresse ändert.

Wenn Sie jedoch mehrere Server haben, würde ich immer noch den CNAME verwenden, damit Sie die magische interne / externe IP-Adressauflösung erhalten.

Nate
quelle
1

Der Grund für die Verwendung eines CNAME-Datensatzes besteht darin, dass auf die Site sowohl innerhalb als auch außerhalb von ec2 zugegriffen werden kann.

Nehmen Sie zum Beispiel Ping. Wenn Sie c2-111-111-111-111.compute-1.amazonaws.com extern anpingen, wird dies in 111.111.111.111, intern jedoch in eine 10.0.0.0/8-Adresse aufgelöst. Wenn Sie jedoch 111.111.111.111 anpingen, ist es intern nicht verfügbar.


quelle