Wie funktionieren CDN (Content Distribution Networks)?

37

Akamai als CDN nehmen. Wenn ein Client eine Seite anfordert, wird die Anforderung meines Wissens an den zentralen Akamai-Server weitergeleitet, der dann je nach Standort des Clients einen Akamai-Edgeserver abholt und nachfolgende Anforderungen des Clients direkt an diesen Edgeserver weiterleitet. Meine Frage ist, dass:

Wenn ein Client eine Website anfordert (nach Namen), behält der Client diese IP-Adresse bei, sobald der DNS den Namen in die IP-Adresse des Akamai-Zentralservers auflöst und an den Client weiterleitet. Wie sind dann die nachfolgenden Anforderungen möglich? gehe ich direkt zur IP-Adresse von Akamai Edge Servern?

Oder ist es notwendig, dass bei Verwendung von CDN die DNS-Auflösung selbst vom CDN-Server vorgenommen werden sollte?

Haben Biggies wie Google, Amazon, Facebook eigene CDN-Server oder verlassen sie sich auf CDN-Anbieter von Drittanbietern wie Akamai? Sagen Sie Google und Yahoo! Beide verwenden Akamai-CDNs und führen dann Inhalte von Yahoo! und Google befinden sich auf demselben Server? Ist dies kein potenzielles Sicherheitsproblem?

p2pnode
quelle

Antworten:

27

Sie hosten nicht einfach die gesamte Site mit dem CDN, sondern nur Ihre Inhalte .

Mir ist gerade aufgefallen, dass ich vor einiger Zeit eine ähnliche Frage beantwortet habe: Was macht akamaihd.net?

DatenanforderungsflussBild von WikiMedia

Also Ihre Site referenziert http://akamai/myfile.ext. Dies wird angefordert myfile.extvon akamai. akamaikann dann eine HTTP-Umleitung an den eigentlichen Content-Server senden .

Wenn dieser letzte Schritt zwischengespeichert wird, werden alle zukünftigen Anforderungen an den nächsten Content-Server gesendet.

Wie funktioniert das?

Nehmen wir diese Website an:

<html>
  <body>
    <img src="http://cdn/oliver.png" />
  </body>
</html>

Ich fordere diese Website von meinem eigenen Webserver an. Die .htmlDatei wird nicht mit gehostet cdn. Weder ist der DNS meines Webservers.

Erstanfrage

Also hat mein Browser diese HTML-Datei bekommen und analysiert sie jetzt. Es findet das referenzierte Bild und merkt sich, dass es sich in befindet http://cdn/oliver.png. Es fordert diese Datei an.

Dazu muss die IP-Adresse von ermittelt werden cdn. In unserem Beispiel lautet diese IP-Adresse 10.10.10.10.

Mit dieser IP-Adresse kann eine Verbindung zum cdnServer hergestellt und eine Anfrage gestellt werden /oliver.png.

Geo-Standort

Jetzt wird cdnklar, " der Typ ist aus Deutschland! ". Anstatt mir mein tolles Bild zu senden, das ich wollte, schicke ich eine HTTP-Weiterleitung mit den Worten:

/oliver.png ist nicht hier. Es ist bei10.10.33.33/oliver.png

Also wird mein Browser 10.10.33.33(der hoffentlich näher bei mir ist) nach dem Bild fragen .

Ernst?

Ich sage nicht, dass ALLE CDNs so funktionieren, aber es wäre ein Ansatz.

Sie können auch einen DNS-Daemon implementieren, der abhängig vom Standort des Absenders der Abfrage unterschiedliche Ergebnisse für eine Namenssuche zurückgibt.
Aber ich bezweifle, dass dies in der Praxis gemacht wird. Aber vielleicht kann ich mir einfach nicht vorstellen, wie ich das richtig einrichten soll. Sehen Sie sich die Antwort von fluffy an, wie das funktionieren könnte.

Wer betreibt CDNs?

Die meisten Global Player haben in gewisser Weise ein eigenes Netzwerk für die Bereitstellung von Inhalten (so würde ich annehmen). Einige Anbieter verlagern nur bestimmte Dienste auf größere CDNs (wie Microsoft bei MSDN-Downloads). Und das könnte Ihr zweites Thema irgendwie berühren.

Beachten Sie, dass Microsoft im MSDN Produktdownloads anbietet. Diese Downloads werden dann von Akamai bereitgestellt. Wenn Sie die URL dieses Downloads ermitteln können, können Sie das Produkt einfach herunterladen, ohne sich jemals mit Microsoft in Verbindung zu setzen.

Ist das ein Sicherheitsproblem? Nicht wirklich, weil das, was heruntergeladen wird, immer noch geschützt ist (durch einen Produktschlüssel).

Aber wie wäre es mit anderen Daten?

Wenn Ihre Daten sicherheitsrelevant sind, handelt es sich nicht um CDN-Material. Wenn Sie etwas nicht so weit wie möglich verfügbar sein sollen, nicht in einem CDN setzen.

Der Hochstapler
quelle
Angenommen, die Site ist irgendwo / file.txt . Angenommen, Akamai-DNS wird verwendet. Geht dann die erste Anfrage des Clients an eine Website oder die erste Anfrage selbst an Akamai (weil der vom Client verwendete DNS irgendwie weiß, dass Akamai CDN verwendet wird)?
p2pnode
Und vielleicht verstehe ich die HTTP-Weiterleitung nicht und weiß nicht, was sie leisten können. Daher bleibt meine Frage, woher der Client die IP-Adresse von Akamai-Edgeservern verwenden kann, damit sich Akamai-Zentralserver nicht anstellen müssen all ..
p2pnode
@ p2pnode: Ich habe die Antwort etwas erweitert. Hoffentlich enthält es, worüber Sie sich wundern.
Der Hochstapler
1
Gibt es nicht einen signifikanten Leistungseinbruch? Anstatt dass die gesamte Datenübertragung über einen einzelnen TCP-Stream erfolgt, werden mehrere Streams verwendet, was zu einem höheren Overhead durch das Handshaking usw. führt.
Akash,
@Akash: Normalerweise würden Sie eine CDN nicht für alles verwenden , sondern nur für einzelne große Dateien. In der Praxis ist dies also kein Problem.
Der Hochstapler
11

Ein gängiger Ansatz für CDN ist die Verwendung von " Anycast ". Wie dies funktioniert, ist, dass Ihre verteilten Server mit DNSs zusammengestellt sind, die mit diesem Server als Ziel antworten. Sie könnten beispielsweise drei Server in unterschiedlichen Hosting-Einrichtungen haben und deren jeweilige DNSs behaupten, dass ihre IP-Adresse die kanonische für Ihren Server ist (nennen Sie es beispielsweise content.example.com). Die DNSes sind jeweils konfiguriert , um die gleiche globale IP - Adresse zu haben, und dann jede der Einrichtungen Server verwenden BGP - Updates , es so zu machen , dass der Weg zu den nächstgelegenen Server gewinnt - so , wenn Sie tun , um eine Namen - Suche auf content.example.com, die schnellste / nächste / most available DNS antwortet auf die Anfrage mit seinem HTTP Server.

Auf diese Weise sind keine GeoIP-Tricks erforderlich und Sie werden immer von dem Server bedient, der für Sie am schnellsten ist - was aufgrund der heterogenen Beschaffenheit des Internets möglicherweise nichts mit seinem physischen Standort zu tun hat.

Nach meinem Verständnis funktioniert Akamai zumindest teilweise auf diese Weise.

flauschige
quelle
5

Ebenfalls erhältlich sind Origin Pull-CDNs.

Amazon Cloudfront kann diese Technik verwenden.

Sie richten einen CNAME wie media.example.com ein, der auf den zugewiesenen Servernamen verweist und all Ihre Inhalte auf Ihrem Server belässt. Für Bilder und Inhalte, die Sie über das CDN liefern möchten, verwenden Sie media.example.com in der URL. Die Anforderung wird an das Servernetzwerk gesendet. Wenn der Inhalt nicht verfügbar ist, rufen die Server den Inhalt von Ihrem Server ab. Sobald der Inhalt im System vorhanden ist, wird er an Serverfarmen verteilt, die dem Ort am nächsten sind, an dem der Bedarf besteht, und bleibt dort für die zugewiesene TTL. Ihr Server sieht keinen Datenverkehr mehr auf dem zwischengespeicherten Inhalt, bis die TTL abläuft und Cloudfront ihn aktualisieren muss.

Fiasco Labs
quelle
1

Akamai funktioniert nicht so. Verschiedene CDNs funktionieren unterschiedlich, aber Akamai sendet speziell keine Nachrichten für ihre Webserver.

Wenn ein Benutzer in NY dies wünscht www.acme.com, leitet der Nameserver von acme.com ("Delegierte") an einen Akamai-Nameserver weiter. Der Akamai-Nameserver erkennt anhand seiner IP-Adresse, wo sich das Gerät befindet, das die Frage stellt, und gibt die IP-Adresse des nächstgelegenen / besten Akamai-Servers zurück, der bedient werden soll www.acme.com.

Herrscher
quelle
Wie es funktioniert? Der Akamai-Nameserver empfängt eine Anforderung vom Benutzer direkt oder vom Benutzer-DNS-Server, der an den Akamai-Nameserver delegiert. Es wird also nach dem DNS-Serverstandort geolokalisiert, nicht nach dem des Benutzers?
Odiszapc
0

Eine großartige Zusammenfassung der Funktionsweise von Akamais CDN finden Sie hier

Zusamenfassend:

  • CDN-Server haben einen CNAME-Eintrag, der auf die DNS-Server von Akamai verweist.
  • Bei der ersten Anforderung, die ein Client-Browser an einen CDN-Server sendet, wird dessen DNS auf dem DNS-Server von Akamai nachgeschlagen, der mit der IP-Adresse eines Akamai-Servers antwortet, der sich in der Nähe des Benutzers befindet ("Edgeserver" genannt).
  • Diese Edgeserver können statische Elemente aus einem lokalen Cache bereitstellen, wenn dies kürzlich von einem anderen Benutzer angefordert wurde, und müssen nicht einmal zu Ihrem Server zurückkehren, um eine Kopie des Assets abzurufen.
  • Fehlende Elemente oder nicht zwischengespeicherte Seiten werden über das Akamai-Netzwerk an einen anderen Edgeserver in der Nähe des Hosts weitergeleitet. Dieser Edgeserver sendet die tatsächlichen Anforderungen an den Hoststandort und leitet sie über das Netzwerk an den ursprünglichen Edgeserver zurück. Von dort werden sie an den Endbenutzer zurückgegeben.
  • Da die Edgeserver intern über die proprietären Protokolle von Akamai kommunizieren und Engpässe umgehen, kann der Datenverkehr viel schneller als über das öffentliche Internet erfolgen.

Und wie in dem oben aufgeführten Blog-Beitrag erwähnt, lösen einige große Unternehmen DNS mithilfe ihrer eigenen Server auf. Dies kann einige der Vorteile der Verwendung eines CDN zunichte machen.

Brad Parks
quelle
-2

CDN arbeitet mit Anycast DNS. Anycast DNS funktioniert auf Anycast IP. Anycast-IP: Eine IP wird auf mehreren Servern zugewiesen. Wenn der Benutzer einen DNS-Resolver anfordert, wird diese Abfrage vom nächstgelegenen Server bearbeitet und die Daten vom Server werden mit der geringsten Latenz bereitgestellt.

Abhimanyu Schiene
quelle
Inwiefern verbessert dies die bestehenden, viel umfassenderen Antworten?
Chenmunka