web-dev-qa-db-fra.com

Puis-je manipuler le protocole DNS pour héberger des sites Web sur plusieurs serveurs et diriger les utilisateurs vers le plus proche géographiquement?

Supposons que j'accueille un site Web très volumineux et populaire. Supposons également que j'ai plusieurs serveurs Web répartis dans le monde entier. Chaque serveur Web contenant des fichiers identiques.

Si je crée mon propre démon DNS, pourrait-il donner différents enregistrements en fonction du fournisseur d’accès demandant leur enregistrement, donnant ainsi à chaque utilisateur un accès direct à un serveur Web beaucoup plus proche de lui?

6
charlie

Oui, cela est possible à condition que votre démon DNS dispose des fonctionnalités lui permettant de fournir l'adresse IP du serveur Web la plus proche en fonction de la demande de l'adresse IP du client. Pas un déploiement de démon DNS typique, c'est sûr.

Vous avez trouvé deux liens sur la configuration de BIND pour accomplir ce que vous cherchez:

De nombreux réseaux de diffusion de contenu (CDN) tels qu'Akamai disposent de cette fonctionnalité. Ce qui les rend encore mieux, c'est qu'ils effectuent des contrôles de santé sur le service de destination. Cela garantit que le client sera dirigé vers un service disponible et offrant les meilleures performances.

2
user2320464

Si vous souhaitez diriger les utilisateurs vers le serveur le plus proche d'eux en utilisant uniquement le DNS, je vous recommande de configurer quelques VPS bon marché que vous pouvez utiliser pour héberger votre propre DNS dans différents emplacements géographiques.

La répétition alternée DNS n’est pas vraiment un excellent moyen d’équilibrer la charge en fonction de la géolocalisation, car si vous avez plusieurs enregistrements A avec des adresses IP différentes, le serveur DNS alterne simplement l’ordre des enregistrements d’adresses chaque fois qu’un serveur de noms est interrogé.

Par conséquent, un serveur DNS en Amérique du Nord peut résoudre votre enregistrement A sur votre serveur Web en Amérique du Nord, tandis que votre serveur DNS en Europe résout votre enregistrement A sur votre serveur Web en Europe. (Ces emplacements ne sont qu'un exemple. Il est essentiel que vos serveurs DNS résolvent vos enregistrements A sur votre serveur Web le plus proche de ce serveur DNS spécifique.)

En effet, un client doit utiliser le serveur DNS le plus proche de lui. Vous pouvez en savoir plus sur la façon dont un client choisit le serveur de noms le plus proche/le plus rapide. utiliser ici - https://superuser.com/questions/527116/how-does-my-browser-locate-the-nearest-dns-root-servers

Cela devrait vous donner le résultat souhaité en utilisant uniquement des serveurs DNS, mais il existe des services commerciaux d'équilibrage de charge qui seraient beaucoup plus élégants.

1
Analog

Pas besoin de manipuler le protocole DNS. Vous pouvez simplement ajouter plusieurs enregistrements A avec différentes adresses IP. Le serveur DNS renverra les différents enregistrements A dans un ordre aléatoire. Ainsi, vos utilisateurs seront répartis de manière aléatoire entre les différentes adresses IP.

0
nathangiesbrecht

Utilisez un DNS à tour de rôle ou un équilibreur de charge.

0
William Edwards