Comment fonctionnent les réseaux de distribution de contenu (CDN)?

37

Prenant Akamai en CDN. D'après ce que j'ai compris, lorsqu'un client demande une page, la demande est envoyée au serveur central Akamai, qui en fonction de son emplacement, sélectionne un serveur de périphérie Akamai. Les demandes ultérieures des clients sont directement adressées à ce serveur de périphérie. Ma question est la suivante:

Lorsqu'un client demande un site Web (par nom), une fois que le DNS a résolu le nom en adresse IP du serveur central Akamai et l'a transmis au client, le client conservera cette adresse IP. accéder directement à l'adresse IP des serveurs de périphérie Akamai?

Ou bien est-il nécessaire que lorsque le CDN est utilisé, la résolution DNS elle-même soit effectuée par le serveur CDN?

Les grandes sociétés telles que Google, Amazon et Facebook ont-elles leur propre serveur CDN ou font-elles appel à des fournisseurs CDN tiers tels qu'Akamai? Dites Google et Yahoo! Les deux utilisent les CDN Akamai, puis le contenu de Yahoo! et Google réside sur le même serveur? Cela ne pose-t-il pas un problème de sécurité potentiel?

p2pnode
la source

Réponses:

27

Vous n'hébergez pas simplement le site entier avec le CDN, mais simplement votre contenu .

Je viens de me rendre compte que j'avais déjà répondu à une question similaire: Que fait akamaihd.net?

Flux de demande de donnéesImage de WikiMedia

Donc, vos références de site http://akamai/myfile.ext. Cela demandera myfile.extà akamai. akamaipeut ensuite envoyer une redirection HTTP au serveur de contenu actuel.

Désormais, lorsque cette dernière étape sera mise en cache, tant mieux, toutes les futures demandes iront au serveur de contenu le plus proche.

Comment ça marche?

Supposons ce site:

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

Je demande ce site Web à partir de mon propre serveur Web. Le .htmlfichier n'est pas hébergé avec cdn. Le DNS de mon serveur Web non plus.

Demande initiale

Donc, mon navigateur a obtenu ce fichier HTML et l’analyse maintenant. Il trouve l'image référencée et note son emplacement http://cdn/oliver.png. Il demande ce fichier.

Pour ce faire, il faut trouver l'adresse IP de cdn. Dans notre exemple, cette adresse IP est 10.10.10.10.

Avec cette adresse IP, il peut se connecter au cdnserveur et demander /oliver.png.

Emplacement géographique

Réalise maintenant cdn: " Ce mec est allemand! ". Donc au lieu de m'envoyer la superbe photo que je voulais, il m'envoie une redirection HTTP en disant:

/oliver.png n'est pas ici. C'est à10.10.33.33/oliver.png

Donc, mon navigateur va demander 10.10.33.33 la photo (ce qui est probablement plus proche de moi).

Sérieusement?

Je ne dis pas que c'est ainsi que TOUTES LES CDN fonctionnent, mais ce serait une approche.

Vous pouvez également implémenter un démon DNS qui renvoie des résultats différents pour une recherche de nom en fonction de l'emplacement de l'auteur de la requête.
Mais je doute que cela se fasse dans la pratique. Mais peut-être que je ne peux tout simplement pas imaginer comment régler cela correctement. Voir la réponse de Fluffy pour savoir comment cela pourrait fonctionner.

Qui gère les CDN?

La plupart des acteurs mondiaux ont en quelque sorte leur propre réseau de diffusion de contenu. Certains fournisseurs délèguent simplement certains services à des CDN plus volumineux (comme Microsoft le fait avec les téléchargements MSDN). Et cela pourrait en quelque sorte toucher votre deuxième sujet.

Considérez cela, dans le MSDN, Microsoft propose des téléchargements de produits. Ces téléchargements sont ensuite fournis par Akamai. Si vous pouvez déterminer l'URL de ce téléchargement, vous pouvez simplement télécharger le produit sans jamais contacter Microsoft.

Est-ce un problème de sécurité? Pas vraiment, car ce qui est téléchargé est toujours protégé (par une clé de produit).

Mais qu'en est-il des autres données?

Si vos données sont pertinentes pour la sécurité, il ne s'agit pas d'un contenu CDN. Si vous ne voulez pas que quelque chose soit disponible aussi largement que possible, ne le mettez pas dans un CDN.

Der Hochstapler
la source
Supposons que le site est somewebsite / file.txt . Disons qu'Akamai DNS est utilisé. La première demande du client va-t-elle sur un site Web ou la première demande elle-même va-t-elle à Akamai (car le DNS utilisé par le client sait que le CDN Akamai est en cours d'utilisation)?
p2pnode
Et peut-être que je ne comprends pas la redirection HTTP et ce qu’ils sont capables de réaliser, ma question reste donc: comment le client sait-il utiliser l’adresse IP des serveurs de périphérie Akamai, de sorte que les serveurs centraux d’Akamai ne doivent pas entrer en image? tous ..
p2pnode
@ p2pnode: J'ai développé un peu la réponse. Espérons que cela inclut ce que vous vous demandez.
Der Hochstapler
1
N'est-ce pas là une performance significative? Au lieu de tous les transferts de données qui se font sur un seul flux TCP, plusieurs flux sont utilisés, ce qui entraîne davantage de temps système, etc.
Akash
@ Akash: Normalement, vous n'utiliseriez pas un CDN pour tout , mais uniquement pour des fichiers individuels volumineux. Donc, dans la pratique, ce n’est pas un problème.
Der Hochstapler
11

Une approche assez commune de CDN consiste à utiliser ce que l'on appelle " anycast ". La façon dont cela fonctionne est que vos serveurs distribués sont co-localisés avec des DNS qui répondent avec ce serveur comme destination; Par exemple, vous pouvez avoir trois serveurs dans différentes installations d'hébergement et leurs DNS respectifs affirment tous que leur adresse IP est l'adresse canonique de votre serveur (appelez-la, par exemple content.example.com). Les DNS sont chacun configurés pour avoir la même adresse IP globale, puis chacune des installations du serveur utilise les mises à jour BGP pour faire en sorte que la route vers le serveur le plus proche l'emporte. Ainsi, lorsque vous effectuez une recherche de nom content.example.com, le plus rapide / le plus proche / le DNS le plus disponible répond à la demande avec son serveur HTTP.

De cette manière, aucune astuce GeoIP n'est nécessaire, et le contenu le plus rapide vous sert toujours, quel que soit le serveur choisi - ce qui peut avoir un lien ou non avec son emplacement physique, en raison de la nature hétérogène d'Internet.

Je crois comprendre qu'Akamai fonctionne au moins partiellement de cette manière.

duveteux
la source
5

Des CDN de type Origin Pull sont également disponibles.

Amazon Cloudfront est capable d'utiliser cette technique.

Vous configurez un fichier CNAME tel que media.example.com qui pointe vers le nom du serveur qui lui est attribué et laisse tout votre contenu sur votre serveur. Pour les images et le contenu que vous souhaitez diffuser via le CDN, utilisez media.example.com dans l'URL. La demande est envoyée sur le réseau de leur serveur et si le contenu n'est pas disponible, leurs serveurs extraient le contenu de votre serveur. Une fois dans le système, le contenu est distribué aux batteries de serveurs situées le plus près de l'endroit où la demande existe et y reste pour la durée de vie attribuée. Votre serveur ne voit plus aucun trafic sur le contenu mis en cache jusqu'à l'expiration de la durée de vie et à l'actualisation de Cloudfront.

Fiasco Labs
la source
1

Akamai ne fonctionne pas de cette façon. Différents CDN fonctionnent différemment, mais Akamai n'effectue pas de anycast spécifiquement pour leurs serveurs Web.

Lorsqu'un utilisateur à New York le souhaite www.acme.com, le serveur de noms d'acme.com redirige ("délégués") vers un serveur de noms Akamai. Le serveur de noms Akamai voit où se trouve la machine qui pose la question (en fonction de son adresse IP) et renvoie l'adresse IP du meilleur serveur Akamai à servir www.acme.com.

igorlord
la source
Comment ça marche? Le serveur de noms Akamai reçoit la demande de l'utilisateur directement ou directement du serveur DNS de l'utilisateur qui délègue au serveur de noms Akamai? Donc, il sera géolocalisé en fonction de l'emplacement du serveur DNS, pas celui de l'utilisateur?
Odiszapc
0

Un grand résumé de la façon dont les travaux CDN d'Akamai peuvent être trouvés ici

En bref:

  • Les serveurs CDN ont un enregistrement CNAME qui pointe vers les serveurs DNS Akamai.
  • Ainsi, lors de la première demande adressée par le navigateur d'un client à un serveur CDN, son DNS est interrogé sur le serveur DNS d'Akamai, qui répond avec l'adresse IP d'un serveur Akamai proche de l'utilisateur (appelé "serveurs Edge").
  • Ces serveurs Edge peuvent servir des éléments statiques à partir d'un cache local, si cela a été demandé récemment par un autre utilisateur, et il n'est même pas nécessaire de revenir sur votre serveur pour obtenir une copie de l'actif.
  • Les éléments manquants ou les pages non cachables sont routés via le réseau Akamai vers un autre serveur Edge situé à proximité de l'hôte. Ce serveur de périphérie envoie les requêtes réelles au site hôte et les renvoie au serveur de périphérie d'origine via le réseau. De là, elles sont renvoyées à l'utilisateur final.
  • Étant donné que les serveurs de périphérie communiquent en interne à l'aide des protocoles exclusifs d'Akamai et acheminent des goulots d'étranglement, le trafic peut circuler beaucoup plus rapidement que sur Internet.

et comme mentionné dans l'article de blog mentionné ci-dessus, certaines grandes entreprises résolvent le DNS en utilisant leurs propres serveurs, ce qui peut réduire à néant certains avantages liés à l'utilisation d'un CDN.

Brad Parks
la source
-2

CDN fonctionne sur Anycast DNS. Anycast dns fonctionne sur Anycast ip. Anycast ip: Une adresse IP attribuée à plusieurs serveurs. Lorsque l'utilisateur demande le résolveur DNS, cette requête est gérée par le serveur le plus proche et fournit les données du serveur avec le moins de latence.

rail d'abhimanyu
la source
En quoi cela améliore-t-il les réponses existantes, beaucoup plus complètes?
Chenmunka