Créer un “CDN” avec plusieurs hébergements dans le monde.

Créer un “CDN” avec plusieurs hébergements dans le monde.

Quentin C. 5 January 2011

Vous avez un site International hébergé sur un seul serveur avec des visiteurs du monde entier ?

Le problème est le suivant :  plus la donnée à transférer est loin , plus celle-ci va prendre du temps à transférer.(augmentation de latence)

Donc si vous êtes hébergé en Chine , les chinois surferont très rapidement mais des européens rameront pour charger des pages (chargement des pages supérieur à 10 secondes).

Il y a donc un système appelé le CDN (Content Delivery Network) qui est un ensemble d’hébergements mutualisé/serveurs qui délivrent le même contenu de façon totalement transparente.

Bon, je vais vous montrer une petite animation flash pour que cela soit bien clair :

Donc un visiteur sur votre site se connectera directement sur le serveur le plus proche de lui. Et si un serveur tombe(*) ,un serveur un peu plus loin prendra la charge.

Il y a donc une réparation de charge et un système de haute disponibilité qui se met en place avec l’utilisation du CDN.

Théorie:

J’ai longtemps cherché après des CDN tout faits par des boites d’hébergement, mais ceux-ci sont proposés pour des sommes folles.

Il faut compter environ 3000$/mois pour avoir un CDN avec 4-5 serveurs dans le monde.

Après avoir un peu tâtonné,  j’ai trouvé une solution qui permet  de créer soi même son réseau CDN pour environ 150-200€/an.

Cette solution qui m’est personnelle  fonctionne mais je ne pourrais pas affirmer qu’ elle soit applicable à des professionnels …

Donc, il faut savoir que quand on surfe sur un NDD par exemple “cdn.avis-planethoster.com” une demande au Nameserver est émise pour connaitre son IP.

N’ayant pas un gros budget , je vais vous montrer la mise en place sur deux serveurs hébergement différents, un au Canada et l’autre en Malaisie.

Comment ai-je mis cela en place?
Nous allons utiliser le CDN pour héberger nos images , java-script , css , .... mais pas le PHP & MYSQL.

J'ai donc laissé tout le sous domaine "www" sur mon serveur principal , et le sous domaine "cdn" sur les serveurs dans le monde.
Achetez des hébergements dans des continents différents et garez (Addon Domains) votre NDD dans les cpanel (ou autre panel)

Faites un sous domaine appelé cdn et placez toutes vos données non dynamiques dedans style JPG,JS,CSS …

Dans le site nous appellerons donc nos css via l’url :

J’en conviens , le domaine principal “www” restera hébergé au Canada , car les mysql sont assez compliqués à répliquer en temps réel.

1.Garer son NDD chez Everydns

Avec un compte chez everydns.net , on peut gérer très facilement ces enregistrements DNS avec un maximum de souplesse.

Je vais donc faire pointer mon domaine principal (avis-planethoster.com) vers Everydns avec ces NS (ns1.everydns.net, ns2.everydns.net, ns3.everydns.net, et ns4.everydns.net)


Il faut déjà savoir que ces NS sont situés un peu partout dans le monde et que si le premier ne répond pas , le second aura la requête.

Dans votre compte everydns.net , ajoutez votre NDD comme suit : Add new domain: avis-planethoster.com

Si vous avez bien configuré vos NS chez votre registar , vous devriez voir cette page :

Cela veut dire que votre NDD pointe  bien chez everydns et qu’ils ont défini par défaut une page (parked.everydns.net)!

2.Configurer simplement ces règles DNS chez Everydns

Nous allons dans un premier temps configurer notre NDD sur son serveur initial (à savoir celui de planethoster : 199.16.130.48 ; NS : ns1.pix-ouf.com & ns2.pix-ouf.com)


Donc nous allons rajouter 4 enregistrements DNS

avis-planethoster.com
A
199.16.130.48

Celle-ci permet de spécifier l’adresse IP de notre serveur.

avis-planethoster.com
NS
ns1.pix-ouf.com
avis-planethoster.com
NS
ns2.pix-ouf.com

D’utiliser nos serveurs NS hébergés toujours chez Planethoster

*.avis-planethoster.com
CNAME
avis-planethoster.com

Permet que tous les sous domaine utilisent les règles spécifiées au dessus.

Normalement votre site devrait tourner comme avant. (un serveur)

3.Configurer le sous domaine CDN sur deux serveurs

Étant donné que vous avez plusieurs hébergements , vous devriez donc avoir plusieurs NS différents.

Je vais utiliser deux serveurs, l’un chez Planethoster au Canada (ns1.pix-ouf.com) et un autre chez Shinjiru en Malaisie  (ns149.ip-asia.com) voir OVH

Je vais  rajouter deux enregistrements de type NS pour le sous domaine CDN

cdn.avis-planethoster.com
NS
ns1.pix-ouf.com
cdn.avis-planethoster.com
NS
ns149.ip-asia.com

Donc maintenant , si nous allons sur cdn.avis-planethoster.com nous avons une chance sur deux d’aller sur un serveur ou sur l’autre.

Il y a donc une réparation de charge aléatoire je vous l’accorde , il se peut qu’un malaisien se connecte sur le serveur au Canada et inversement.

Petite preuve avec just-ping.com

Petit test avec des Phproxy:

Analyse des DNS:

Maintenant je vous laisse imager faire cela avec une 15ène d’hébergement mutualisé ou serveurs !

Ici dans notre cas j’ai vraiment pris deux extrême, le canada qui ping bien en Europe, et la Malaisie ou internet est encore en 56K 😀

4.Configurer le sous domaine CDN pour que celui-ci redirige sur le serveur le plus proche

Dans everydns , je n’en ai pas parlé mais nous avons un champ appelé TTL,

Si nous diminuons le TTL , si le paquet va trop loin celui-ci sera supprimé et tentera le deuxième serveur qui je l’espère sera plus proche 😀
Il y a deux sortes de TTL :

-pour les routeurs (nombre de routeurs maximal de transit)

-Pour les DNS (temps pendant lequel l'information peut être conservée en cache)
Bon, finalement, la solution que j’envisageais et qui me semblait fonctionner s’avère en fin de compte  pas si bonne que ça ,car j’ai pensé en terme de routeur et non de DNS…

Je mettrai le TUTO  à jour quand j’aurai trouvé une astuce pour diminuer la valeur du TTL dans la trame IP et non le temps de mise en cache ou une solution DNS différente !

En attendant vous avez déjà une mise en place de deux serveurs en réparation de charge aléatoire!

Edit 7 janvier : Pas besoin de modifier le TTL ! testez vous même. (sa marche!)

4 thoughts on “Créer un “CDN” avec plusieurs hébergements dans le monde.

    1. Clairement c’est pas très compliqué mais souvent on croit que ça marche pas car les DNS sont souvent mis en cache et la propagations des DNS ne se fait pas très rapidement.Si tu test un Just-Ping et qu’il trouve un “Couldn’t resolve host” il te faudra bien 24heures avant que ça refonctionne chez eux.

Leave a Reply to Quentin Cancel reply

Your email address will not be published.