Ich versuche aus intellektueller Neugier heraus zu verstehen, wie massiv Websites wie Facebook oder Wikipedia funktionieren. Ich habe verschiedene Techniken zum Erstellen skalierbarer Sites gelesen, bin aber immer noch über ein bestimmtes Detail ratlos.
Der Teil, der mich verwirrt, ist, dass das DNS letztendlich die gesamte Domäne einer einzelnen IP-Adresse zuordnet, oder eine Handvoll IP-Adressen im Fall von Round-Robin-DNS.
Beispielsweise hat wikipedia.org nur einen DNS-Eintrag vom Typ A. Menschen aus der ganzen Welt, die Wikipedia besuchen, müssen eine Anfrage an die im DNS angegebene IP-Adresse senden.
Was ist die Hardware, die die IP-Adresse für eine massive Site abhört, und wie kann sie möglicherweise die gesamte Last bewältigen, die von den Anforderungen für Benutzer auf der ganzen Welt kommt?
Edit 1: Danke für alle Antworten! Anycast scheint eine praktikable Antwort zu sein ... Kennt jemand eine Möglichkeit, um zu überprüfen, ob eine bestimmte IP-Adresse per Anycast weitergeleitet wird, damit ich überprüfen kann, ob dies wirklich der Trick ist, den große Websites in der Praxis anwenden?
Bearbeiten 2: Nachdem Sie mehr über das Thema gelesen haben, scheint es, dass Anycast normalerweise nicht für dynamische Webinhalte verwendet wird. Anycast wird normalerweise für UDP (z. B. DNS-Lookups) oder manchmal für statischen Inhalt verwendet.
Eine interessante Sache ist, dass Facebook profile.ak.fbcdn.net verwendet, um statische Inhalte wie Stylesheets und Javascript-Bibliotheken zu hosten. Jedes Mal, wenn ich diesen Namen anpinge, erhalte ich eine Antwort von einer anderen IP-Adresse. Ich kann jedoch nicht sagen, ob es sich um einen Anycast in Aktion handelt oder um eine völlig andere Technik.
Zurück zu meiner ursprünglichen Frage: So weit ich das beurteilen kann, wird selbst eine große Site eine einzige teure Hardware zum Lastenausgleich haben, die ihre Handvoll öffentlicher IP-Adressen abhört.
quelle
Antworten:
Dabei handelt es sich nicht unbedingt um Hardware, sondern um ein komplettes System, das auf Skalierung ausgelegt ist. Dies umfasst nicht nur die Hardware, sondern vor allem das Anwendungsdesign, das Datenbankdesign (relational oder anderweitig), das Netzwerk, den Speicher und die Art und Weise, wie sie alle zusammenpassen.
Ein guter Ausgangspunkt für Ihre Neugier, um herauszufinden, wie groß der Maßstab einiger großer Websites ist: Hohe Skalierbarkeit - Hier starten und Hohe Skalierbarkeit auf Wikimedia-Architektur , Facebook und Twitter als Beispiele.
In Bezug auf Ihre Frage zu DNS und einzelnen IP-Adressen sowie zum Round-Robin- Verfahren verwenden diese Site-Typen häufig den Lastenausgleich als Methode zur Darstellung einer einzelnen IP-Adresse. Dies kann entweder durch spezialisierte Hardware-Load-Balancer oder durch Software erfolgen, die auf Allzweck-Servern ausgeführt wird. Die vom Load Balancer verwalteten eingehenden Anforderungen an die IP werden dann transparent auf eine Reihe von Servern für den Endbenutzer verteilt.
Eine gute Erklärung zu diesem Thema, einschließlich eines Vergleichs von Hardware- und Software-Load-Balancern / -Proxies und deren Vergleich mit DNS-Round-Robin, finden Sie unter Load-Balancing-Webanwendungen .
quelle
Anycast kann auch für TCP-Verbindungen verwendet werden, vorausgesetzt, die Verbindungen sind kurzlebig, sodass sich die Routen während der Verbindungsdauer nicht ändern. Dies ist eine gute Annahme bei HTTP-Verbindungen (insbesondere, wenn Connection: Keep-Alive auf ein kurzes Zeitlimit beschränkt oder deaktiviert ist).
Viele CDNs (CacheFly, MaxCDN und wahrscheinlich viele andere) verwenden Anycast für TCP-Verbindungen (HTTP) und nicht nur DNS. Wenn Sie einen Hostnamen in CacheFly auflösen, erhalten Sie weltweit dieselbe IP-Adresse. Diese wird einfach an den "nächstgelegenen" CacheFly-Cluster weitergeleitet. "Closest" wäre hier in Bezug auf die BGP-Pfadlänge und -Metriken, was normalerweise eine bessere Methode zur Messung der Netzwerklatenz ist als die einfache geografische Entfernung.
Im Falle von Wikipedia speziell: http://www.datacenterknowledge.com/archives/2008/06/24/a-look-inside-wikipedias-infrastructure/
quelle
Der einfachste Weg, um zu überprüfen, ob eine IP-Adresse Anycast verwendet, besteht darin, eine Traceroute von einem anderen Ort aus durchzuführen. Sie können Folgendes versuchen: Gehen Sie zu traceroute.org, wählen Sie einen Ort aus und versuchen Sie, eine Traceroute zur IP-Adresse 8.8.8.8 (Google Public DNS, das Anycast verwendet) durchzuführen. Sie sollten in der Lage sein zu sehen, dass die Traceroute vom Server in Australien zum 8.8.8.8 in Australien bleibt.
Versuchen Sie, anstelle von Ping eine Hostnamensuche durchzuführen: Beispiel: http://network-tools.com/default.asp?prog=dnsrec&host=profile.ak.fbcdn.net
Sie sehen die Liste der IP-Adressen hinter diesem Namen. Diese IP-Adressen werden im Round-Robin-Verfahren verwendet, wenn Sie den Server anpingen.
quelle
Igor, deine Frage ist großartig und wie so viele unschuldige Fragen gibt es viele, viele Antworten, alle auf verschiedenen Detailebenen.
Die Hardware ist ein Webserver. Offensichtlich ;-)
Die Hardware besteht eigentlich aus einem Cluster von Lastenausgleichsmodulen, die alle so konfiguriert sind, dass sie aus dem gemeinsam genutzten Speicher abgerufen werden, sodass sie alle mit identischem Material identisch konfiguriert sind.
Bei der Hardware handelt es sich tatsächlich um einen von mehreren geografisch verteilten Clustern von Lastenausgleichsmodulen, und Sie wurden zu dem nächstgelegenen geleitet, eine Entscheidung, die vom DNS-Server getroffen wurde.
quelle
Google veröffentlichte letztes Jahr ein wenig über seine eigene Hardware-Architektur und sorgt für eine gute Lektüre .
quelle
Eine einzelne IP-Adresse bedeutet nicht unbedingt einen einzelnen Server: http://en.wikipedia.org/wiki/Anycast
quelle
Größere Websites verwenden mehrere verschiedene Techniken zusammen. Die von Ihnen genannten Websites haben in fast jedem Land mehrere Server. Basierend auf der IP-Adresse des Website-Besuchers gibt der DNS-Server eine IP-Adresse des Clusters zurück, die dem Besucher am nächsten ist. Akamai bietet einen solchen Service an (klicken Sie auf das Bild auf dieser Website, um weitere Informationen zu erhalten.)
Diese "Cluster" in diesem Rechenzentrum bestehen nun aus mehreren verschiedenen Computern (DB-Server, Webserver, Load Balancer usw.). Je nachdem, was Sie mit Ihrer Website bereitstellen, verfügen Sie möglicherweise über einige Server für den statischen Inhalt usw.
quelle
Massive Websites wie Facebook oder Wikipedia basieren auf verschiedenen Technologien, um Skalierbarkeit zu erzielen.
Eine dieser Technologien ist DNS. DNS ist so konfiguriert, dass der Lastausgleich mit Round Robin erfolgt. Die DNS-Konfiguration ist intelligent genug, um herauszufinden, wo Ihre Anfrage herkommt, und um die Adresse der Site zurückzugeben, die Ihnen am nächsten ist. Wenn Sie also graben, sehen Sie mehrere Datensätze, aber wenn Sie einen Ping ausführen, erhalten Sie immer die gleiche Adresse zurück.
Am Standort ist das erste Element, auf das Sie zugreifen, ein Reverseproxy oder ein Lastenausgleichspool. Die Pools sind so eingerichtet, dass alle Computer dieselbe IP-Adresse beantworten, aber eine neue IP-Adresse im Sitzungsheader zurückgeben. Alle weiteren Anforderungen werden über denselben Knoten ausgeführt.
Die für große Standorte verwendeten Load-Balancer sind keine großen, teuren Geräte, sondern Commodity-Server, auf denen LVS ausgeführt wird. http://www.linuxvirtualserver.org/
quelle
Massive Websites wie Google entwerfen mit ziemlicher Sicherheit ihre eigene Hardware. Große Standorte würden wahrscheinlich einen Multilayer-Switch verwenden, um Verbindungen zu mehreren tatsächlichen Servern auszugleichen. http://en.wikipedia.org/wiki/Multilayer_switch
quelle