Come funzionano i CDN (Content Distribution Networks)?


37

Prendendo Akamai come CDN. Da quello che ho capito, quando un client richiede una pagina, la richiesta va al server centrale Akamai, che quindi a seconda della posizione del client, preleva un server edge Akamai e le successive richieste dal client vanno direttamente a questo server edge. La mia domanda è che:

Quando un client richiederebbe un sito Web (per nome), una volta che il DNS risolve il nome nell'indirizzo IP del server centrale Akamai e lo passa al client, il client si atterrà a questo indirizzo IP, quindi come possono essere abilitate le richieste successive andare direttamente all'indirizzo IP dei server periferici Akamai?

O è necessario che quando si utilizza la rete CDN, la stessa risoluzione DNS venga eseguita dal server CDN?

I biggie come Google, Amazon, Facebook hanno i propri server CDN o si affidano a provider CDN di terze parti come Akamai? Dì Google e Yahoo! entrambi usano Akamai CDN, quindi fa il contenuto di Yahoo! e Google risiedono sullo stesso server? Non rappresenta un potenziale problema di sicurezza?

Risposte:


27

Non devi semplicemente ospitare l'intero sito con la rete CDN, ma solo i tuoi contenuti .

Mi sono appena reso conto di aver risposto a una domanda simile qualche tempo fa: cosa fa akamaihd.net?

Flusso di richiesta datiImmagine di WikiMedia

Quindi i riferimenti del tuo sito http://akamai/myfile.ext. Questo richiederà myfile.extda akamai. akamaipuò quindi inviare un reindirizzamento HTTP al server dei contenuti effettivo.

Ora, quando l'ultimo passaggio viene memorizzato nella cache, ottimo, tutte le richieste future andranno al server di contenuti più vicino.

Come funziona?

Supponiamo che questo sito Web:

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

Richiedo questo sito Web dal mio server web. Il .htmlfile non è ospitato concdn . Né è il DNS del mio server web.

Richiesta iniziale

Quindi il mio browser ha ottenuto quel file HTML e ora lo analizza. Trova l'immagine di riferimento e nota che si trova in http://cdn/oliver.png. Richiede quel file.

Per fare ciò, è necessario trovare l'indirizzo IP di cdn. Nel nostro esempio, quell'indirizzo IP è 10.10.10.10.

Con quell'indirizzo IP, può connettersi al cdnserver e richiedere /oliver.png.

Posizione geografica

Ora cdncapisce, " quel ragazzo viene dalla Germania! ". Quindi, invece di inviarmi la mia fantastica immagine che volevo, mi invia un reindirizzamento HTTP che dice:

/oliver.png non è qui. È a10.10.33.33/oliver.png

Quindi chiederà il mio browser 10.10.33.33 (che si spera sia più vicino a me) per l'immagine.

Sul serio?

Non sto dicendo che funziona così TUTTE LE CDN, ma sarebbe un approccio.

È inoltre possibile implementare un demone DNS che restituisce risultati diversi per una ricerca di nomi a seconda della posizione di chiunque abbia inviato la query.
Ma dubito che questo sia fatto in pratica. Ma forse non riesco proprio a immaginare come configurarlo correttamente. Vedi la risposta di Fluffy per come potrebbe funzionare.

Chi gestisce i CDN?

La maggior parte degli attori globali ha la propria rete di distribuzione dei contenuti in un certo senso (o almeno così suppongo). Alcuni provider scaricano determinati servizi su CDN più grandi (come fa Microsoft con i download MSDN). E questo potrebbe in qualche modo toccare il tuo secondo argomento.

Considera questo, in MSDN Microsoft offre download di prodotti. Questi download sono quindi forniti da Akamai. Se riesci a determinare l'URL di quel download, puoi semplicemente scaricare il prodotto senza mai entrare in contatto con Microsoft.

È un problema di sicurezza? Non proprio, perché ciò che viene scaricato è ancora protetto (da un codice Product Key).

E gli altri dati?

Se i tuoi dati sono rilevanti per la sicurezza, non sono materiali CDN. Se non vuoi che qualcosa sia disponibile nel modo più ampio possibile, non inserirlo in un CDN.


Supponiamo che il sito sia somewebsite / file.txt . Supponiamo che Akamai DNS sia in uso. Quindi la prima richiesta del client va su qualche sito Web o la prima stessa richiesta va ad Akamai (perché in qualche modo il DNS utilizzato dal client sa che Akamai CDN è in uso)?
p2pnode,

E forse non capisco il reindirizzamento HTTP e ciò che sono in grado di ottenere, quindi la mia domanda rimane ancora: come fa il client a sapere come utilizzare l'indirizzo IP dei server periferici Akamai in modo che i server centrali Akamai non debbano entrare in scena a tutti ..
p2pnode,

@ p2pnode: ho ampliato un po 'la risposta. Spero che includa quello che ti stai chiedendo.
Der Hochstapler,

1
Non c'è un significativo impatto sulle prestazioni da questo? Invece di tutto il trasferimento di dati che avviene su un singolo flusso TCP, vengono utilizzati più flussi, più overhead dall'handshaking, ecc.
Akash

@Akash: Normalmente, non useresti un CDN per tutto , ma solo per singoli file di grandi dimensioni. Quindi, in pratica, questo non è un problema.
Der Hochstapler,

11

Un approccio abbastanza comune alla CDN consiste nell'utilizzare ciò che è noto come " anycast ". Come funziona è che i server distribuiti sono associati a DNS che rispondono a quel server come destinazione; ad esempio, potresti avere tre server in diverse strutture di hosting e i rispettivi DNS dichiarano che il loro indirizzo IP è quello canonico per il tuo server (chiamalo, diciamo, content.example.com). Ciascun DNS è configurato per avere lo stesso indirizzo IP globale, quindi ciascuna delle strutture dei server utilizza gli aggiornamenti BGP per fare in modo che vinca il percorso verso il server più vicino, quindi quando si esegue la ricerca di un nome content.example.com, il più veloce / il più vicino / la maggior parte dei DNS disponibili risponde alla richiesta con il suo server HTTP.

In questo modo, non sono necessari trucchi GeoIP e ti viene sempre offerto il contenuto da qualsiasi server è il più veloce per te - il che potrebbe o meno avere a che fare con la sua posizione fisica, a causa della natura eterogenea di Internet.

Comprendo che Akamai funziona almeno in parte in questo modo.


5

Sono disponibili anche CDN di tipo Pull Pull.

Amazon Cloudfront è in grado di utilizzare questa tecnica.

Configura un CNAME come media.example.com che punta al nome del server assegnato e lascia tutti i tuoi contenuti sul tuo server. Per le immagini e i contenuti che desideri vengano distribuiti tramite la rete CDN, utilizza media.example.com nell'URL. La richiesta va alla loro rete di server e se il contenuto non è disponibile, i loro server estraggono il contenuto dal tuo server. Una volta nel sistema, il contenuto viene distribuito alle server farm più vicine a dove esiste la domanda e rimane lì per il TTL assegnato. Il tuo server non vede più traffico sul contenuto memorizzato nella cache fino alla scadenza del TTL e Cloudfront deve aggiornarlo.


1

Akamai non funziona in questo modo. CDN diversi funzionano in modo diverso, ma Akamai in particolare non esegue alcuncast per i loro server Web.

Quando un utente a New York lo desidera www.acme.com, il server dei nomi di acme.com reindirizza ("delegati") a un server dei nomi Akamai. Il server dei nomi Akamai vede dove si trova la macchina che pone la domanda (in base al suo indirizzo IP) e restituisce l'indirizzo IP del server Akamai più vicino / migliore da servire www.acme.com.


Come funziona? Il server dei nomi Akamai riceve la richiesta direttamente dall'utente o dal server DNS dell'utente che delega al server dei nomi Akamai? Quindi verrà geolocalizzato in base alla posizione del server DNS, non dell'utente?
odiszapc,

0

Un ottimo riassunto di come funziona la CDN di Akamai può essere trovato qui

In breve:

  • I server CDN hanno un record CNAME che punta ai server DNS di Akamai.
  • Quindi la prima richiesta che un browser client invia a un server CDN ha il DNS cercato nel server DNS di Akamai, che risponde con l'indirizzo IP di un server Akamai vicino all'utente (chiamato "Edge Server")
  • Questi server Edge possono servire elementi statici da una cache locale, se è stato richiesto da un altro utente di recente, e non devono nemmeno tornare al server per ottenere una copia dell'asset.
  • Gli elementi mancanti o le pagine non memorizzabili vengono instradati attraverso la rete Akamai a un altro server perimetrale vicino all'host. Il server perimetrale invia le richieste effettive al sito host e le inoltra attraverso la rete al server perimetrale originale e da lì vengono restituite all'utente finale.
  • Poiché i server perimetrali comunicano internamente utilizzando i protocolli proprietari di Akamai e instradano i colli di bottiglia, il traffico può fluire molto più rapidamente rispetto alla rete Internet pubblica.

e come menzionato nel post di blog sopra elencato, alcune grandi aziende risolvono il DNS utilizzando i propri server, il che può annullare alcuni dei vantaggi dell'utilizzo di una rete CDN.


-2

CDN funziona su DNS Anycast. Anycast dns funziona su Anycast ip. IP Anycast: un indirizzo IP assegnato su più server. Quando la richiesta dell'utente per il risolutore DNS, quella query verrà gestita dal server più vicino e fornirà i dati dal server con la minima latenza.


In che modo ciò migliora le risposte esistenti, molto più complete?
Chenmunka,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.