Jaki sprzęt nasłuchuje na adresie IP Facebooka lub Wikipedii?

32

Z mojej intelektualnej ciekawości staram się zrozumieć, jak działają ogromne witryny, takie jak Facebook czy Wikipedia. Czytam o różnych technikach tworzenia skalowalnych stron, ale wciąż zastanawiam się nad jednym konkretnym szczegółem.

To, co mnie dezorientuje, polega na tym, że ostatecznie DNS zamapuje całą domenę na pojedynczy adres IP lub garść adresów IP w przypadku DNS typu round-robin.

Na przykład wikipedia.org ma tylko jeden rekord DNS typu A. Tak więc osoby z całego świata odwiedzające Wikipedię muszą wysłać zapytanie na jeden adres IP określony w DNS.

Jaki jest sprzęt, który nasłuchuje na adresie IP ogromnej witryny i jak może obsłużyć całe obciążenie wynikające z żądań użytkowników na całym świecie?

Edycja 1: Dziękujemy za wszystkie odpowiedzi! Anycast wydaje się wykonalną odpowiedzią ... Czy ktoś wie, jak sprawdzić, czy dany adres IP jest trasowany w trybie anycast, abym mógł sprawdzić, czy to naprawdę sztuczka stosowana w praktyce przez duże witryny?

Edycja 2: Po dokładniejszym przeczytaniu tematu wydaje się, że anycast nie jest zwykle używany do dynamicznej zawartości sieci. Anycast jest zwykle używany do UDP (np. Wyszukiwania DNS), a czasem do zawartości statycznej.

Ciekawą rzeczą do odnotowania jest to, że Facebook używa profile.ak.fbcdn.net do hostowania treści statycznych, takich jak arkusze stylów i biblioteki javascript. Za każdym razem, gdy wysyłam ping do tej nazwy, otrzymuję odpowiedź z innego adresu IP. Nie wiem jednak, czy jest to anycast w akcji, czy zupełnie inna technika.

Wracając do mojego pierwotnego pytania: o ile wiem, nawet duża witryna będzie miała jeden kosztowny sprzęt do równoważenia obciążenia nasłuchujący na kilku publicznych adresach IP.

Igor Ostrowski
źródło
Świetne pytania, szkoda, że ​​większość ludzi tego nie rozumie. Mam nadzieję, że ktoś będzie miał odpowiedź z pewnymi szczegółami. Być może moduł równoważenia obciążenia zasilany komputerowo Cisco o mocy 50 milionów dolarów.
OliverS,

Odpowiedzi:

9

Nie musi to być sprzęt, ale kompletny system, który został zaprojektowany do skalowania. Dotyczy to nie tylko sprzętu, ale przede wszystkim projektu aplikacji, projektu bazy danych (relacyjnej lub innej), sieci, pamięci i ich wzajemnego dopasowania.

Dobry punkt wyjścia dla Twojej ciekawości, aby dowiedzieć się, jak niektóre z dużych witryn mają wysoką skalowalność - zacznij tutaj i wysoką skalowalność w architekturze Wikimedia , Facebooku i Twitterze jako przykłady.

Jeśli chodzi o pytanie dotyczące DNS i pojedynczych adresów IP oraz rundy kręcenia, te typy witryn często wykorzystują równoważenie obciążenia jako metodę prezentacji pojedynczego adresu IP. Można to zrobić za pomocą specjalistycznych urządzeń równoważących obciążenie lub za pomocą oprogramowania działającego na serwerach ogólnego przeznaczenia. Przychodzące żądania do adresu IP zarządzanego przez moduł równoważenia obciążenia są następnie dystrybuowane na szeregu serwerów w sposób transparentny do użytkownika końcowego.

Aby uzyskać dobre wyjaśnienie na ten temat, w tym porównanie sprzętowych i programowych modułów równoważących obciążenie / serwerów proxy oraz ich porównanie z okrągłym systemem DNS, zapoznaj się z aplikacjami sieciowymi równoważenia obciążenia .

Sim
źródło
Dzięki, Sim. Przeczytałem większość tych artykułów, zanim zadałem pytanie, ale nie znalazłem konkretnej odpowiedzi. Czy naprawdę istnieje jeden sprzętowy moduł równoważenia obciążenia (lub pojedyncza maszyna z oprogramowaniem do równoważenia obciążenia), który jest uderzany za każdym razem, gdy ktoś przegląda stronę Wikipedii? A może jest gdzieś inna sztuczka, aby uniknąć wąskiego gardła?
Igor Ostrovsky
Nie jestem pewien, co robi teraz Wikipedia, ale ten artykuł z 2008 r. Mówi o nich za pomocą serii serwerów odwrotnego proxy Squid blogs.sun.com/WebScale/entry/scaling_wikipedia_with_lamp_7
Sim
2
Istnieją również adresy anycast, w których pingowany jest jeden adres IP, ale są one dystrybuowane (losowo \ arbitralnie \ celowo) do jednego z zakresu „prawdziwych” punktów końcowych. Nie jestem pewien, czy Wikipedia \ Google używa tego, ale jestem pewien, że niektóre z głównych serwerów DNS tak robią. Moje pingi do Wikipedii pasują do twojego (i jestem w Irlandii), więc podejrzewam, że mogą z tego korzystać.
Helvick
1
Anycast jest używany w zapytaniu DNS w celu uzyskania adresu IP najbliższego - wtedy moduł równoważenia obciążenia nasłuchuje na tym adresie IP i rozsyła żądania do serwerów zapasowych.
Andy Shellam
2
Wikipedia używa również backendu geoip pdns przez większość swojego równoważenia obciążenia. więcej informacji tutaj: wikitech.wikimedia.org/view/PowerDNS i tutaj: wikitech.wikimedia.org/view/DNS
uszkodzony serwer
3

Anycast może być również użyty do połączeń TCP, zakładając, że połączenia są krótkotrwałe, więc trasy nie zmieniają się w trakcie trwania połączenia. Jest to dobre założenie w przypadku połączeń HTTP (szczególnie jeśli połączenie: Keep-Alive jest ograniczone do krótkiego limitu czasu lub wyłączone).

Wiele CDN (CacheFly, MaxCDN i prawdopodobnie wiele innych) faktycznie używa anycast dla połączeń TCP (HTTP), a nie tylko DNS. Gdy rozpoznasz nazwę hosta w CacheFly, otrzymasz ten sam adres IP na całym świecie, zostanie on po prostu przekierowany do „najbliższego” klastra CacheFly. „Najbliższe” dotyczyłoby tutaj długości ścieżki i wskaźników BGP, co jest zwykle lepszym sposobem pomiaru opóźnienia sieci niż zwykła odległość geograficzna.

W przypadku Wikipedii konkretnie: http://www.datacenterknowledge.com/archives/2008/06/24/a-look-inside-wikipedias-infrastructure/

rmalayter
źródło
3

Najłatwiejszym sposobem sprawdzenia, czy adres IP używa Anycast, jest wykonanie traceroute z innej lokalizacji. Możesz spróbować wykonać następujące czynności: przejdź do traceroute.org, wybierz lokalizację i spróbuj wykonać traceroute na adres IP 8.8.8.8 (Google Public DNS, który używa anycast). Powinieneś być w stanie zobaczyć, że traceroute z serwera w Australii do 8.8.8.8 zostaje w Australii.

Zamiast pingować, spróbuj wyszukać nazwę hosta: np .: http://network-tools.com/default.asp?prog=dnsrec&host=profile.ak.fbcdn.net

Za tą nazwą zobaczysz listę adresów IP. Te adresy IP będą używane w trybie round-robin podczas pingowania serwera.

Rianto Wahyudi
źródło
Powiązane: serverfault.com/q/178319/87017
Pacerier
2

Igor, twoje pytanie jest świetne i podobnie jak wiele niewinnych pytań, istnieje wiele, wiele odpowiedzi, wszystkie na różnych poziomach szczegółowości.

Elementem sprzętowym jest serwer WWW. Oczywiście ;-)

Element sprzętowy to tak naprawdę klaster modułów równoważenia obciążenia, z których wszystkie są skonfigurowane do pobierania ze wspólnej pamięci, więc wszystkie są identycznie skonfigurowane z identycznym materiałem.

Sprzęt jest w rzeczywistości jednym z kilku klastrów równoważenia obciążenia, rozproszonym geograficznie, a ty zostałeś skierowany do najbliższego, decyzja podjęta przez serwer DNS.

Matt Simmons
źródło
1

W zeszłym roku Google opublikowało trochę swojej domowej architektury sprzętowej, co stanowi dobrą lekturę .

squillman
źródło
To ciekawa lektura, ale nie odpowiada na moje pytanie. Jestem szczególnie ciekawy, co to za sprzęt, który nasłuchuje na czterech publicznych adresach IP czterech Google i rozkłada obciążenie na tysiące serwerów?
Igor Ostrovsky
1

Pojedynczy adres IP niekoniecznie oznacza pojedynczy serwer: http://en.wikipedia.org/wiki/Anycast

Justin
źródło
1
Anycast to trudna konfiguracja, jeśli masz centralną synchronizację (np. Facebook). Działa naprawdę dobrze w przypadku np. Serwerów DNS, gdzie instancje nie wymagają dużej komunikacji, lub serwerów WWW ze statyczną zawartością.
1
Masz rację, że pojedynczy adres IP nie oznacza pojedynczego serwera, ale w zapytaniu DNS używana jest anycast, gdy nie przejmujesz się, kto odpowiada tak długo, jak go otrzymasz, a zatem jest użyteczny tylko w przypadku protokołu UDP, który DNS używa. W przypadku protokołu TCP (używanego w HTTP) musisz upewnić się, że serwer, który odpowiada, jest tym, o który dokładnie prosiłeś.
Andy Shellam
@AndyShellam, Artykuły en.wikipedia.org/wiki/Anycast#Details nanog.org/meetings/nanog37/presentations/matt.levine.pdf wydają się nie zgadzać z tobą ...
Pacerier
1

Większe strony używają razem kilku różnych technik. Wszystkie wymienione strony internetowe mają prawie w każdym kraju kilka serwerów. Na podstawie adresu IP osoby odwiedzającej stronę serwer DNS zwraca adres IP klastra, który jest najbliżej osoby odwiedzającej. Akamai zapewnia taką usługę (kliknij na zdjęcie na tej stronie, aby uzyskać więcej informacji.)

Te „klastry” w tym centrum danych składają się teraz z kilku różnych maszyn (serwer DB, serwer WWW, moduł równoważenia obciążenia itp.). W zależności od tego, co udostępniasz w swojej witrynie, możesz mieć jakieś serwery dla zawartości statycznej itp.

Raffael Luthiger
źródło
1

Wielkie witryny, takie jak Facebook czy Wikipedia, wykorzystują kilka różnych technologii w celu osiągnięcia skalowalności.

Jedną z tych technologii jest dns. Usługa Dns jest skonfigurowana do równoważenia obciążenia za pomocą okrągłego robina. Konfiguracja dns jest wystarczająco inteligentna, aby dowiedzieć się, skąd pochodzi Twoje żądanie i zwrócić adres najbliższej Ci witryny. Więc jeśli wykonasz wykop, zobaczysz wiele rekordów, ale jeśli wykonasz polecenie ping, zawsze otrzymasz ten sam adres.

Na stronie pierwszym trafionym sprzętem jest zwrotny serwer proxy lub pula modułu równoważenia obciążenia. Pule są skonfigurowane, aby wszystkie maszyny odpowiadały na ten sam adres IP, ale zwracały nowy adres IP w nagłówku sesji. Wszystkie dalsze żądania będą przechodzić przez ten sam węzeł.

Urządzenia równoważące obciążenia stosowane w dużych lokalizacjach nie są dużymi drogimi urządzeniami, są to serwery towarowe z systemem LVS. http://www.linuxvirtualserver.org/

użytkownik67823
źródło
0

Ogromne witryny, takie jak Google, prawie na pewno projektują własny sprzęt. Duże witryny prawdopodobnie używałyby przełącznika wielowarstwowego do równoważenia obciążenia połączeń z wieloma rzeczywistymi serwerami. http://en.wikipedia.org/wiki/Multilayer_switch

Chris S.
źródło