Le cluster - Direction technique Eau, mer et fleuves

Transcription

Le cluster - Direction technique Eau, mer et fleuves
Le cluster
Types génériques de clusters
Clusters de calcul
Ce type de cluster est destiné à permettre la mise en commun de ressources de calcul. Il est utilisé pour
résoudre des problèmes calculatoires en distribuant les parties indépendantes du calcul sur les différents
noeuds.
Clusters de haute disponibilité
Lorsque l'on met en place un cluster de ce type, on ne cherche pas la performance du calcul mais plutôt à
assurer la disponibilité de la ressource, principalement en cas de panne de l'un des serveurs. La
ressource peut aussi bien être un service (calculs numériques, applications, etc.) qu'un fichier. Ils sont
basés sur des mécanismes de redondance et de détection des pannes.
Clusters de répartition de charge
Ces clusters sont typiquement utilisés pour les services web, mais ils peuvent tout aussi bien être utilisés
dans d'autres domaines. Toutes les requêtes arrivent sur un même nœud du cluster, le seul visible de
l'extérieur, mais la requête sera envoyée sur un autre. Le choix se fait en fonction de la charge de chacun
des nœuds, de manière à traiter la requête le plus rapidement possible.
Solutions
Il existe énormément de solutions pour mettre en place un cluster. Il y en a pour les différents systèmes
d'exploitation de Microsoft, pour les Mac, pour les Unix (propriétaires ou libres), etc. La plupart sont des
solutions commerciales, clés en main avec support technique. Mais ces dernières ont un coût non
négligeable dû aux prix des licences logiciels (souvent une licence par nœud est nécessaire) et au prix du
support technique. Il existe aussi des solutions gratuites, à base de logiciels "libres". Le choix se fera donc
en fonction du support technique voulu et du budget disponible.
Il est possible de mettre en place un cluster à l'aide de n'importe quel système d'exploitation. En effet, il
faut que chaque noeud puisse avoir accès à un système d'exploitation pour pouvoir fonctionner. Donc
soit-on installe un système complet sur tous les noeuds, soit-on leur met à disposition une image qu'ils
iront chercher à chaque lancement. Le cluster ne marche que grâce à une couche logiciel supplémentaire
qui permet une communication efficace et l'échange des tâches entre les nœuds. Il suffit donc que cette
couche soit présente pour que le système d'exploitation soit capable de faire fonctionner le cluster.
Une catégorie particulière : les clusters Beowulf
Les clusters Beowulf ont la particularité de fonctionner uniquement avec des logiciels dits "libres". Il existe
deux classes de clusters Beowulf se distinguant par leur architecture matérielle :
Classe I : Cette classe concerne les machines faites d'éléments matériels largement disponibles. Pour
être considérer comme un cluster Beowulf de classe I, il faut que les nœuds soient composées de
matériels que l'on peut trouver dans au moins quatre journaux de publicités de grande diffusion (test
"Computer Shopper", du nom d'un magazine américain équivalent à "PC Direct" en France). L'avantage
d'un tel système est la large diffusion du matériel ce qui permet une plus grande compatibilité avec Linux
car basé sur des standards (Ethernet, SCSI, IDE, ...) mais les performances peuvent être limitées.
Classe II : Cette classe concerne les machines qui ne passent pas le test "Computer Shopper". Elles sont
souvent basées sur le matériel d'un seul vendeur et la compatibilité avec Linux dépend du développement
de drivers pour Linux par ce vendeur. De plus cette solution peut être beaucoup plus chère que les
solutions de classe I mais les performances meilleures.
Conception d'un système à haute performance - Le cluster
1/4
Copyright © CETMEF 2004
Choix du matériel
A cause de toutes les contraintes dues à la mise en commun des ressources, le choix du matériel est
important, que ce soit pour le couple processeur / mémoire ou pour l'interface réseau. Tout d'abord, ce
n'est pas une technique miracle, si on met quelques dizaines de Pentium de première génération dans un
cluster, il ne faut pas s'attendre à avoir des performances dignes d'un unique processeur de dernière
génération. Il faut aussi faire attention à l'équilibre entre les performances des processeurs et celui du
réseau. En effet, plus les processeurs iront vite, plus le réseau de communication devra suivre. Sinon une
grande partie de la puissance de calcul sera perdue lors de l'attente des communications et
synchronisations. A l'inverse, mettre un réseau ultra rapide (et donc cher) avec des processeurs
relativement lents, n'est pas un bon choix non plus, le réseau étant sous utilisé.
Processeurs
Là encore, il faut faire un compromis entre le coût par noeud et les performances. Comme souvent en
informatique, il faut éviter de se précipiter sur la dernière technologie sortie. En générale, il vaut mieux
attendre quelque temps pour la laisser mûrir et avoir plus de recul sur ses conséquences et ses réelles
performances. Ceci est d'autant plus vrai pour les clusters de moyenne et de grande taille vu le nombre
important de machines.
Il est donc préférable de prendre une technologie de processeurs et de mémoires qui a déjà fait ses
preuves et de proportionner sa puissance avec les applications destinées aux clusters. Le nombre de
noeuds doit aussi être en rapport avec la taille du problème que l'on cherche à résoudre. Comme indiqué
dans la partie sur le calcul parallèle et distribué, plus on ajoute de processeurs, plus on s'approche de la
limite théorique du gain de performance. Mais, cette formule ne tient pas compte d'un phénomène
important. Pour un problème donné, plus le nombre de noeuds sur lequel on le répartit augmente, plus la
part de travail de chaque noeud est petite. Mais il arrive un moment où le temps perdu (pour le calcul)
dans la distribution des données et dans le réassemblage du résultat devient trop important, ce qui peut
entraîner une diminution les performances, contrairement à ce que l'on pourrait croire. Là encore, il n'y a
pas de principes généraux, il faut étudier le problème et faire des essais pour trouver le compromis idéal.
Le matériel du cluster doit être le plus homogène possible pour permettre une administration aisée. Pour
assurer la portabilité des programmes, il convient de ne pas mélanger des architectures différentes
(Power PC, PC 32bits, PC 64bits, Station Sparc, etc.).
Mémoires
En ce qui concerne la mémoire, il existe différents types, il faut donc faire attention au choix de la carte
mère, car les différents types ne sont pas forcément compatibles entre eux. On peut citer par exemple la
SDRAM, la SDRAM DDR, la SDRAM ECC, ...
La SDRAM était la mémoire traditionnelle, mais elle est maintenant remplacée par la SDRAM DDR qui
est capable de transférer des données à la fois sur le front montant et sur le front descendant du signal
carré de l'horloge. D'où des débits théoriques deux fois plus rapides et des temps de latence plus faibles.
Il y a aussi les mémoires dites "registred" ou "buffered". On trouve sur ces barrettes, des mémoires
tampons qui permettent de mettre plus de 16 composants DRAM sur la même barrette et ainsi d'avoir la
possibilité de mettre plus de 4 barrettes de mémoire sur une carte mère.
Il est aussi possible de rajouter des méthodes de détection et de correction d'erreurs. C'est pourquoi, il
existe des barrettes de mémoire avec un contrôle de parité, mais ce contrôle nécessite de la place, donc
pour avoir la même place utilisable il faut avoir plus de place réelle (environ 12% de pertes), elles sont
donc plus chères. De plus, en cas d'erreur détectée (ce système n'est capable de détecter qu'une erreur
par octet), le système d'exploitation est averti et c'est à lui de réagir (arrêt de l'application en cours ou
arrêt totale de la machine) mais il n'y a pas correction de l'erreur (car impossible avec un seul bit de
parité). C'est pourquoi il existe un autre type de mémoire : la mémoire ECC (Error Control Correction) qui,
en réservant une partie de la place mémoire disponible, permet grâce à un algorithme de correction
d'erreurs de garantire l'intégrité des données présentes en mémoire. Bien sur, cela à un coût financier, un
léger coût en terme de performance et toutes les cartes mères ne l'acceptent pas.
Aujourd'hui la mémoire avec contrôle de parité n'est pratiquement plus utilisée au profit de la mémoire
ECC. Et on trouve aussi de la mémoire SDRAM DDR ECC registred.
Conception d'un système à haute performance - Le cluster
2/4
Copyright © CETMEF 2004
Interfaces réseau
Il existe beaucoup de technologies réseaux (Token Ring, ATM, Ethernet, Myrinet, FrameRelay, X25...),
mais deux sont principalement utilisées : Ethernet et Myrinet.
La technologie Ethernet est largement utilisée dans les clusters à cause de sa maturité et de ses
performances. De plus, le prix des équipements (carte d'interface, HUB, switch, ...) permet d'avoir un bon
compromis entre le prix et les performances. Les débits habituels des équipements actuels sont de l'ordre
de 100 Mbits/s (FastEthernet), ce qui est suffisant pour un cluster de petite taille. Mais les temps de
latence (important pour les échanges de petits messages) sont conséquents. Donc, pour certaines
applications, le Gigabit Ethernet sera préférable. Ce dernier ayant un temps de latence faible mais un coût
financier plus important.
L'autre technologie largement employée s'appelle Myrinet crée par la société Mircom, elle permet
d'atteindre des débits de l'ordre de 2 Gbits/s et offre des temps de latence très faible. Les drivers sont
disponibles pour un grand nombre de systèmes d'exploitation. Malheureusement, cette technologie a un
coût nettement supérieur à la précédente.
Autres contraintes
Pour des systèmes de taille importante, il faut tenir compte d'autres facteurs.
Il faut prévoir la place pour mettre l'ensemble des noeuds du cluster et prévoir l'infrastructure qui sera
capable de le recevoir. Notamment l'alimentation en électricité et le passage des câbles électriques et
réseaux. Mais il ne faut pas oublier que les composants électroniques de chaque noeud du cluster,
principalement le processeur et l'alimentation, sont des sources de chaleur non négligeables surtout à
pleine charge. Il faut donc veiller à évacuer correctement cette chaleur. En effet, les processeurs sont
prévus pour fonctionner dans une certaine plage de température. Si elle est trop élevée, il y a des risques
de pertes des performances (certains processeurs diminuent leur fréquence d'horloge), de blocages,
voire d'endommager le matériel.
Insertion du cluster dans le réseau
Il y a plusieurs méthodes pour insérer le cluster dans un réseau existant.
Souvent, le réseau entre les noeuds du
cluster est d'un type particulier (plus
rapide, utilisant une autre technologie que
celle du réseau local où s'insèrera le
cluster). Il convient donc d'isoler
complètement les noeuds du cluster du
réseau local, en mettant un switch dédié
où tous les noeuds (et uniquement eux)
viendront se raccorder. Ainsi les noeuds
esclaves ne seront pas visibles de
l'extérieur du cluster. Le lien vers le
réseau local se fera par l'intermédiaire
d'une deuxième interface réseau sur le
noeud maître. On pourra mettre en place du NAT ( Network Address Translation ) si on souhaite que les
noeuds aient un accès au réseau externe. Du point de vue du réseau local, le cluster, dans son
ensemble, sera vu comme une machine unique. Cette méthode permet de concentrer les efforts de
sécurisation du cluster uniquement au niveau du noeud maître. Comme les noeuds esclaves ne sont pas
accessibles de l'extérieur on peut, dans ce cas, relâcher la sécurité sur les noeuds afin de faciliter
l'administration. C'est la méthode la plus courante.
Conception d'un système à haute performance - Le cluster
3/4
Copyright © CETMEF 2004
Dans certaines circonstances (par exemple, quand un
grand nombre de tâches non parallèles doivent être
lancées), on peut vouloir que les utilisateurs, au lieu de
n'utiliser que le noeud maître, puissent avoir accès à
l'ensemble des noeuds (pour des questions de répartition
de charge et de facilité d'utilisation). Dans ce cas, tout en
gardant le réseau spécifique au cluster, il faut rendre
accessible au réseau local l'ensemble (ou une partie
seulement) des noeuds. Mais il faut alors faire attention à
la sécurisation de chaque noeud tout en laissant possible
l'administration à distance.
Programmes et bibliothèques nécessaire
Pour assurer l'exploitation du cluster, il est nécessaire d'installer les programmes et les bibliothèques
suivants (cette liste n'est pas exhaustive et elle ne contient que des exemples issus de projets "libres") :
•
•
•
•
•
Un bibliothèque de programmation par passages de messages (MPICH, PVM)
Un mécanisme de répartition de processus et de charge (OpenPBS, clusterit, gexec)
Des outils de monitoring pour s'assurer de la bonne marche du cluster (Ganglia)
Des outils d'administration d'un groupe de machines (pconsole, ka-run)
Des mécanismes d'échange de fichiers (pcp)
On peut, bien sur, adapter cette liste à l'utilisation voulue du cluster
Installation et maintenance
L'installation de ces logiciels sur une machine particulière ne pose généralement pas de problème. Mais
dans le cas d'un cluster, ce n'est pas cette difficulté qui faut prendre en considération, mais la répétitivité
de la tâche d'installation et les opérations nécessaires pour la maintenance. En effet, un cluster est
souvent composé de plusieurs dizaines de machines qui possèdent chacune leur propre système
d'exploitation. C'est pourquoi l'administration d'un cluster sans des outils adéquats serait inefficace.
Pour cela, on peut s'appuyer sur les solutions commerciales existantes. Il est également possible de
développer ses propres outils, mais il existe un grand nombre de projets de cluster ayant déjà rencontré
ce problème et pour lesquels des outils ont été développés et mis à la disposition de tous.
Conception d'un système à haute performance - Le cluster
4/4
Copyright © CETMEF 2004

Documents pareils