Quel est le matériel qui écoute sur l'adresse IP de Facebook ou de Wikipedia?

32

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.

Igor Ostrovsky
la source
Bonnes questions, dommage que la plupart des gens ne le comprennent pas. J'espère que quelqu'un aura une réponse avec quelques détails. Peut-être environ 50 millions de dollars d'équilibreur de charge optimisé par l'informatique quantique de Cisco.
OliverS

Réponses:

9

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 .

Sim
la source
Merci Sim J'ai lu la plupart de ces articles avant de poser ma question, mais je n'ai pas trouvé de réponse concrète. Donc, il y a vraiment un seul équilibreur de charge matérielle (ou une seule machine exécutant un logiciel d'équilibrage de charge) qui frappe chaque fois qu'une personne consulte une page Wikipedia? Ou, y a-t-il un autre truc quelque part pour éviter le goulot d'étranglement?
Igor Ostrovsky le
Je ne suis pas sûr de ce que Wikipedia fait actuellement, mais cet article de 2008 en parle à l'aide d'une série de serveurs proxy inversés Squid blogs.sun.com/WebScale/entry/scaling_wikipedia_with_lamp_7
Sim
2
Il existe également des adresses anycast dans lesquelles vous envoyez une adresse IP à une seule adresse IP, mais elles sont distribuées (de manière aléatoire \ arbitrairement \ intentionnellement) vers l'un d'une plage de points d'extrémité "réels". Je ne sais pas si Wikipedia \ Google l'utilise, mais je suis sûr que certains serveurs DNS racine le font. Mes pings sur Wikipedia correspondent aux vôtres (et je suis en Irlande), alors je suppose qu'ils l'utilisent peut-être.
Helvick
1
Anycast est utilisé dans la requête DNS pour obtenir l'adresse IP la plus proche de chez vous - puis un équilibreur de charge écoute cette adresse IP et distribue les demandes aux serveurs de sauvegarde.
Andy Shellam le
2
Il arrive également que Wikipedia utilise le backend geoip de pdns pour une grande partie de leur équilibrage de charge. plus d'infos ici: wikitech.wikimedia.org/view/PowerDNS et ici: wikitech.wikimedia.org/view/DNS
faultyserver
3

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/

rmalayter
la source
3

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.

Rianto Wahyudi
la source
Related: serverfault.com/q/178319/87017
Pacerier
2

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.

Matt Simmons
la source
1

L'année dernière, Google a publié un peu d'architecture matérielle locale, ce qui en fait une bonne lecture .

écailleur
la source
C'est une lecture intéressante, mais cela ne répond pas à ma question particulière. Je suis particulièrement curieux de savoir quel type de matériel écoute les quatre adresses IP publiques de Google et répartit la charge entre des milliers de serveurs.
Igor Ostrovsky le
1

Une seule adresse IP ne signifie pas nécessairement un seul serveur: http://en.wikipedia.org/wiki/Anycast

Justin
la source
1
Anycast est une configuration difficile à maintenir si vous avez une synchronisation centrale (comme Facebook). Cela fonctionne très bien, par exemple, pour les serveurs DNS, où les instances n’ont pas besoin de beaucoup de communication, ou les serveurs Web à contenu statique.
1
Vous avez raison de dire qu'une adresse IP unique ne signifie pas un serveur unique, mais anycast est utilisé dans la requête DNS lorsque vous ne vous inquiétez pas de répondre tant que vous en recevez une, ce qui ne sert donc qu'avec le protocole UDP qui DNS utilise. Avec TCP (utilisé dans HTTP), vous devez vous assurer que le serveur qui répond est celui que vous avez spécifiquement demandé.
Andy Shellam
@AndyShellam, Les articles en.wikipedia.org/wiki/Anycast#Details nanog.org/meetings/nanog37/presentations/matt.levine.pdf semble ne pas être d'accord avec vous ...
Pacerier
1

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.

Raffael Luthiger
la source
1

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/

utilisateur67823
la source
0

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

Chris S
la source