2. Motivations pour la mise place d'un cluster


Maintenant que vous savez ce qu'est un cluster dans ses généralités, vous devez surement vous demander à quoi cela peut vous servir.

En fait, le terme de clustering peut être utilisé dans différents contextes. En effet, en tant qu'ingénieur des systèmes d'informations, vous n'aurez pas les mêmes besoins de parallélisation qu'un mathématicien ou encore un ingénieur réseaux télécoms.

Ainsi, nous pouvons distinguer 4 grands types de clusters répondant à chacunes des exigences que vous pouvez vous formuler. Ce sont ces 4 techniques de clusterings que je décris dans cette partie.

Clusters Scientifiques

Clusters de stockage

Clusters Haute-disponibilité

Clusters à répartition de charge

 


1. Qu'est ce qu'un cluster

3.Solutions de clustering


A. Généralités sur les clusters


Sommaire général


Clusters Scientifiques

 

Typiquement, il s'agit d'un système où l'ensemble des Nodes cumulent leur puissance de calcul pour arriver à des performances égales à celles qu'atteignent les supers calculateurs universitaires. En fait, il est considéré de l'extérieur comme étant une machine multiprocesseurs à part entière, spécialisées dans la résolutions de problèmes scientifiques complexes.

Ce cluster utilise des applications spécialisées dans la paralèllisation de calcul à travers une couche de communication commune. En fait, même si TCP/IP représente le protocole réseaux du moment, il diffuse trop de paquets d'overhead, qui ne sont pas forcement nécessaires dans le cas d'un réseau fermé comme un cluster.

A la place, un administrateur pourra utiliser le Direct Memory Acces (DMA, similaire à celui utilisé par certains périphériques d'un PC) à travers ses nodes, qui fonctionne comme une forme de mémoire partagée accessible par l'ensemble des processeurs du système. Il pourra aussi utiliser un système de communication dit de low-overhead comme Message Passing Interface (MPI), qui est une API (Application Program Interface) pour développeurs d'applications de calculs parallèles.

En amont de ce type de cluster nous retrouvons tous les utilisateurs en quête de puissance de calcul. C'est le cas des mathématiciens désirant résoudre des problèmes complexes, des généticiens désirant décodés plus facilement le génôme humain, des astronomes cherchant à voir encore plus loin dans l'univers, ou encore de simples graphistes modélisant leurs scènes avec des équipements comme Lightwave ou Maya.

 


Clusters de stockage

 

Ce type de système est comparable au cluster scientifique. Toutefois, ce n'est pas une puissance de calcul qui est recherchée içi, mais plutôt une puissance de stockage.

Les concepteurs de tels systèmes sont partis du constat que les entreprises utilsaient de plus en plus d'applications performantes utilisant des flux de données conséquents et donc nécessitant une capacité de stockage supérieure à celle d'un seul disque dur. Le système en clustering a pu heureusement contourner ce problème en offrant une vaste capacité de stockage virtuel.

En fait, physiquement, le fichier est découpé en bloc de taille raisonnable et stocké par morceau sur plusieurs disques. Virtuellement, on a l'impression que l'espace de stockage ne fait qu'un et que notre fchier est stocké en un seul morceau sur un "disque".

Il s'agit pour ce type de cluster d'utiliser le potentiel des systèmes dits de "stockage combiné", c'est à dire qu'il distribue les données par l'entremise de plusieurs disques répartis sur les nodes du cluster. Ainsi, tout utilisateur aura le loisir de travailler avec des fichiers de très grandes tailles, tout en minimisant les transferts (si la taille des blocs adoptée reste raisonnable).

 


Clusters Haute Disponibilité

 

Les clusters dit à haute disponibilté ont été créés pour prévenir contre les failles hardware et software d'une seule machine, et ceci afin de garder l'ensemble des services d'un système disponible du mieux possible. La redondance, le fonctionnement du cluster et l'assurance contre les pertes peuvent être garanties à 99,9%.

Ainsi, dans ce type de système, si le node primaire venait à rencontrer une défaillance, il sera immédiatement remplacé par le node secondaire, mis en état de "sommeil" en attendant. Typiquement, ce second node n'est ni plus ni moins qu'une image exacte du node primaire et ceci afin qu'il puisse usurper l'identité du primaire et garder ainsi l'environnement inchangé pour un utilisateur extérieur.

Il existe certains clusters à haute disponibilité capables de garder de manières redondantes jusqu'au fonctionnement d'une application. Ainsi, en cas de disfonctionnement du node primaire, le node secondaire sera capable de migrer l'éxécution de l'application en une poignée de secondes et ceci sans trop perturber l'utilisateur distant. Ce dernier ne ressentira qu'une baisse temporaire du temps de réponse.

Ce type de système fonctionne par l'entremise de la technique dite de heartbeat. En fait le node primaire envoie un signal de heartbeat périodique au node secondaire afin de lui notifier sa présence. Dès que le node secondaire ne recoit plus ce "battement de coeur", il déclare le node primaire comme ne faisant plus partie du cluster et prend son identité complète.

 


Clusters à répartition de charge


Clusters à répartition de charge

 

Les systèmes à répartition de charge permettent de distribuer l'éxécution de processus systèmes ou réseaux à travers les nodes du cluster.

Le node server se voit ainsi attribuer la tâche de réceptionner le processus et de le répartir sur la machine adéquate. Cette dernière est en fait choisie car sa charge est faible et donc elle peut traiter le processus entrant de manière quasi instantanée. Elle peut aussi être choisie en fonction de sa spécialisation, c'est à dire qu'elle seule pourra traiter la demande sur l'ensemble des nodes du cluster.

Toutefois, même si les nodes du cluster n'utilisent pas les mêmes systèmes d'expotations et les mêmes entrées sorties, il existe tout de même une relation commune entre eux, matérialisée sous la forme d'une communication directe entre les machines ou à travers un node server contrôlant la charge de chaque workstation. Pour pouvoir répondre à ce besoin de communication, ce type de cluster utilse des algorithmes spécifiques permettant de distribuer la charge.

Ce type de cluster est surtout largement utilisé dans le domaine du réseau et plus particulièrement sur les services lourds comme les serveurs WEB ou FTP. Ces systèmes requièrent des applications qui examinent la charge courante des nodes et déterminent quel node pourra résoudre de nouvelles requêtes. Ainsi, chaque machine se verra attribuer un processus et donc la qualité de service rendu s'en trouvera meilleure. De plus, il évite les surcharges que peut subir une seule machine destinée à répondre aux reqêtes du réseau.

 


3. Solutions de Clustering


Renaud Vayssade

dimanche 13 janvier, 2002 22:23