# Grappe de serveurs

On parle de grappe de serveurs, de cluster, de groupement de serveurs ou de ferme de calcul (computer cluster en anglais) pour désigner des techniques consistant à regrouper plusieurs ordinateurs indépendants appelés nœuds (node en anglais), afin de permettre une gestion globale et de dépasser les limitations d'un ordinateur pour :
* augmenter la disponibilité ;
* faciliter la montée en charge ;
* permettre une répartition de la charge ;
* faciliter la gestion des ressources (processeur, mémoire vive, disques durs, bande passante réseau).
La création de petites grappes de serveurs est un procédé peu coûteux, consistant à grouper plusieurs ordinateurs en réseau, qui apparaîtront comme un ordinateur unique doté de plus de puissance du processeur, d'espace de stockage, de mémoire vive, etc., particulièrement utilisé pour les calculs parallèles. Cet usage optimisé des ressources permet la répartition des traitements sur les différents nœuds.
L'un des principaux avantages est d'éviter l'achat d'un serveur multiprocesseur coûteux, en se contentant de plus petits périphériques connectés entre eux en « grappe », permettant une meilleure adaptabilité en fonction des besoins - d'un point de vue performance comme financier. Ces grappes sont généralement situées dans un centre de données.

## Historique

L'histoire des premiers clusters informatiques est plus ou moins directement liée à l'histoire des premiers réseaux, car l'une des principales motivations pour le développement d'un réseau était de connecter les ressources informatiques, créant ainsi de facto un cluster informatique.
Le premier système de production conçu comme un cluster était le Burroughs B5700 au milieu des années 1960. Il permettait de connecter jusqu'à quatre ordinateurs, chacun équipé d'un ou deux processeurs, à un sous-système de stockage de disques commun, afin de répartir la charge de travail. Contrairement aux systèmes multiprocesseurs standards, chaque ordinateur pouvait être redémarré sans perturber le fonctionnement global.
Le premier produit commercial de cluster faiblement couplé était le système "Attached Resource Computer" (ARC) de Datapoint Corporation, développé en 1977, utilisant ARCnet comme interface de cluster. Cependant, la mise en grappe en tant que tel n'a vraiment pris son essor qu'avec le lancement par Digital Equipment Corporation de leur produit VAXcluster en 1984 pour le système d'exploitation VMS. Les produits ARC et VAXcluster ne supportaient pas seulement le calcul parallèle, mais aussi le partage des systèmes de fichiers et des périphériques. L'idée était d'offrir les avantages du traitement parallèle tout en maintenant la fiabilité et l'unicité des données. Deux autres clusters commerciaux notables des débuts sont le Tandem NonStop (un produit commercial de haute disponibilité de 1976) et l'IBM S/390 Parallel Sysplex (vers 1994, principalement pour un usage commercial).
Dès la fin des années 1980, des ingénieurs développent un « multi-ordinateur » (en 1987, l'université du Mississippi travaille sur un cluster basé sur le Sun 4/110). C'est toutefois le projet Beowulf – l'utilisation d'un système d'exploitation Linux sur des PC communs – qui a véritablement lancé l'intérêt pour les clusters, ces grappes d'ordinateurs qui fournissent en commun un travail de calcul en parallèle sur un seul problème complexe. Le coût et la modularité d'un cluster rendent les opérations de calcul moins onéreuses qu'un super-ordinateur.

## Fonctionnement

Le terme cluster exprime l'idée de grappe. La Délégation générale à la langue française et aux langues de France préconise d'ailleurs l'emploi du terme « grappe ». Une grappe de serveurs est donc un groupe de serveurs indépendants fonctionnant comme un seul et même système. Un client dialogue avec une grappe, comme s'il s'agissait d'une machine unique.
Dans les domaines scientifiques, les grappes sont habituellement constituées de nœuds de calcul, de nœuds de stockage et de un ou plusieurs nœuds frontaux. Il y a quelquefois des nœuds supplémentaires dédiés au suivi (monitoring).
Les nœuds peuvent être reliés entre eux par plusieurs réseaux. Communément, le réseau dont le débit est le plus lent est dédié aux tâches d'administration (chargement des systèmes sur les nœuds, suivi, mesure de charge…). À ce premier réseau vient généralement s'adjoindre un second réseau, avec une bande passante beaucoup plus importante. Ce réseau peut utiliser des technologies de type Quadrics, Myrinet ou Infiniband. Ces débits peuvent atteindre 40 gigabits par seconde.
Les programmes exécutés sur ce genre de machine se servent d'une API standard Message Passing Interface, utilisant la communication entre les divers processus répartis sur les nœuds avec des messages.
Lors de la défaillance d'un serveur, le logiciel de regroupement réagit en isolant le système défaillant. De même pour le partage des tâches d'un serveur surchargé avec un autre (dans le cas où les ressources sont partagées entre plusieurs tâches).

## Utilisation

Leur utilisation est de plus en plus importante dans la communauté scientifique, où les besoins en calculs à haute performance sont toujours croissants, ainsi qu'en imagerie numérique notamment pour les images de synthèse au travers des fermes de rendu.
En Informatique de gestion, les grappes peuvent être utilisées pour minimiser l'impact d'une panne de serveur sur la disponibilité d'une application. Cela nécessite la mise en œuvre de disques partagés, par exemple dans le cadre d'un réseau de stockage SAN.
Dans d'autres domaines, on a de plus en plus recours aux réseaux pair à pair (P2P) comme alternative aux grappes de serveurs, et ce pour un coût moindre.

## Bénéfices

* Évolutivité ou scalabilité (de scalable en anglais) : capacité d'une application à accepter un nombre croissant d'utilisateurs. Reposant sur plusieurs facteurs, notamment le nombre d'utilisateurs pouvant se connecter simultanément à un cluster et le temps nécessaire pour traiter une requête.
* Disponibilité : la haute disponibilité peut se définir comme la redondance. Ainsi, si un serveur tombe en panne alors qu'il est en train de traiter des requêtes, d'autres serveurs du cluster doivent pouvoir les traiter d'une manière aussi transparente que possible. Tout serveur défaillant est retiré du cluster dès qu'il tombe en panne de sorte que les requêtes suivantes ne soient plus acheminées vers ce dernier. En matière de reprise à chaud pour les applications d'entreprise, la résilience et la disponibilité revêtent la plus haute importance.