Was hört die Hardware auf der IP-Adresse von Facebook oder Wikipedia?

32

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.

Igor Ostrovsky
quelle
Gute Fragen, schade, dass die meisten Leute das nicht verstehen. Ich hoffe jemand wird eine Antwort mit einigen Details haben. Vielleicht rund 50 Millionen Dollar Cisco Quantum Computing Powered Load Balancer.
OliverS

Antworten:

9

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 .

Sim
quelle
Danke, Sim. Ich habe die meisten dieser Artikel gelesen, bevor ich meine Frage gestellt habe, aber keine konkrete Antwort gefunden. Gibt es also wirklich einen einzelnen Hardware-Load-Balancer (oder eine einzelne Maschine mit Load-Balancing-Software), der jedes Mal aufgerufen wird, wenn jemand eine Wikipedia-Seite aufruft? Oder gibt es irgendwo einen anderen Trick, um den Engpass zu vermeiden?
Igor Ostrovsky
Ich bin nicht sicher , was Wikipedia tut jetzt aber dieser Artikel aus dem Jahr 2008 spricht über sie eine Reihe von Squid Reverse - Proxy - Server mit blogs.sun.com/WebScale/entry/scaling_wikipedia_with_lamp_7
Sim
2
Es gibt auch Anycast-Adressen, bei denen Sie eine IP-Adresse anpingen, die jedoch (zufällig \ willkürlich \ absichtlich) an einen von mehreren "echten" Endpunkten verteilt werden. Ich bin nicht sicher, ob Wikipedia \ Google dies verwendet, aber ich bin mir ziemlich sicher, dass einige der Stamm-DNS-Server dies tun. Meine Pings bei Wikipedia stimmen mit Ihren überein (und ich bin in Irland), sodass ich vermute, dass sie diese verwenden.
Helvick
1
Anycast wird in der DNS-Abfrage verwendet, um die Ihnen am nächsten liegende IP-Adresse abzurufen. Anschließend überwacht ein Load Balancer diese IP-Adresse und verteilt die Anforderungen an die Hintergrundserver.
Andy Shellam
2
Wikipedia verwendet auch das Geoip-Backend von pdns für einen Großteil des Lastenausgleichs. Weitere Infos hier: wikitech.wikimedia.org/view/PowerDNS und hier: wikitech.wikimedia.org/view/DNS
faultyserver 16.02.10
3

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/

Malayter
quelle
3

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.

Rianto Wahyudi
quelle
Related: serverfault.com/q/178319/87017
Pacerier
2

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.

Matt Simmons
quelle
1

Google veröffentlichte letztes Jahr ein wenig über seine eigene Hardware-Architektur und sorgt für eine gute Lektüre .

Squillman
quelle
Dies ist eine interessante Lektüre, die jedoch meine spezielle Frage nicht beantwortet. Ich bin besonders neugierig, welche Hardware die vier öffentlichen IP-Adressen von Google überwacht und die Last auf die Tausenden von Servern verteilt.
Igor Ostrovsky
1

Eine einzelne IP-Adresse bedeutet nicht unbedingt einen einzelnen Server: http://en.wikipedia.org/wiki/Anycast

Justin
quelle
1
Anycast ist schwierig zu warten, wenn Sie eine zentrale Synchronisation haben (wie Facebook). Dies funktioniert sehr gut, z. B. auf DNS-Servern, auf denen nur wenige Instanzen kommunizieren müssen, oder auf Webservern mit statischem Inhalt.
1
Sie haben Recht, dass eine einzelne IP-Adresse nicht einen einzelnen Server bedeutet, aber Anycast wird in der DNS-Abfrage verwendet, wenn Sie sich nicht darum kümmern, wer antwortet, solange Sie eine erhalten, und daher ist es nur mit dem UDP-Protokoll nützlich, welches antwortet DNS verwendet. Bei TCP (in HTTP verwendet) müssen Sie sicherstellen, dass der Server, der antwortet, derjenige ist, den Sie speziell gefragt haben.
Andy Shellam
@AndyShellam, Die Artikel en.wikipedia.org/wiki/Anycast#Details nanog.org/meetings/nanog37/presentations/matt.levine.pdf scheint mit Ihnen nicht einverstanden zu sein ...
Pacerier
1

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.

Raffael Luthiger
quelle
1

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/

user67823
quelle
0

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

Chris S
quelle