4 étapes pour migrer un serveur web sans interruption

par Korben -

Dans la nuit de mardi à mercredi, j’ai migré une vingtaine de sites web d’un serveur à un autre. N’ayant pas la main sur les noms de domaine de chacun de ces sites, je ne pouvais pas non plus débrancher en mode sauvage le serveur n°1 et dire aux propriétaires des sites: “Maintenant allez changer vos DNS”.

Le temps que ça se réplique, que tout le monde le fasse et compagnie, ça peut prendre une semaine complète. Une semaine où leur site aurait été plus ou moins inaccessible pour les internautes.

Alors, comment faire dans ce cas là ? Comment migrer du serveur A au serveur B sans aucune interruption ?

Voici mon secret de beauté : Rediriger tout le trafic du serveur A vers le serveur B. Et pour cela, on va utiliser iptables.

1/ Vérifiez bien que tout est OK sur le nouveau serveur. Si tout fonctionne bien et que vous êtes prêt à switcher, passez à l’étape 2.

2/ Autorisez votre ancien serveur à faire de l’IP Forwarding, c’est-à-dire rediriger les paquets vers l’au-delà d’ailleurs :

echo 1 >/proc/sys/net/ipv4/ip_forward

3/ Maintenant, toujours sur l’ancien serveur, dites à IPTables de rediriger tout ce qui rentre par le port 80, vers l’adresse IP de votre nouveau serveur (dans mon exemple c’est 123.123.123.123).

iptables -t nat -A PREROUTING -p tcp –dport 80 -j DNAT –to-destination 123.123.123.123

4/ Et enfin, toujours sur l’ancien serveur, dites à IPTables, de faire apparaitre les connexions vers le nouveau serveur, comme étant des connexions clients (internautes) et non pas en provenance de l’ancien serveur.

iptables -t nat -A POSTROUTING -p tcp -d 123.123.123.123 –dport 80 -j MASQUERADE

Et le tour est joué ! Tout votre trafic entrant par le port 80 du serveur A sera redirigé vers le serveur B. Si vous avez d’autres services sur d’autres ports à rediriger, faites la même chose en changeant le port dans les commandes.

Il ne vous reste plus qu’à faire vos changements DNS pour pouvoir à terme, couper définitivement le serveur A.

Ah et dernière choses, si vous vous merdez avec IPTables, voici les commandes à entrer pour le nettoyer de toutes règles.