Aller au contenu

Que faire quand un serveur "tombe" ?


Sujets conseillés

Posté (modifié)

Bonjour à tous et à toutes,

Je suis webmaster d'un parc informatique composé d'une quinzaine de serveurs. Ces serveurs sont disposés en deux endroits distincts :

- Une dizaine (les serveurs primaires) sont dans un data center et branchés sur fibre optique. Bien qu'ils soient à plusieurs kilomètres d'où je suis, j'ai la main sur eux via un logiciel de prise en main à distance.

- Quatre serveurs (les serveurs secondaires) sont dans nos locaux et également branchés sur fibres optique

Quasiment tous les serveurs sont sous Windows Server 2003. Si la plupart sont des serveurs web, certains sont des serveurs de mails et d'autres des serveurs de streaming.

Mon problème est le suivant :

Parfois un ou plusieurs de mes serveurs primaires sont HS pour diverses raisons (coupure d'électricité, attaque DoS, "out of memory"...) et je dois alors basculer sur les serveurs secondaires le temps de réparer la panne sur les primaires. Le problème c'est, déjà que je ne me rends pas forcément compte de la panne (la plupart du temps, ce sont nos "clients" qui nous appellent en disant que leur site est HS. Ça la fout un peu mal :wacko: ), ensuite je dois migrer manuellement les bases de données des sites sur nos serveurs secondaires et enfin rediriger les visiteurs vers nos serveurs secondaires, le temps de la maintenance sur les serveurs primaires.

Je voudrais donc savoir si vous connaissiez une manière "automatique" (un logiciel, un script...) pour :

  1. Détecter en temps réel si le serveur fonctionne ou non
  2. Copier les différentes bases de données des serveurs primaires vers les secondaires
  3. Rediriger les visiteurs des serveurs primaires vers les secondaires le temps de régler la panne, puis, une fois la panne réglée, des serveurs secondaires vers les primaires

le tout le plus rapidement possible de façon à ce que ce soit le plus transparent possible pour les visiteurs.

Je sais que beaucoup de serveurs (à commencer par ceux de Google), pour répartir la charge, redirigent les visiteurs sur d'autres serveurs et ce en totale transparence; j'imagine que si ça existe (une procédure, un logiciel...) pour répartir la charge, ça doit exister si le serveur "tombe", non ?

Un grand merci par avance pour vos réponses.

Modifié par mems_wep
Posté

Je sais que beaucoup de serveurs (à commencer par ceux de Google), pour répartir la charge, redirigent les visiteurs sur d'autres serveurs et ce en totale transparence; j'imagine que si ça existe (une procédure, un logiciel...) pour répartir la charge, ça doit exister si le serveur "tombe", non ?

c'est du "load balancing", qui a pour but de répartir la charge de trafic d'un domaine sur différents serveurs.

-> http://fr.wikipedia.org/wiki/Load_balance

pour le script, je ne comprends pas. Si le serveur est HS, comment veut tu te connecter à la SQL du serveur ? Vu que le serveur est coupé...

cordialement,

Posté

Bonjour à tous et à toutes,

Je suis webmaster d'un parc informatique composé d'une quinzaine de serveurs. Ces serveurs sont disposés en deux endroits distincts :

- Une dizaine (les serveurs primaires) sont dans un data center et branchés sur fibre optique. Bien qu'ils soient à plusieurs kilomètres d'où je suis, j'ai la main sur eux via un logiciel de prise en main à distance.

- Quatre serveurs (les serveurs secondaires) sont dans nos locaux et également branchés sur fibres optique

Quasiment tous les serveurs sont sous Windows Server 2003. Si la plupart sont des serveurs web, certains sont des serveurs de mails et d'autres des serveurs de streaming.

Mon problème est le suivant :

Parfois un ou plusieurs de mes serveurs primaires sont HS pour diverses raisons (coupure d'électricité, attaque DoS, "out of memory"...) et je dois alors basculer sur les serveurs secondaires le temps de réparer la panne sur les primaires. Le problème c'est, déjà que je ne me rends pas forcément compte de la panne (la plupart du temps, ce sont nos "clients" qui nous appellent en disant que leur site est HS. Ça la fout un peu mal :wacko: ), ensuite je dois migrer manuellement les bases de données des sites sur nos serveurs secondaires et enfin rediriger les visiteurs vers nos serveurs secondaires, le temps de la maintenance sur les serveurs primaires.

Je voudrais donc savoir si vous connaissiez une manière "automatique" (un logiciel, un script...) pour :

  1. Détecter en temps réel si le serveur fonctionne ou non
  2. Copier les différentes bases de données des serveurs primaires vers les secondaires
  3. Rediriger les visiteurs des serveurs primaires vers les secondaires le temps de régler la panne, puis, une fois la panne réglée, des serveurs secondaires vers les primaires

le tout le plus rapidement possible de façon à ce que ce soit le plus transparent possible pour les visiteurs.

Je sais que beaucoup de serveurs (à commencer par ceux de Google), pour répartir la charge, redirigent les visiteurs sur d'autres serveurs et ce en totale transparence; j'imagine que si ça existe (une procédure, un logiciel...) pour répartir la charge, ça doit exister si le serveur "tombe", non ?

Un grand merci par avance pour vos réponses.

Salut !

En gros tu souhaites améliorer le taux de disponibilité de tes serveurs.

Pour le streaming je ne sais pas trop te conseiller, en revanche pour les serveurs web.

Voici quelques astuces générales, tout n'est peut-être pas applicable dans ton cas et certaines choses dépendant énormément de linfrastructure

Comment détecter la panne ?

via une tâche planifier tu peux éxecuter un script qui ping l'ip publique des noms de domaines ou les nom de domaines directement.

en cas de problème ça t'enverra un mail par exemple ou ça lancera une procédure de basculement.

Copier les différentes base de données

Le mieux pour ça est de faire une réplication des base de données sur les serveurs secondaires pour cela tu dois exploiter une ipfailover en tant que adresse du serveur de base de données, idéalement tu basculeras cette ipfailover sur les serveurs secondaires dès réception du mail signalant un dysfonctionnement. Évidemment cette solution sous entends le fait que c'est les serveurs primaires de base de données qui tombent en panne.

Pour tout ce qui est système de fichier tu peux utiliser synctoys qui va synchroniser les répertoires physique entre plusieurs serveur sous Windows 2003, sache que si tu utilise IIS tu peux aussi synchroniser les config IIS

Rediriger les visiteurs

il te faut basculer les ipfailover sur les serveurs opérationnels si tu souhaites assurer un taux de dispo maxi.

D'une manière générale on peut améliorer le taux de disponibilité des sites en utilisant les ipfailover , la réplication pour les DB , et la synchronisation des systèmes de fichiers

Posté

Ca m'inquiète toujours un peu quand dans le même message on a ce genre de question et "mes clients", mais bon...

Il y a beaucoup d'approches et de solutions, mais en gros il te faudrait:

- commencer par avoir une réplication de tes bases de données d'un serveur à l'autre (comme ça à tout moment le serveur de backup a déjà une copie de la base à jour).

- utiliser un reverse proxy ou load balancer qui va envoyer sur le bon serveur suivant la disponibilité (voir par exemple "Pound").

Sans la réplication, tu cours le risque de perdre des données si la machine principale plante méchamment (genre disques qui flanchent). Cependant, l'esclave de la réplication sera en lecture seule. Pour que l'esclave devienne le nouveau maître, il va falloir initier un "switchover", qui a généralement pour conséquence de perdre les données qui ne seraient pas encore arrivées sur le serveur esclave. Suivant le contexte, c'est plus ou moins "grave" et donc une mesure qui peut être automatisée ou pas. La solution exacte dépend du SGBD que tu utilises (et même dans ce cas, il peut y en avoir plusieurs, par exemple avec Postgres il y a des solutions internes avec du log-shipping binaire et des solutions externes via Slony-I par exemple).

Evidemment, tout ça suppose que toutes les données sont stockées en base, ce qui n'est pas forcément évident dans tous les cas (par exemple pour un serveur de mail, ou s'il y a de l'upload de fichiers par des utilisateurs...). Dans ce dernier cas, il faudra d'autres solutions pour maintenir la "copie".

Ensuite, tu te retrouves avec un nouveau SPF (single point of failure) qui est le reverse proxy, mais là tu peux envisager plusieurs solutions, qui vont d'en avoir deux au même endroit avec une solution type VRRP ou équivalent pour balancer de l'un à l'autre, ou du load-balancing DNS (mais là tu peux malgré tout te retrouver avec 50% d'indispo), ou du DNS qui s'adapte automatiquement. Tu peux d'ailleurs utiliser cette dernière solution directement plutôt qu'un reverse proxy, mais tu y perds en temps de basculement (à cause des caches DNS).

Bref, tout un art, il y a des tonnes de littérature sur le sujet.

Jacques.

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...