J'essaie de comprendre comment fonctionnent des sites gigantesques comme Facebook ou Wikipedia, pour ma curiosité intellectuelle. J'ai lu différentes techniques pour créer des sites évolutifs, mais je suis toujours perplexe sur un détail en particulier.
Ce qui me dérange, c’est qu’au final, le DNS mappera l’ensemble du domaine sur une seule adresse IP, voire sur quelques adresses IP dans le cas d’un DNS à tour de rôle.
Par exemple, wikipedia.org n’a qu’un seul enregistrement DNS de type A. Ainsi, les personnes de partout dans le monde qui visitent Wikipedia doivent envoyer une demande à l'adresse IP spécifiée dans le DNS.
Quel est le matériel qui écoute l'adresse IP d'un grand site et comment peut-il gérer toute la charge créée par les demandes des utilisateurs du monde entier?
Edit 1: Merci pour toutes les réponses! Anycast semble être une solution envisageable ... Quelqu'un connaît-il un moyen de vérifier si une adresse IP particulière est routée par anycast, afin que je puisse vérifier qu'il s'agit bien du truc utilisé en pratique par les grands sites?
Edit 2: Après plus de lecture sur le sujet, il apparaît que anycast n'est généralement pas utilisé pour le contenu Web dynamique. Anycast est généralement utilisé pour UDP (par exemple, les recherches DNS) ou parfois pour du contenu statique.
Une chose intéressante à noter est que Facebook utilise profile.ak.fbcdn.net pour héberger du contenu statique tel que des feuilles de style et des bibliothèques javascript. Chaque fois que je coche ce nom, je reçois une réponse d'une adresse IP différente. Cependant, je ne peux pas dire s'il s'agit d'un anycast en action ou d'une technique complètement différente.
Revenons à ma question initiale: pour autant que je sache, même un grand site aura un seul élément coûteux de matériel d’équilibrage de charge qui écoute sur sa poignée d’adresses IP publiques.
la source
Réponses:
Ce n’est pas forcément un élément matériel qui fait cela, mais un système complet conçu pour évoluer. Cela englobe non seulement le matériel, mais surtout la conception de l'application, la conception de la base de données (relationnelle ou autre), la mise en réseau, le stockage et leur interaction.
Votre curiosité est un bon point de départ pour découvrir l’ampleur des sites de grande envergure, tels que la haute évolutivité - Commencez ici et la scalabilité élevée sur l’architecture Wikimedia , comme Facebook et Twitter .
En ce qui concerne votre question sur le DNS, les adresses IP uniques et le va-et-vient, ces types de sites utilisent souvent l'équilibrage de la charge comme méthode de présentation d'une seule adresse IP. Cela peut être effectué soit par des équilibreurs de charge matérielle spécialisés, soit par des logiciels s'exécutant sur des serveurs à usage général. Les demandes entrantes à l'adresse IP gérée par l'équilibreur de charge sont ensuite réparties de manière transparente sur une série de serveurs vers l'utilisateur final.
Pour une bonne explication sur ce sujet, y compris une comparaison des équilibreurs de charge matérielle et logicielle / mandataires et leur comparaison avec le round robin DNS, lisez les applications Web d'équilibrage de charge .
la source
Anycast peut également être utilisé pour les connexions TCP, à condition que les connexions soient de courte durée et que les itinéraires ne changent pas pendant la durée de vie de la connexion. Ceci est une bonne hypothèse avec les connexions HTTP (surtout si Connection: Keep-Alive est maintenu pendant un court délai ou désactivé).
De nombreux CDN (CacheFly, MaxCDN et probablement de nombreux autres) utilisent réellement anycast pour les connexions TCP (HTTP), et pas uniquement DNS. Lorsque vous résolvez un nom d'hôte sur CacheFly, vous obtenez la même adresse IP dans le monde entier, elle est simplement routée vers le cluster CacheFly "le plus proche". "Le plus proche" serait ici en termes de longueur de chemin BGP et de métriques, ce qui est généralement un meilleur moyen de mesurer la latence du réseau que la simple distance géographique.
Dans le cas de Wikipedia en particulier: http://www.datacenterknowledge.com/archives/2008/06/24/a-look-inside-wikipedias-infrastructure/
la source
Le moyen le plus simple de vérifier si une adresse IP utilise Anycast consiste à effectuer un traceroute à partir d'un emplacement différent. Vous pouvez essayer les solutions suivantes: rendez-vous sur traceroute.org, choisissez un emplacement et essayez d'effectuer un traçage sur l'adresse IP 8.8.8.8 (DNS public Google qui utilise anycast). Vous devriez pouvoir voir ce traceroute du serveur en Australie à 8.8.8.8 rester en Australie.
Au lieu de ping, essayez de rechercher le nom d'hôte: par exemple: http://network-tools.com/default.asp?prog=dnsrec&host=profile.ak.fbcdn.net
Vous verrez la liste des adresses IP derrière ce nom. Ces adresses IP seront utilisées tour à tour lorsque vous envoyez une requête ping au serveur.
la source
Igor, votre question est excellente et, à l'instar de nombreuses questions innocentes, il existe de très nombreuses réponses, toutes à des niveaux de détail différents.
Le matériel est un serveur Web. Évidemment ;-)
Le composant matériel est en réalité un cluster d'équilibreurs de charge, tous configurés pour extraire du stockage partagé afin d'être configurés à l'identique avec un matériau identique.
Le matériel est en réalité l’un des nombreux groupes d’équilibreurs de charge, dispersés géographiquement, et vous avez été dirigé vers celui qui se trouve le plus près de chez vous, à savoir une décision prise par le serveur DNS.
la source
L'année dernière, Google a publié un peu d'architecture matérielle locale, ce qui en fait une bonne lecture .
la source
Une seule adresse IP ne signifie pas nécessairement un seul serveur: http://en.wikipedia.org/wiki/Anycast
la source
Les sites plus grands utilisent plusieurs techniques différentes ensemble. Les sites Web que vous avez mentionnés ont tous, dans presque tous les pays, plusieurs serveurs. Sur la base de l'adresse IP du visiteur du site Web, le serveur DNS renvoie l'adresse IP du cluster le plus proche du visiteur. Akamai fournit un tel service (cliquez sur l'image sur ce site pour plus d'informations.)
Ces "clusters" dans ce centre de données sont maintenant constitués de plusieurs machines différentes (serveur de base de données, serveur Web, équilibreur de charge, etc.). Selon ce que vous fournissez avec votre site Web, vous avez peut-être des serveurs pour le contenu statique, etc.
la source
Les sites massifs comme Facebook ou Wikipedia s'appuient sur différentes technologies pour parvenir à l'évolutivité.
Une de ces technologies est le DNS. Dns est configuré pour équilibrer la charge avec le tourniquet. La configuration DNS est suffisamment intelligente pour déterminer l’origine de votre demande et pour renvoyer l’adresse du site le plus proche de vous. Donc, si vous faites une fouille, vous verrez plusieurs enregistrements, mais si vous faites un ping, vous aurez toujours la même adresse.
Sur le site, le premier élément de matériel touché est un proxy inverse ou un pool d'équilibreur de charge. Les pools sont configurés de sorte que toutes les machines répondent à la même adresse IP mais renvoient une nouvelle adresse IP dans l'en-tête de session. Toutes les demandes ultérieures passeront par le même noeud.
Les équilibreurs de charge utilisés pour les grands sites ne sont pas des équipements coûteux et de grande taille, mais des serveurs standard utilisant LVS. http://www.linuxvirtualserver.org/
la source
Les sites massifs comme Google conçoivent presque certainement leur propre matériel. Les grands sites utiliseraient probablement un commutateur multicouche pour équilibrer la charge des connexions vers plusieurs serveurs réels. http://en.wikipedia.org/wiki/Multilayer_switch
la source