|
Proteus Private Cloud
Create from : 7/10/2012
|
Update from : 7/10/2012
|
By : Proteus
|
Seen : 1060
|
Comment(s) : 8
|
|
Mardi 9 Juillet à 10:30 le processeur d'un de mes serveurs est tombé en panne. La panne aurait pu passer inaperçue, si elle n'avait pas impliqué le serveur SQL. Cela étant dit, cette panne a mis en évidence un vrai problème disponibilité du réseau. Le but étant d'apprendre de ces erreurs je vous propose de détailler un peu ce qu'il s'est passé et surtout ce que je viens de mettre en place pour éviter ce genre de problème à l'avenir. L'architecture du réseau Avant ce crash, le serveur SQL était une machine physique, elle assumait 3 instances de SQL pour fournir aux deux serveurs WEB (Alpha pour la production, Vector pour l'homologation) les environnements nécessaire au site web. La dernière instance étant la base de données pour le serveur TFS. La Panne Comme je le disais un peu plus haut. Malgré la possibilité d'effectuer un redémarrage manuel à distance en utilisant le Mindstorm dans l'armoire. Le robot a été incapable de redémarrer le serveur. Apres 5 tentatives je reçois un message sur mon téléphone pour m'informer que le serveur SQL est HS. Et là, c'est le drame. Les deux serveurs WEB sont plantés ainsi que le serveur TFS. Après check du serveur c’est le processeur qui est mis en cause. Malgré l'installation d'une nouvelle carte mère et d'un nouveau processeur, Windows n’a pas été capable de redémarrer. Pas grave, ce sera l'occasion de tester en directe le plan de sauvegarde du serveur SQL. A cette date, mon réseau était monté de la façon suivante.
L'évolution Pour ressortir quelque chose de constructif de cette panne, je décide de revoir complètement le mode de fonctionnement du réseau. Au lieu d’installer SQL en directement sur le serveur Windows fraîchement installé, j’ai créé une nouvelle machine virtuelle sur laquelle j’ai installé SQL et ces fameuses 3 instances. Cette Machine Virtuelle vient donc s’ajouter aux deux existantes qui stockent les environnements de production et d’homologation avec les serveurs IIS. Matériellement mon réseau est donc équipé d’un deuxième serveur de 8Go de mémoire Vive. Le premier reçoit le nom de Cluster1 et le second Cluster2. J’ai déployé sur les deux machines les 3 serveurs virtuels. Toutes les 30 secondes le serveur de domaine demande au Cluster1 de donner son état. Si au bout d’une minute le Cluster n’a pas répondu. Le serveur de domaine tente la procédure de redémarrage manuel en s’appuyant sur Mindstorm. Au bout de 5 tentatives, il identifie le serveur comme étant HS et démarre le Cluster2. Au démarrage du Cluster2 la première action est de récupérer les machines virtuelles sauvegardées sur un autre serveur (Zeta) la veille (tous les jours a 3 heures du matin) une fois récupérées, il boot les 3 VM et notifie le serveur de domaine de son état. Dès lors le serveur de domaine route les paquets du Cluster1 vers le Cluster2. L’interruption de service est de 7 minutes. Coté site Web et TFS la seule perte résident dans les modifications de la journée.
Reste à faire ? C’est bien beau mais que reste-t-il à faire pour avoir un système complètement « Sécurisé »
Je suis bien conscient qu’avoir une telle architecture pour un particulier relève de la folie furieuse. Qu’installer mon site Web sur une plateforme Azure aurait permis de laisser d’autres se charger de cette problématique de haute disponibilité. Mais ca aurai été moins drôle ! En tout cas si vous souhaitez le code source de l’automate de « Load-Balancing », « Boot des VM » ou autres informations complémentaires n’hésitez pas. |
||||
Comment from Arthur
|
|
Énorme ! | ||||
| Create from : 7/11/2012 | Adress Ip : 90.84.144.146 | E-Mail : arthur89100@hotmail.com | Web Site : none | ||
Comment from Offirmo
|
|
+1 pour l'utilisation de machines virtuelles -1 pour les 7 minutes d'indisponibilité ;-) Il faudrait que tous les étages soient redondés à chaud avec load-balancing automatique : là ce serait ultime ! Y. |
||||
| Create from : 7/11/2012 | Adress Ip : 145.248.195.1 | E-Mail : offirmo.net@gmail.com | Web Site : | ||
Comment from Proteus
![]() |
lol :) 7 minutes je trouvais ca plutot pas trop mal ^^ |
||||
| Create from : 7/13/2012 | Adress Ip : 145.248.195.1 | E-Mail : salah.amer@proteus-groupe.com | Web Site : http://www.proteus-groupe.com | ||
Comment from alanis
|
|
maintenant que ton site est sur azure tu trouves que c'est un peu un constat d'echec ? |
||||
| Create from : 7/26/2012 | Adress Ip : 89.157.145.120 | E-Mail : alanis@msn.com | Web Site : none | ||
Comment from Proteus
![]() |
Un constat d'echec serai si je n'avais rien tiré de tout ca. Hors, le vrai constat est le suivant. Quand on est un particulier, il y trop de point fragile a securiser pour ne pas avoir de defaillance de son systeme. Au depart j'ai eu une panne d'un serveur, j'ai corrigé en mettant en place un systeme de Cluster, ensuite il y' a eu la coupure de courant, corrigé en mettant des onduleurs, demain mon FAI decide d'avoir une panne, et la la contremesure c'est de prendre une deuxieme ligne.... Tu vois un peu ou ca nous mene tout ca. L'avantage c'est que maintenant j'ai une bonne vision de ce que mette en place les fournisseurs de service pour heberger ton site web dans de bonne conditions :) Je ne confie pas non plus tout au Cloud, 3/4 des services restent chez moi. Le cloud sera juste une passerelle. Meme si oui effectivement je lui confie la gestion du blog :) |
||||
| Create from : 7/26/2012 | Adress Ip : 89.157.145.120 | E-Mail : salah.amer@proteus-groupe.com | Web Site : None | ||
Comment from Bob
|
|
Bonjour, Tout d'abord bravo pour ce blog, trés instructif. J'aurai une tite question, quand tu parles de "Au démarrage du Cluster2 la première action est de récupérer les machines virtuelles sauvegardées sur un autre serveur (Zeta) la veille (tous les jours a 3 heures du matin)" Pourrais tu m'en dire un peu plus? Tu les sauvegarde à chaud les vm? Si oui, comment oO?
La seule chose gratos que j'ai réussi à faire et qui fonctionne c'est d'éteindre mes machines avec un script power shell, lancer une copie du .vhd avec cobian et de relancer le démarrage des vm.. D'ailleurs si tu pouvais poster le code source de ton script "boot vm" histoire que j'en apprene un peu je ne serais pas contre! Merci bien en tout cas.
|
||||
| Create from : 8/20/2012 | Adress Ip : 90.57.199.134 | E-Mail : lachartre1989@yahoo.fr | Web Site : | ||
Comment from Proteus
![]() |
Bonjour Bob, Merci pour ton message. Comme tu l'as compris la sauvegarde a chaud n'est effectivement pas possible, à 03:00 AM, le Cluster envoie un signal au VM pour qu'elle s'éteigne, il s'agit la d'un simple ordre passer en TCP et interprétée par chacune d'entre elle pour effectuer l'extinction. Une fois l'extinction on peu procéder a la sauvegarde. Lorsque la sauvegarde est effectuée. Zeta envoie un signal pour lui donner le feu vert et rallumer les VM. Tu utilises un script power Shell et moi une application c# mais dans l'idée les procédures sont sensiblement les mêmes. En revanche j'essaierai de te nettoyer le code C# et de te le mettre a disposition ce week end si cela t'intéresse. Merci encore pour ton message |
||||
| Create from : 8/24/2012 | Adress Ip : 145.248.195.1 | E-Mail : salah.amer@proteus-groupe.com | Web Site : http://www.proteus-groupe.com | ||
Comment from Mick
|
|
je confirme bob jolie site, en revanche je veux bien le code qui te permet de lancer les vm's. Mick |
||||
| Create from : 9/3/2012 | Adress Ip : 89.157.145.120 | E-Mail : mick@hotmail.fr | Web Site : none | ||