3. Les projets de clusters sous Linux


Un journaliste informatique américain a dit qu'"essayer de compter les projets de clustering sous Linux était l'équivalent d'essayer de compter le nombre de start-up dans la silicon valley".

En effet, contrairement à Windows NT, restreint par son environnement fermé, Linux offre un panel conséquent de systèmes en cluster, répondant aux différents besoins et usages. Dans cette partie je ne traiterais que des projets les plus connus de chaque domaine d'action du clustering.

LVS

Beowulf

PVFS

Linux HA-Project

Alinka

 


2. Architecture recommandée

C. MOSIX, le cluster de tâches


B. Les clusters sous Linux


Sommaire général


LVS

 

Le premier projet de clustering dont je vais vous parler aborde les techniques de répartition de charge. En effet, Linux Virtual Server (LVS) a principalement été conçu afin d'apporter performance et disponibilté à des utilisaturs de serveurs réseaux (WEB, FTP...).

Le principe consiste à interconnecter des serveurs existants, et à orchester la répartition de charge par un node server appelé un load-balnceur ("répartiteur de charge"). Le rôle de ce dernier est d'ordonnancer et de répartir la charge entre les serveurs. Le cluster apparait ainsi comme étant un simple serveur virtuel (l'utilisateur ne voit qu'une seule adresse IP) et donc l'architecture reste transparente à tout utilisateur. Nous pouvons résumer le concept de LVS par le schéma suivant (Schéma provenant du site officielle de LVS) :

LVS est donc un projet créant un système à répartition de charge, à partir de traffic TCP/IP entre ces nodes. Il est implémenté sous forme de patchs applicables au noyau Linux, et permet alors à des applications réseaux comme les serveurs WEB de fonctionner sur des clusters acceptant plus de connections.

Les nodes du cluster peuvent être directement connectés sur le même LAN (Local Area Network) que le load-balancer, mais LVS fonctionne aussi bien avec des nodes distant connectés par des liaisons WAN (Wide Area Network). Cette dernière méthode est rendue possible grâce à la mise en place d'une technique de tunneling des paquets IP. Toutefois, les algorithmes utilisés dans ce cas se trouvent encore peu efficace pour les réseaux étendus, et LVS travaille mieux dans une architecture située sur le même LAN.

Il existe de nombreuses solutions hardware (Foundry, Alteon...) de système à répartition de charge, qui fontionnent plus rapidement qu'un cluster à base d'implémentations logicielles. N éanmoins il faut compter dans les 10 000 € pour les premiers prix de telles solutions. Si vous n'avez besoin que d'une solution simple et peu coûteuse, un cluster de station moyenne catégorie (à base de pentium II) équipé de beaucoup de RAM (256 Mo) peut vous procurer un système à répartition de charge tout à fait honorable.

Pour plus de détails sur LVS, je vous invite à aller visiter le site Frédéric Schwien qui est entierement consacré dessus.

 


Beowulf

 

Lorsque vous demandez à un linuxien de vous parler de clustering sous Linux, sa première réponse sera, dans la plupart des cas, Beowulf. En fait, sous ce nom se présente un projet de clustering scientifique par le biais de l'OS au pingouin. Parrainé par la NASA depuis 1994, beowulf est devenu le cluster le plus connu du monde Linux.

Sous ce projet se cache une volonté très forte de vouloir concurencer les supers calculateurs pour un coût nettement inférieur. Ainsi, ce système permet à un ensemble de nodes de fonctionner de concert tel un seul ordinateur. Pour cela il inclus les plus populaires API pour Linux (MPI et PVM) mais aussi des drivers réseaux très performants, etc. En fait, beowulf n'est ni plus ni moins qu'un package d'outils fonctionnant à travers le noyau Linux.

De plus, pour monter un cluster Beowulf, les contraintes quant au matériel sont amenuisées. En effet, Beowulf permet de connecter des nodes hétérogènes et peu puissants à l'unité, à partir d'une grande variété de types de connexion. Pour cela, il suffit de se rappeler que la première plate forme beowulf était constituée de 16 PC 486DX4 à 100Mhz, équipés de 16Mo de RAM et d'un cache de 256 Ko, et interconnectés par de simples liaisons ethernet. Un autre exemple, plus recent, de cluster beowulf est à l'université de Clemson (photo ci-contre). L'architecture mise en oeuvre est composée de 18 PC pentium 150 MHz, 64 Mo de RAM, et un système Linux RedHat, le tout est interconnecté sur 2 réseaux fast ethernet distinct (donc 2 cartes fast ethernet par nodes).

En fait, beowulf permet à un ensemble de nodes de travailler tel un seul PC. Ainsi, les appels effectués vers la machine virtuelle seront en réalité éxécutés en fonction de la puissance et de la disponibilité de chaque node. En terme clair, le système va constamment vérifier l'occupation des nodes et y répartir tous les processus en cours. Mais attention, un seul programme ne pourra pas être divisé sur plusieurs nodes.

Beowulf sera surement le premier projet de clustering que vous regarderez (surtout si vos besoins s'orientent vers un clusters de calcul), et tout simplement car il se trouve être le plus documenter et le plus utilisé des clusters sous Linux. Plus qu'un simple paragraphe, c'est un exposé complet qu'il serait bien de faire (c'est juste une idée pour les étudiants des promotions à venir qui n'auraient pas d'idée !! ;0 )) ). Beowulf est à tel point utilisé que l'on rencontre aujourd'hui de multitude de projets basés sur sa technologie. L'un des exemples les plus révélateurs de cette notoriété est le développement d'Extreme Linux, la première distribution de Linux pour cluster, dérivée de beowulf. Ce projet a consisté à modifier une RedHat, à laquelle le système beowulf a été gréffé, et ceci afin de constituer un cluster de 160 machines Alpha permettant de réaliser certains effets spéciaux du film Titanic.

Si vous désirez en savoir plus sur ce projet, je vous invite à taper dans votre moteur de recherche préféré (google j'espère) les mots clés suivants : beowulf, beowulf clustering....

 


PVFS

 

Le monde du clustering se trouvait déjà vaste à l'arrivée de PVFS. Mais ce qui a fait de celui-ci un projet dont il faut parler est qu'il est l'un des premiers systèmes de fichiers virtuels et parallèles. En fait, il exploite tout le potentiel des systèmes dits de "stockage combiné". Ce projet est développé par le laboratoire de recherche de l'université de Clemson, et soutenu par la NASA.

En fait plus qu'un cluster de stockage, PVFS se trouve être la solution idéale pour mettre en place un cluster d'entrées / sorties parllèles. Grâce à ce projet, vous serez en mesure de distribuer des données par l'entremise de plusieurs disques répartis dans les nodes du cluster. Il permet entre autre de travailler sur des fichiers de très grandes tailles tout en minimisant les transfert.

PVFS fonctionne sur Linux depuis le noyau 2.2, et son interface d'entrée / sortie correspond exactement à celui du système Unix. Ceci à l'avantage de pouvoir employer les outils traditionnels sur les fichiers et dossiers sans avoir besoin de les recompiler. En plus de ceci, PVFS est doté de 4 composants :

PVFS ne pourra être installé que sur un cluster déjà mis en place, c'est à dire constitué d'un NOW et de nodes configurés pour réaliser de la parallélisation. Une fois les sources téléchargées, vous devez isoler une machine (le node server par exemple) pour jouer le rôle de serveur de meta donnée. Puis les autres machines du cluster se verront attribuer la tâche de stockage effectif et donc joueront le rôle de serveurs d'entrées / sorties. Enfin, il faut configurer les clients pour que ceux ci puissent avoir accès aux ressources du cluster. Ce dernier point peut être intégré de 2 manières : soit en utilisant l'interface native de PVFS, soit en employant un module kernel qui ajoute la fonctionnalité PVFS au système de fichiers.

Pour tout complément je ne saurais que trop vous conseiller d'exploiter dans un premier temps les ressources du site officiel (aller voir à la fin du site, il y a tous les liens). Vous y trouverez tout ce dont vous avez besoin pour mettre en oeuvre un tel système.

 


Linux HA-Project


Linux HA-Project

 

Ici il s'agit de parler d'un projet de clustering voulant fournir un système à haute disponibilité. En fait, ce projet est à peine arrivé à maturité et les grands constructeurs commencent à s'en servir dans le but de proposer des solutions moins chères à base de Linux.

Toutefois, de plus en plus de personnes s'interressent à ce type de système, et Linux HA (Hihg Avaibility) vient à être de plus en plus étudié comme une solution adequate. C'est pourquoi les développeurs du projet se sont attelés à essayer de rnettre leur système le plus portable et le plus compatible avec les autres systèmes qui soient. Par exemple, il arrive aujourd'hui à travailler en collaboration avec des serveurs LVS. Certaines parties du développement de Linux HA ont aussi été reprise dans certaines distributions (Mandrake) comme éléments à part entière du système.

Ainsi, le projet est constitué d'applications capables de maintenir un heartbeat entre des nodes d'un cluster. Dans le cas où ce signal venait à disparaitre, une application prend en charge l'usurpation d'identité de la machine incriminée pour la redonnée à un node redondant. Le node défectueux peut être remplacé en quelques millisecondes grâce à cette méthode. Mais pour bien dimensionner son système à haute disponibilité, le principal inconvénient vient dans le fait qu'il faut bien dimensionner son signal de heartbeat, ceci afin d'éviter de trop longs moments d'inactivitée d'un servcie en cas de panne du serveur, ou bien d'éviter de polluer le réseaux par des signaux intempestifs apparaissant trop souvent.

Malgré le récent engouement pour ce projet, Linux HA reste encore très peu documenté. Vous pouvez vous lancer dans l'aventure et pourquoi pas essayer de devenir un contributeur du projet !!!

 


Alinka


Alinka

 

J'aimerais terminer cette partie sur les projets de clusters sous Linux, et plus généralement ce chapitre, en vous parlant de Alinka. En fait, cette solution (qui n'est plus au stade de projet) se trouve être arrivée à un stade commercial, tout en répondant tout de même aux éxigences de la GPL.

Cette société française, fondée en 1999, propose des logiciels dans l'installation et l'administration de clusters sous Linux. En fait il s'agit de pouvoir installer une application de manière à ce qu'elle se répartisse automatiquement à travers les nodes du cluster, de pouvoir mettre à jour le cluster de manière simplifiée, d'ajouter ou de retirer des nodes sans problèmes, mais aussi de pouvoir observer les charges processeurs ou réseaux tout au long d'un calcul ou d'une répartition.

Pour pouvoir répondre aux différentes exigences des clusters, Alinka a développé 2 applications distinctes. La première, Alinka Raisin, est plutôt orientée dans la gestion de clusters de calcul. En fait, Raisin travaille en étroite collaboration avec les API PVM et MPI. Il doit s'installer sur le node serveur et ceci afin d'orchestrer l'homogénéïté logicielle. De la même manière, il propose de diviser votre cluster en sous cluster et ceci afin de répondre aux besoins des entreprises désireuses de répartir plusieurs services sur un même cluster. Bien sur, les fonctionnalités de Raisin ne s'arrètent pas là et je vous conseille d'aller jeter un oeil sur leur site.

Le deuxième logieil proposé, Alinka Orange, est quand à lui destiné aux clusters orientés sur les services réseaux comme les clusters Haute Disponibilité ou les clusters à répartitin de charge. Il est destiné à pouvoir gérer des clusters destinés typiquement aux hébergeurs de sites, en dupliquant les services sur les nodes, et en répartissant les charges utilisateurs entres eux.

Malgré l'aspect commercial de Alinka, cette société propose tout de même une diffusion du coeur des applications Alinka. Ceci vient du fait que les logieciels fonctionnent grâce à des applications Open Source comme PVM, MPI, MOSIX... De plus, le coeur même des applications Alinka fonctionne avec une base de données PostgreSQL, et ceci afin d'offrir une très grande évolutivité au logiciel. L'entreprise compte sur la communauté linuxienne pour que son produit évolu, et donc met à disposition des laboratoires et des particuliers, les sources des ses deéveloppements.

Pourquoi vendent-ils leur solution me demanderez vous. Tout simplement car Linux reste encore trop académique et la carence en offres commerciales dans le domaine de l'administration des clusters fait foi. Ainsi, l'objectif de Alinka est de rendre accessible ces technologies à d'autres secteurs d'activités, en leur fournissant des outils de qualités repondant aux contraintes industrielles d'une part, et d'autres part en leur apportant un support technique à des solutions commerciales packagées et conviviales, pour lesquels elles auront un interlocuteur identifié et non une communauté.

 


C. MOSIX, le cluster de tâches


Renaud Vayssade

dimanche 20 janvier, 2002 20:26