ISET Radès
Cours Unix/Linux
Chapitre 9 :
Clustering sous linux
1. Principe :
Le principe utilisé dans le clustering consiste à diminuer le temps d'exécution d'une tâche
en la fractionnant sur plusieurs machines. En clair, une tâche répartie sur N machines
arrivera N fois plus vite à terme que sur une seule. De cette manière, tous les réseaux
peuvent être transformés en cluster.
• Ce concept est fort simple mais il faut faire la distinction entre un système complet en
clustering et un logiciel en clustering.
•
Systèmes en clustering. Ici se sont les tâches qui sont réparties sur plusieurs machines.
Typiquement, les sites web important en terme de connexion comme Google (le
moteur de recherche) utilisent des clusters de serveurs web, qui ne sont ni plus ni
moins que des miroirs du sites, et qui traitent un ensemble de requêtes utilisateurs. Le
tout interconnecté permet donc de traiter plus de demandes en un temps réduit.
• Logiciel en clustering. Ici c'est une seule et même tâche qui sera divisée et répartie sur
chaque machine du cluster. Généralement se sont les clusters de calcul qui répondent à
ce besoin, comme les systèmes de conception d'effets spéciaux qui demandent un
grand calcul de rendu et un énorme espace de stockage.
•
Pourquoi tout le monde n'utilise-t-il pas un cluster puisque c'est performant et peu cher
? Le problème principal provient des connexions entre les différentes machines. Pour
créer un cluster performant, les machines doivent pouvoir communiquer très
rapidement et le coût s'en trouve augmenté.
2. Terminologie
Un ensemble de machines en réseau destiné à un fonctionnement en parallèle constitue un
cluster (grappe). Dans ce cluster, chaque machine sera un Node. Tous les nodes sont des
stations de travail dans le sens où elles possèdent un ou plusieurs processeurs en
opposition aux terminaux. Le réseau ainsi formé est un NOW, un Network Of
Workstation (réseau de station de travail).
3. Les motivations d’un cluster
Le terme clustering peut être utilisé dans différents contextes. En effet, en temps
qu’ingénieurs des systèmes d’information vous n’aurez pas les mêmes besoins de
parallélisation qu’un mathématicien ou un ingénieur réseaux télécoms. Ainsi, nous
Yahia SLIMANI/Habib SMEI
- Page 1 -
ISET Radès
Cours Unix/Linux
pouvons distinguer 4 grands types de clusters pouvant être combinés les uns aux autres et
répondant aux exigences de chacun des utilisateurs :
• Les clusters scientifiques : typiquement il s’agit d’un cluster où l’ensemble des nodes
cumulent leurs puissances de calcul pour arriver à des performances égales à celles
Publicité
d’un super calculateur. Pour ce type, c’est une quête de puissance qui est recherchée.
• Les clusters de stockage : ici il s’agit de combiner les espaces disques de chacune
des machines afin de fournir un espace disque total assez conséquent.
• Les clusters haute disponibilité : ici il s’agit de créer plusieurs nodes redondants
permettant de prendre le relais de la machine principale en cas de crash. C’est la
fiabilité qui prime dans ce type d’architecture. En effet, le stockage des données étant
redondants, le fonctionnement du cluster et l’assurance contre les pertes de données
peuvent être garantis à 99,9%. Pour expliquer la mise en oeuvre, on prend un exemple
avec plusieurs machines. On nome la machine qui prend en charge le service, la
machine maître. Et les autres machines qui sont en réserve en cas de problème, pour
que l'une d'entre elle prend le relais, les machines esclaves. Et donc quand une
machine esclave prend le relais, elle devient une machine maître. Donc, pour avoir la
haute disponibilité, il nous faut plusieurs programmes (softwares) dans les différentes
machines du cluster. Un programme, qui s'occupe d'enregistrer les différentes données
et changement, suivant la date de la dernière modification sur les différentes machines,
pour avoir le même service avec les mêmes informations sur les différentes machines
du cluster, et pour cela il nous faut aussi un programme qui s'occupe de la
synchronisation du temps sur les différentes machines. En plus, il nous faut un
programme qui vérifie la disponibilité du service sur les différentes machines et un
autre qui vérifie la disponibilité des machines et d'exclure la machines qui a un
problème jusqu'à ce qu'elle soit à nouveau disponible. Et le dernier programme, lui
s'occupe de donné la main à une autre machine, si la machine maître est indisponible.
• Les clusters à répartition de charge : ces clusters permettent de répartir des
processus vers les nodes du cluster. Ainsi chaque machine se verra traiter un processus
et donc la qualité de service rendu s’en trouvera meilleure. Cela évite ainsi les
surcharges. Par exemple, si plusieurs clients ont besoin d'exécuter une tache (un
service) sur une machine disponible dans un réseau, le bon fonctionnement ne pourra
être assurer à cause des limitation du réseau et de la capacité de la machine. Dans ce
cas pour assuré un bon fonctionnement, il faut limiter le nombre de clients. Pour ne
pas avoir à limiter le nombre de clients et d'avoir un bon fonctionnement, la solution
est de mettre un cluster de répartition de charge. La taille du cluster dépend du nombre
Yahia SLIMANI/Habib SMEI
- Page 2 -
ISET Radès
Cours Unix/Linux
des clients pouvant se connecter à la fois. Le principe de mise en oeuvre est d'avoir un
serveur particulier appelé “l'équilibreur de charge” (load-balancer) placé entre les
clients et les noeuds du cluster. Son rôle consiste à aiguiller les requêtes du client vers
un noeud particulier, car tous les noeuds proposent le même service. Pour éviter que
l'équilibreur de charge oriente un client vers un noeud défaillant, on place un autre
serveur appelé directeur, qui ce charge de vérifier la fonctionnalité du service proposer
et d'ordonner à l'équilibreur de charge de ne pas aiguiller les requêtes vers tel noeud
s'il présente un dysfonctionnement. Un bon exemple de ce type de cluster sont les
clusters de serveurs web. Afin de réussir à envoyer les pages aux clients, un cluster
Publicité
peut être installé pour fournir une qualité de service qu'une machine unique ne pourra
jamais fournir. Certain peuvent répondre à des millions d'internautes. Et c'est pour cela
que le cluster à haute disponibilité est associer avec la répartition de charge (Cluster à
haute disponibilité avec répartition de charge). Comme sa le client peut avoir son
service toujours disponible avec un bon fonctionnement.
4. Les logiciels de clustering
Il existe une grande quantité de logiciels sous Linux afin de transformer un NOW en
cluster. Leur tâche est principalement de transformer l'ensemble des nodes en une
seule fausse machine : une machine virtuelle dont l'existence est purement imagée et
qui n'existe pas physiquement. Voyons ensemble les deux principaux utilitaires et
leurs fonctions.
• PVM : PVM est l'acronyme de Parallèle Virtual Machine. Il permet de créer un
cluster à partir de nodes de types différents (PC/Linux, PC/Windows, Mac, HP,
CRAY, etc.). Il supporte tous les réseaux capables d'une connexion par socket comme
par exemple SLIP, PLIP, Ethernet et ATM. PVM se présente sous la forme d'un
deamon et de bibliothèques C et FORTRAN. Les applications qui utilisent PVM
doivent être compilées avec les bibliothèques PVM. Ceci implique une modification
du code dans le cas d'une application déjà existante. L'un des plus bel exemple
d'application modifiée et recompilée pour PVM est PovRay. C'est un logiciel de Ray
Tracing dont le portage pour PVM se nomme PvmPov, mais nous y reviendrons plus
loin.
• MPI : MPI (pour Message Passing Interface) est souvent considéré comme le
concurrent principal de PVM. Pour expliquer la diffétence entre PVM et MPI, voyons
leurs différences.
•
PVM possède un environnement de contrôle. En somme, le lancement d'une
application PVM est identique sur tous les environnement. Ceci permet de mettre en
Yahia SLIMANI/Habib SMEI
- Page 3 -
ISET Radès
Cours Unix/Linux
œuvre un utilitaire pour contrôler les exécutions des diverses applications dans la
machine virtuelle.
• MPI considère la machine virtuelle comme un processeur massivement parallèle ou
encore comme un réseau de nodes identiques. PVM est d'avantage orienté vers les
réseaux hétérogènes (composés de machines différentes).
• MPI permet un accès distant à la mémoire (RMA, Remote memory Access) et un
système d'entrée/sortie en parallèle. Ces deux fonctionnalités sont utiles mais
nécessites d'apprendre MPI de la même manière qu'un nouveau langage.
• MPI a été crée après PVM et s'en est inspiré. MPI est donc plus performant au niveau
de la gestion de buffers, des structures de données, etc.
• Voici donc les principales caractéristiques qui existent entre les deux standards. Notre
tâche n'est pas de vous inciter à utiliser l'un ou l'autre. Nous ne donnerons donc pas
notre avis, à vous de voir en PVM ou MPI le programme qu'il vous faut.
Publicité
5. Les projets de clusters
Il existe beaucoup de méthodes différentes pour créer un cluster. Il est donc utile de
pouvoir se référer à des clusters ou des projets de cluster déjà en place.
• Beowulf :
Ce projet parrainé par la N.A.S.A. concerne l'architecture classique PC et le système
Linux. Débuté en 1994, il est dirigé par Thomas Sterling et Don Becker. Le système
Beowulf permet à un ensemble de nodes de fonctionner tel un seul PC. Les
programmes en fonctionnement sur le PC virtuel seront exécutés en fonction de la
puissance et de la disponibilité de chaque node. Mais un seul programme ne sera pas
réparti sur plusieurs nodes. En clair, le système va vérifier l'occupation de chaque
node et y répartir tous les process en cours. Le premier cluster construit dans le cadre
de ce projet était constitué de 16 DX4 connecté en ethernet.
• Linux/AP+ :
Ce projet ne traite pas exactement de clustering. Il s'agit du portage de Linux sur
l'architecture Fujitsu AP1000+. Cet ordinateur est une machine parallèle basée sur
SPARC qui utilise une topologie réseau propriétaire à 25Mo par seconde. En résumé,
ce portage ressemble fort à un cluster de SPARC sous Linux.
• U-NET :
Basé à l'université de Cornell, ce projet a pour but de créer une interface basée sur un
réseau classique afin d'optimiser les temps de réponse des machines. Le principe
consiste à envoyer et recevoir des messages sans l'intervention du système. U-Net
tourne sur PC sous Linux et des cartes DECchip Fast Ethernet.
Yahia SLIMANI/Habib SMEI
- Page 4 -
ISET Radès
Cours Unix/Linux
•
distributed.net :
Le plus grand cluster connu au monde. En vous connectant à www.distributed.net,
vous pourrez télécharger un client (programme) pour votre ordinateur. Et ce, quelqu'il
soit et quelque soit son système d'exploitation. Grâce à ce client, vous pourrez
transformer votre ordinateur en node connecté à InterNet. Le but de ce cluster
gigantesque est, entre autre, de démontrer que la taille des clefs de cryptage
actuellement utilisée est obsolète. Pour preuve, distributed.net a cassé un code DES-II
56 bits en 40 jours. La clef du code RC5-32/12/7 56 bits fut cassée en 250 jours.
• Extreme Linux :
Dérivée du projet Beowulf et en collaboration avec Red Hat, la Nasa et plusieurs
centres de recherche, Extreme Linux est la première distribution de Linux en cluster.
Celle-ci est directement issue de la distribution Red Hat modifiée pour le cluster de
160 stations Alpha utilisées pour certains effets spéciaux du film Titanic.
Yahia SLIMANI/Habib SMEI
- Page 5 -