Frage Wie hört sich die Hardware auf der IP-Adresse von Facebook oder Wikipedia an?


Ich versuche zu verstehen, wie massiv Websites wie Facebook oder Wikipedia für meine intellektuelle Neugier arbeiten. Ich lese verschiedene Techniken zum Erstellen skalierbarer Websites, aber ich bin immer noch verwirrt über ein bestimmtes Detail.

Der Teil, der mich verwirrt, ist, dass der DNS schließlich die gesamte Domäne auf eine einzelne IP-Adresse oder eine Handvoll IP-Adressen im Falle von Round-Robin-DNS abbildet.

Zum Beispiel hat wikipedia.org nur einen Typ-A-DNS-Eintrag. Also müssen Leute aus der ganzen Welt, die Wikipedia besuchen, eine Anfrage an die in DNS angegebene IP-Adresse senden.

Was ist die Hardware, die die IP-Adresse einer riesigen Website überwacht und wie kann sie möglicherweise die gesamte Last bewältigen, die von den Anfragen für Benutzer auf der ganzen Welt kommt?

Bearbeiten 1: Danke für alle Antworten! Anycast scheint eine machbare Antwort zu sein ... Kennt jemand einen Weg, um zu überprüfen, ob eine bestimmte IP-Adresse Anycast-geroutet ist, so dass ich bestätigen konnte, dass dies wirklich der Trick ist, der in der Praxis von großen Sites verwendet wird?

Bearbeiten 2: Nach weiterem Lesen des Themas scheint Anycast normalerweise nicht für dynamische Webinhalte verwendet zu werden. Anycast wird normalerweise für UDP (z. B. DNS-Lookups) oder manchmal für statischen Inhalt verwendet.

Interessant 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 das Anycast in Aktion ist oder eine völlig andere Technik.

Zurück zu meiner ursprünglichen Frage: Soweit ich das beurteilen kann, wird selbst eine große Site eine einzige teure Lastausgleichshardware auf ihren wenigen öffentlichen IP-Adressen haben.


32
2018-02-16 00:56


Ursprung


Große Fragen, schade, die meisten Leute verstehen es nicht. Ich hoffe, dass jemand eine Antwort mit einigen Details haben wird. Vielleicht ein 50 Millionen Dollar Cisco Load Balancer mit Quantencomputer. - OliverS


Antworten:


Es ist nicht unbedingt ein Stück Hardware, das dies tut, sondern ein komplettes System, das skaliert wurde. Dies umfasst nicht nur die Hardware, sondern vor allem das Anwendungsdesign, das Datenbankdesign (relational oder anders), Netzwerk, Speicher und wie sie alle zusammenpassen.

Ein guter Ausgangspunkt für Ihre Neugier, herauszufinden, wie einige der großen Websites skalieren Hohe Skalierbarkeit - Starten Sie hier und Hohe Skalierbarkeit in Wikimedia-Architektur, Facebook und Twitter als Beispiele.

In Bezug auf Ihre Frage über DNS und einzelne IP-Adressen und Round-Robin werden diese Arten von Websites oft verwenden Lastverteilung als eine Methode zum Präsentieren einer einzelnen IP-Adresse. Dies kann entweder durch spezialisierte Hardware Load Balancer oder durch Software auf Allzweckservern erfolgen. Die eingehenden Anforderungen an die vom Load Balancer verwaltete IP werden dann über eine Reihe von Servern transparent für den Endbenutzer verteilt.

Für eine gute Erklärung zu diesem Thema, einschließlich eines Vergleichs von Hardware und Software Load Balancer / Proxies und wie sie mit DNS Round Robin vergleichen, lesen Sie Lastenausgleich Web-Anwendungen.


9
2018-02-16 01:23



Danke, Sim. Ich habe die meisten dieser Artikel durchgelesen, bevor ich meine Frage gestellt habe, aber ich habe keine konkrete Antwort gefunden. Also, gibt es wirklich einen einzigen Hardware Load Balancer (oder eine einzelne Maschine mit Load-Balancing-Software), die jedes Mal getroffen wird, wenn jemand eine Wikipedia-Seite anschaut? Oder gibt es irgendwo noch einen Trick, um den Engpass zu vermeiden? - Igor Ostrovsky
Ich bin mir nicht sicher, was Wikipedia jetzt macht, aber dieser Artikel von 2008 spricht darüber, dass sie eine Reihe von Squid Reverse Proxy Servern verwenden blogs.sun.com/WebScale/entry/scaling_wikipedia_with_lamp_7 - Sim
Es gibt auch Anycast-Adressen, bei denen Sie eine IP-Adresse anpingen, aber sie werden (zufällig \ willkürlich \ absichtlich) an einen von einer Reihe von "echten" Endpunkten verteilt. Ich bin mir nicht sicher, ob Wikipedia \ Google dies verwendet, aber ich bin ziemlich sicher, dass einige der Root-DNS-Server tun. Meine Pings zu Wikipedia stimmen mit deiner überein (und ich bin in Irland), also vermute ich, dass sie das benutzen könnten. - Helvick
Anycast wird in der DNS-Abfrage verwendet, um die Ihnen am nächsten gelegene IP-Adresse abzurufen. Anschließend überwacht ein Load Balancer diese IP-Adresse und verteilt die Anforderungen an die Backing-Server. - Andy Shellam
Wikipedia verwendet zufällig auch das geoip-Backend von pdns für einen Großteil ihres Lastausgleichs. mehr Infos hier: wikitech.wikimedia.org/view/PowerDNS und hier: wikitech.wikimedia.org/view/DNS - faultyserver


Anycast kann auch für TCP-Verbindungen verwendet werden, vorausgesetzt, die Verbindungen sind kurzlebig, so dass sich die Routen während der Verbindungslebensdauer nicht ändern. Dies ist eine gute Voraussetzung für HTTP-Verbindungen (besonders wenn Connection: Keep-Alive auf einem kurzen Timeout gehalten 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 überall auf der Welt dieselbe IP-Adresse, die einfach an den "nächsten" CacheFly-Cluster weitergeleitet wird. "Am nächsten" wäre hier die Länge und die Metrik des BGP-Pfads, die normalerweise eine bessere Möglichkeit darstellt, die Netzwerklatenz als die einfache geografische Entfernung zu messen.

Im Fall von Wikipedia speziell: http://www.datacenterknowledge.com/archives/2008/06/24/a-look-inside-wikipedia/infrastructure/


3
2018-02-16 13:50





Der einfachste Weg zu überprüfen, ob eine IP-Adresse Anycast verwendet, ist eine Traceroute von einem anderen Ort aus. Sie können Folgendes versuchen: Gehen Sie zu traceroute.org, wählen Sie einen Standort und versuchen Sie, eine Traceroute mit der IP-Adresse 8.8.8.8 (Google Public DNS, die Anycast verwendet) durchzuführen. Sie sollten in der Lage sein, diese Traceroute vom Server in Australien bis 8.8.8.8 in Australien zu sehen.

Versuchen Sie anstelle von ping, Hostnamen-Lookup durchzuführen: zB: http://network-tools.com/default.asp?prog=dnsrec&host=profile.ak.fbcdn.net

Sie sehen die Liste der IP-Adresse hinter diesem Namen. Diese IP-Adressen werden im Round-Robin-Modus verwendet, wenn Sie den Server anpingen.


3
2018-02-17 06:05



Die Liste der Traceroute-Server ist großartig, danke! - Igor Ostrovsky
Verbunden: serverfault.com/q/178319/87017 - Pacerier


Igor, deine Frage ist großartig, und wie so viele unschuldige Fragen gibt es viele, viele Antworten, alle auf verschiedenen Ebenen von Details.

Die Hardware ist ein Webserver. Offensichtlich ;-)

Die Hardware ist eigentlich ein Cluster von Load Balancern, die alle so konfiguriert sind, dass sie vom gemeinsam genutzten Speicher abgerufen werden, sodass sie alle identisch mit identischem Material konfiguriert sind.

Das Hardwareteil ist tatsächlich einer von mehreren Clustern von geografisch verteilten Load Balancern, und Sie wurden auf den Ihnen am nächsten stehenden angewiesen, eine Entscheidung, die vom DNS-Server getroffen wurde.


2
2018-02-16 03:00





Google hat letztes Jahr ein wenig auf ihrer eigenen Hardware-Architektur veröffentlicht und es macht einen gut gelesen.


1
2018-02-16 01:41



Dies ist eine interessante Lektüre, beantwortet aber nicht meine spezielle Frage. Ich bin besonders neugierig, welche Hardware die vier öffentlichen IP-Adressen von Google hören und die Last unter den Tausenden von Servern verteilen. - Igor Ostrovsky


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


1
2018-02-16 02:53



Anycast ist ein schwieriges Setup, wenn Sie eine zentrale Synchronisierung haben (wie Facebook). Es funktioniert wirklich gut für z.B. DNS-Server, auf denen Instanzen nicht viel Kommunikation benötigen, oder Webserver mit statischem Inhalt.
Sie haben recht damit, dass eine einzelne IP nicht einen einzelnen Server bedeutet, sondern Anycast in der DNS-Abfrage verwendet wird, wenn Sie nicht belästigt wer antwortet, solange Sie einen bekommen, und daher ist es nur mit dem UDP-Protokoll nützlich DNS verwendet. Mit TCP (in HTTP verwendet) müssen Sie sicher sein, dass der Server, den Sie speziell angefordert haben, antwortet. - Andy Shellam
@AndyShellam, Die Artikel en.wikipedia.org/wiki/Anycast#Details  nanog.org/meetings/nanog37/presentations/matt.levine.pdf scheint dir nicht zu stimmen ... - Pacerier


Größere Sites verwenden mehrere verschiedene Techniken zusammen. Die 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, der dem Besucher am nächsten ist. Akamai stellt einen solchen Dienst zur Verfügung (klicken Sie auf das Bild auf dieser Website für weitere Informationen.)

Diese "Cluster" in diesem Datencenter bestehen nun aus mehreren verschiedenen Maschinen (DB Server, Webserver, Load Balancer, etc.) Je nachdem, was Sie mit Ihrer Website bereitstellen, haben Sie vielleicht einige Server für den statischen Inhalt usw.


1
2018-02-16 14:21





Massenseiten wie Facebook oder Wikipedia sind auf verschiedene Technologien angewiesen, um Skalierbarkeit zu erreichen.

Eine dieser Technologien ist DNS. DNS ist so konfiguriert, dass die Last mit Round-Robin ausgeglichen wird. Die DNS-Konfiguration ist intelligent genug, um herauszufinden, woher Ihre Anfrage kommt, und um die Adresse der Website zurückzugeben, die Ihnen am nächsten ist. Also, wenn Sie eine Ausgrabung machen, werden Sie mehrere Datensätze sehen, aber wenn Sie einen Ping machen, bekommen Sie immer die gleiche Adresse zurück.

Auf der Site ist die erste Hardware, die Sie treffen, ein Reverse-Proxy oder ein Lastausgleichs-Pool. Die Pools sind so eingerichtet, dass alle Computer die gleiche IP-Adresse annehmen, aber eine neue IP-Adresse im Sitzungsheader zurückgeben. Alle weiteren Anfragen gehen über denselben Knoten.

Die Load Balancer, die für große Standorte eingesetzt werden, sind keine großen, teuren Ausrüstungsgegenstände, sie sind Warenserver mit LVS. http://www.linuxvirtualserver.org/


1
2018-01-22 16:26





Massive Websites wie Google entwerfen fast sicher ihre eigene Hardware. Große Websites würden wahrscheinlich einen Multi-Layer-Switch verwenden, um Kontoverbindungen zu mehreren tatsächlichen Servern zu laden. http://en.wikipedia.org/wiki/Multilayer_switch


0
2018-02-16 03:11