Jak działają CDN (sieci dystrybucji treści)?

37

Biorąc Akamai jako CDN. Z tego, co rozumiem, gdy klient żąda strony, żądanie trafia do centralnego serwera Akamai, który następnie w zależności od lokalizacji klienta odbiera serwer brzegowy Akamai, a kolejne żądania od klienta trafiają bezpośrednio do tego serwera krawędzi. Moje pytanie brzmi:

Gdy klient zażąda strony internetowej (według nazwy), gdy DNS rozpozna nazwę na adres IP centralnego serwera Akamai i przekaże ją klientowi, klient zachowa ten adres IP, a następnie w jaki sposób kolejne żądania mogą przejść bezpośrednio na adres IP serwerów brzegowych Akamai?

Czy też konieczne jest, aby przy korzystaniu z CDN samo rozpoznawanie DNS było wykonywane przez serwer CDN?

Czy duże firmy, takie jak Google, Amazon, Facebook, mają własne serwery CDN, czy polegają na zewnętrznych dostawcach CDN, takich jak Akamai? Powiedz Google i Yahoo! oba używają sieci CDN Akamai, a następnie treści Yahoo! a Google znajduje się na tym samym serwerze? Czy nie stanowi to potencjalnego problemu z bezpieczeństwem?

p2pnode
źródło

Odpowiedzi:

27

Nie tylko hostujesz całą witrynę z CDN, tylko twoją treść .

Właśnie zdałem sobie sprawę, że jakiś czas temu odpowiedziałem na podobne pytanie: Co robi akamaihd.net?

Przepływ żądania danychZdjęcie WikiMedia

Więc twoja strona odwołuje się http://akamai/myfile.ext. Będzie to wymagać myfile.extod akamai. akamaimoże następnie wysłać przekierowanie HTTP do rzeczywistego serwera treści.

Teraz, gdy ostatni krok zostanie zapisany w pamięci podręcznej, świetnie, wszystkie przyszłe żądania trafią do najbliższego serwera treści.

Jak to działa?

Załóżmy, że ta strona internetowa:

<html>
  <body>
    <img src="http://cdn/oliver.png" />
  </body>
</html>

Proszę o tę stronę z własnego serwera. .htmlPlik jest nie obsługiwany z cdn. Nie ma też DNS mojego serwera.

Pierwsza prośba

Moja przeglądarka otrzymała ten plik HTML i teraz go analizuje. Znajduje przywoływany obraz i zauważa, że ​​jest on zlokalizowany http://cdn/oliver.png. Żąda tego pliku.

Aby to zrobić, musisz znaleźć adres IP cdn. W naszym przykładzie jest to adres IP 10.10.10.10.

Dzięki temu adresowi IP może łączyć się z cdnserwerem i żądać /oliver.png.

Lokalizacja geograficzna

Teraz cdnzdaje sobie sprawę, „ ten facet jest z Niemiec! ”. Zamiast przesyłać mi moje niesamowite zdjęcie, które chciałem, wysyła mi przekierowanie HTTP:

/oliver.png nie ma tutaj. To jest o10.10.33.33/oliver.png

Więc moja przeglądarka poprosi 10.10.33.33(co mam nadzieję, że jest mi bliżej) o zdjęcie.

Poważnie?

Nie twierdzę, że tak działają WSZYSTKIE sieci CDN, ale byłoby to jedno podejście.

Można również zaimplementować demona DNS, który zwraca różne wyniki wyszukiwania nazwy w zależności od lokalizacji osoby, która wysłała zapytanie.
Wątpię jednak, czy dzieje się to w praktyce. Ale może po prostu nie wyobrażam sobie, jak właściwie to skonfigurować. Zobacz odpowiedź puszystego, jak to może działać.

Kto prowadzi CDN?

Większość globalnych graczy ma swoją własną sieć dostarczania treści (przynajmniej tak przypuszczam). Niektórzy dostawcy po prostu przenoszą niektóre usługi na większe sieci CDN (podobnie jak Microsoft pobiera pliki MSDN). A to może jakoś dotknąć twojego drugiego tematu.

Rozważ to, w MSDN Microsoft oferuje pliki do pobrania. Pliki do pobrania są następnie dostarczane przez Akamai. Jeśli możesz określić adres URL tego pliku do pobrania, możesz po prostu pobrać produkt bez konieczności kontaktowania się z Microsoft.

Czy to problem bezpieczeństwa? Nie bardzo, ponieważ to, co jest pobierane, jest nadal chronione (kluczem produktu).

A co z innymi danymi?

Jeśli Twoje dane dotyczą bezpieczeństwa, to nie są to materiały CDN. Jeśli nie chcesz, aby coś było dostępne tak szeroko, jak to możliwe, nie umieszczaj go w sieci CDN.

Der Hochstapler
źródło
Powiedzmy, że strona to gdzieś / plik.txt . Powiedz, że używany jest serwer DNS Akamai. Czy zatem pierwsze żądanie klienta trafia do strony lub pierwsze samo żądanie trafia do Akamai (ponieważ w jakiś sposób DNS używany przez klienta wie, że CDN Akamai jest w użyciu)?
p2pnode
Być może nie rozumiem przekierowania HTTP i tego, co są w stanie osiągnąć, więc wciąż pozostaje moje pytanie, w jaki sposób klient wie, jak używać adresu IP serwerów brzegowych Akamai, aby centralne serwery Akamai nie musiały być widoczne wszystko ..
p2pnode
@ p2pnode: Rozszerzyłem nieco odpowiedź. Mam nadzieję, że obejmuje to, o czym się zastanawiasz.
Der Hochstapler
1
Czy nie ma z tego znaczącego spadku wydajności? Zamiast całego transferu danych w jednym strumieniu TCP, używanych jest wiele strumieni, więcej narzutów związanych z uzgadnianiem itp.
Akash
@Akash: Zwykle nie używasz CDN do wszystkiego , a tylko do pojedynczych, dużych plików. W praktyce nie stanowi to problemu.
Der Hochstapler
11

Dość powszechne podejście do CDN polega na użyciu tak zwanego „ anycast ”. Działa to tak, że Twoje serwery rozproszone są kolokowane przy użyciu DNS, które odpowiadają serwerowi docelowemu; na przykład, możesz mieć trzy serwery w różnych obiektach hostingowych, a ich odpowiednie DNSy twierdzą, że ich adres IP jest kanoniczny dla twojego serwera (powiedzmy to, powiedzmy content.example.com). Każdy z serwerów DNS jest skonfigurowany tak, aby miał ten sam globalny adres IP, a następnie każdy z serwerów korzysta z aktualizacji BGP, aby wygrać trasę do najbliższego serwera - tak więc przy wyszukiwaniu nazwy content.example.comnajszybszy / najbliższy / najbardziej dostępny DNS odpowiada na żądanie za pomocą swojego serwera HTTP.

W ten sposób żadne sztuczki GeoIP nie są konieczne, a zawartość jest zawsze obsługiwana przez ten, który serwer jest dla Ciebie najszybszy - co może, ale nie musi mieć nic wspólnego z jego fizyczną lokalizacją, ze względu na heterogeniczny charakter Internetu.

Rozumiem, że Akamai przynajmniej częściowo działa w ten sposób.

puszysty
źródło
5

Dostępne są również CDN typu Origin Pull.

Amazon Cloudfront może korzystać z tej techniki.

Skonfigurujesz CNAME, np. Media.example.com, który wskazuje na przypisaną nazwę serwera i pozostawia całą zawartość na serwerze. W przypadku obrazów i treści, które chcesz dostarczyć za pośrednictwem CDN, w adresie URL użyj media.example.com. Żądanie trafia do ich sieci serwerów, a jeśli treść nie jest dostępna, ich serwery pobierają zawartość z twojego serwera. Po wejściu do systemu zawartość jest dystrybuowana do farm serwerów znajdujących się najbliżej miejsca, w którym istnieje zapotrzebowanie i pozostaje tam dla przypisanego TTL. Twój serwer nie widzi już żadnego ruchu z pamięci podręcznej, dopóki nie wygaśnie TTL i Cloudfront musi go odświeżyć.

Fiasco Labs
źródło
1

Akamai nie działa w ten sposób. Różne sieci CDN działają inaczej, ale Akamai specjalnie nie wykonuje anycast dla swoich serwerów sieciowych.

Gdy użytkownik w Nowym Jorku chce www.acme.com, serwer nazw acme.com przekierowuje („deleguje”) na serwer nazw Akamai. Serwer nazw Akamai sprawdza, gdzie znajduje się maszyna, która zadaje pytanie (na podstawie jego adresu IP) i zwraca adres IP najbliższego / najlepszego serwera Akamai, który ma być obsługiwany www.acme.com.

igorlord
źródło
Jak to działa? Serwer nazw Akamai otrzymuje żądanie od użytkownika bezpośrednio lub od serwera DNS użytkownika, który deleguje na serwer nazw Akamai? Czy to będzie geolokalizowane według lokalizacji serwera DNS, a nie użytkownika?
odiszapc
0

Świetne podsumowanie działania CDN Akamai można znaleźć tutaj

W skrócie:

  • Serwery CDN mają rekord CNAME wskazujący na serwery DNS Akamai.
  • Tak więc pierwsze żądanie przeglądarki klienta skierowane do serwera CDN polega na tym, że DNS sprawdził serwer DNS Akamai, który odpowiada adresem IP serwera Akamai, który jest blisko użytkownika (zwanego „Edge Server”)
  • Te serwery Edge mogą obsługiwać elementy statyczne z lokalnej pamięci podręcznej, jeśli ostatnio zażądał tego inny użytkownik, i nawet nie muszą wracać na serwer, aby uzyskać kopię zasobu.
  • Brakujące elementy lub strony, których nie można buforować, są kierowane przez sieć Akamai na inny serwer brzegowy w pobliżu hosta. Ten serwer brzegowy wysyła rzeczywiste żądania do strony hosta i przekazuje je z powrotem przez sieć do oryginalnego serwera brzegowego, a stamtąd są zwracane do użytkownika końcowego.
  • Ponieważ serwery brzegowe komunikują się wewnętrznie za pomocą zastrzeżonych protokołów Akamai i kierują wokół wąskich gardeł, ruch może przepływać znacznie szybciej niż przez publiczny Internet.

i jak wspomniano w wyżej wymienionym poście na blogu, niektóre duże korporacje rozwiązują DNS za pomocą własnych serwerów, co może negować niektóre korzyści płynące z korzystania z CDN.

Brad Parks
źródło
-2

CDN działa na Anycast DNS. Anycast dns działa na Anycast ip. Anycast ip: przypisanie jednego adresu IP na wielu serwerach. Gdy żądanie użytkownika dotyczące usługi rozpoznawania nazw dns, zapytanie zostanie obsłużone przez najbliższy serwer i zapewni dane z serwera z najmniejszym opóźnieniem.

szyna abhimanyu
źródło
W jaki sposób poprawia to istniejące, o wiele pełniejsze odpowiedzi?
Chenmunka,