Clustering sous Linux

Institut Supérieur des Études Technologiques
1/5
100%
Rendu du PDF...
Page 1 sur 5Lecteur de document UniversityLib

Clustering sous Linux

Institut Supérieur des Études Technologiques · Computer Science - Unix/Linux Systems · notes

Voir tous les documents en systèmes d'exploitation et cloud

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 -