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.
źródło
Odpowiedzi:
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 .
źródło
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/
źródło
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.
źródło
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.
źródło
W zeszłym roku Google opublikowało trochę swojej domowej architektury sprzętowej, co stanowi dobrą lekturę .
źródło
Pojedynczy adres IP niekoniecznie oznacza pojedynczy serwer: http://en.wikipedia.org/wiki/Anycast
źródło
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.
źródło
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/
źródło
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
źródło