Publié par : Michael Bideau le : Dimanche 18 octobre 2009
Richard Demongeot, un ami administrateur systèmes Unix, a conçu une architecture matérielle et logicielle taillée pour le web avec une forte résistance aux pannes et une qualité de service augmentée. Elle est fortement basée sur la virtualisation et peut donc être mise en place à partir de 2 serveurs (physiques). Son fonctionnement est illustré ci-dessous. Sur la page de l’auteur vous trouverez une liste détaillée des applications qui composent chaque service.
Les deux serveurs physiques disposent à eux seuls de l’ensemble des services nécessaires à une architecture web tout en offrant de la répartition de charge et de la redondance (de services). Cela est possible grâce à la virtualisation.
En effet sur le serveur n°1 comme sur le n°2 un système hôte (dom0) ajoute une couche qui abstrait l’accès aux ressources de la machine (CPU, RAM, DISK, etc.) et permet notamment de les découper en parts (inégales) que l’on redistribue ensuite à des systèmes virtualisés.
Un système virtualisé est un système d’exploitation complet qui est lancé tel une application du système hôte (pour simplifier fortement). Ainsi un système hôte peut lancer plusieurs systèmes d’exploitation sur une même machine physique et cela permet d’isoler les différents services pour plus de sécurité et une meilleure allocation des ressources de la machine grâce au système de parts virtuelles.
L’avantage le plus important de la virtualisation est la souplesse qu’elle apporte et ici cela se traduit par une évolutivité à toutes épreuves (ou presque).
Chaque service est redondé, c’est à dire présent en double, un sur chaque serveur physique. Si l’un des deux vient à bugger, le second prend la relève immédiatement (un temps infime est nécessaire pour basculer de l’un à l’autre) et assure ainsi la continuité du service. Cela est valable quelque soit le service : web, filer, mail, etc.
En plus d’être dupliqués pour garantir une disponibilité constante, les services qui le nécessitent (web, sql, et mail) sont gérés par un répartiteur de charge. Cela permet de distribuer le service de manière efficace entre deux serveurs virtuels (chacun situé sur une machine physique différente) qui rendent le même service. L’objectif étant d’assurer le traitement d’un maximum de requêtes en un minimum de temps.
En plus de la répartition de charge, le service web est divisé en deux pour une meilleure efficacité, l’un dynamique et l’autre statique (tous deux “load balanced”).
Le premier traite tout le contenu dit “dynamique” ce qui correspond typiquement à la génération de code HTML (via PHP) pour afficher les pages web.
Le second est en charge de délivrer tout le contenu dit “statique”, ce qui peut se traduire par “tout fichier qui n’est pas généré dynamiquement”. En général on retrouve dans l’aspect statique, des fichiers tels que des images, des mp3, des vidéos, etc.On pourrait également mettre ici les fichiers CSS, JS, XML.
En plus de la duplication des filers, ce qui limite déjà fortement les pannes, un service de backup est présent afin de réaliser une sauvegarde de chacun des systèmes virtuels complets de chaque service provenant de l’autre machine physique. Ainsi, si une des deux machines vient à ne plus fonctionner, on peut reconstruire une nouvelle machine très simplement à partir du service de backup de la machine restante qui contient les données de celle qui est down.
Il y a déjà énormément à dire sur cette architecture en l’état, c’est pourquoi Richard (et moi-même) ajouterons dans un deuxième temps tous les aspect réseaux.
Cette architecture web n’a pour l’instant pas encore été réalisée par nos soins, et cela ne reste donc que de la théorie. Cependant très prochainement l’auteur, Richard Demongeot, aura l’occasion de la réaliser à titre personnel. Bien entendu, il ne manquera pas de nous faire partager ses retours d’expérience sur ce projet très INtéressant.
La société SIVIT.fr, dans laquelle il travaille, réalise déjà ce type d’infrastructure et je vous conseille, pour ceux qui sont intéressés, d’aller voir leurs offres à très bon rapport qualité / prix.
Stay tuned ;-)
La rédaction de cet article a nécessité 2h14.