Si vous aviez prévu votre opération depuis longtemps, vous aviez certainement "abaissé" les TTL (i.e. Time To Live), à 10 minutes par exemple, qui permettent d'indiquer aux différents équipements internets combien de temps ils doivent garder en cache la correspondance DNS<=>IP récupérée depuis le serveur DNS primaire.

Que vous ayez prévu ou pas de baisser les TTL, certains (vieux) équipements ne suivent pas forcéments à la lettre ce paramétrage, et alors c'est le drame, tout une partie de vos utilisateurs accèdent toujours à l'adresse IP de l'ancien serveur pendant un peu plus longtemps.

Voici une technique que je mets en place pour pallier à ce problème :

  • dupliquer / (ré-)installer le site sur le nouveau serveur
  • tester le nouveau serveur en mettant la correspondance DNS <=> IP dans votre fichier etc/hosts de votre ordinateur personnelle (portable,...) temporairement
  • une fois le test ok, modifier les DNS chez votre registrar/serveurs dns en migrant le DNS vers la nouvelle IP
  • sur l'ancien serveur, modifier la configuration apache pour que le serveur apache fasse proxy vers le nouveau serveur apache
  • ajouter la même ligne que vous aviez précédemment mise dans votre etc/hosts perso dans celui de l'ancien serveur
  • remplacer la directive DocumentRoot de votre virtual host de l'ancien serveur par ces lignes
ProxyPass / http://mon.domaine.com/
ProxyPassReverse / http://mon.domaine.com/
Header add Old-Server yes
  • redémarrer votre ancien serveur apache

Le principe est simple : tant que l'équipement internet utilisé par l'internaute n'a pas mis à jour son cache, il pointera toujours sur l'ancienne IP, mais ce serveur fera proxy vers le nouveau serveur pour servir exactement le même contenu et surtout, si vous avez une base de données derrière votre site internet, ira mettre à jour la nouvelle base de données (pas besoin de faire une seconde migration ! Lorsque l'équipement utilisé par l'internaute sera à jour il pointera directement sur l'adresse IP du nouveau serveur et ne passera donc plus par le proxy.
Si vous utilisez Firefox, vous pourrez par exemple vous servir du plugin Firebug pour vérifier que le header "Old-Server: yes" n'est plus transmis, car tant qu'il est transmis, vous pointez sur l'ancien serveur.

Comment savoir quand je pourrais désinstaller / supprimer l'ancien serveur ?

Il vous suffira de regarder dans les logs de l'ancien serveur web, si vous site internet est très utilisé / populaire, vous allez pouvoir observer une baisse significative des logs à un moment donné. Lorsque plus aucune ligne de log n'apparaîtra depuis plusieurs heures/jours, vous pourrez sereinement supprimer cet ancien serveur.

Et vous, quelles sont vos pratiques ? Il s'agit d'une "bidouille" pour être plus serein, je suis sûr que vous en avez d'autres !