Article de reference

Groupe d'ordinateurs

Techniciens travaillant sur un grand cluster Linux à l' Université de technologie de Chemnitz , Allemagne Cluster Solaris de Sun Microsystems , avec refroidissement en rangée La...

Techniciens travaillant sur un grand cluster Linux à l' Université de technologie de Chemnitz , Allemagne
Cluster Solaris de Sun Microsystems , avec refroidissement en rangée
La série Taiwania utilise une architecture en cluster.

Un cluster informatique est un ensemble d' ordinateurs qui fonctionnent ensemble de manière à pouvoir être considérés comme un système unique. Contrairement aux ordinateurs en grille , les clusters informatiques ont chaque nœud configuré pour effectuer la même tâche, contrôlée et planifiée par logiciel. La manifestation la plus récente du calcul en cluster est le cloud computing .

Les composants d'un cluster sont généralement connectés les uns aux autres via des réseaux locaux rapides , chaque nœud (ordinateur utilisé comme serveur) exécutant sa propre instance d'un système d'exploitation . Dans la plupart des cas, tous les nœuds utilisent le même matériel et le même système d'exploitation, bien que dans certaines configurations (par exemple en utilisant Open Source Cluster Application Resources (OSCAR)), différents systèmes d'exploitation peuvent être utilisés sur chaque ordinateur, ou un matériel différent.

Les clusters sont généralement déployés pour améliorer les performances et la disponibilité par rapport à celles d'un seul ordinateur, tout en étant généralement beaucoup plus rentables que des ordinateurs uniques de vitesse ou de disponibilité comparables.

Les clusters informatiques sont apparus à la suite de la convergence d'un certain nombre de tendances informatiques, notamment la disponibilité de microprocesseurs à faible coût, de réseaux à haut débit et de logiciels pour le calcul distribué à haute performance . Ils ont une large gamme d'applicabilité et de déploiement, allant des petits clusters d'entreprise avec une poignée de nœuds à certains des supercalculateurs les plus rapides au monde tels que le Sequoia d'IBM . Avant l'avènement des clusters, des ordinateurs centraux tolérants aux pannes à unité unique avec redondance modulaire étaient utilisés ; mais le coût initial inférieur des clusters et la vitesse accrue de la structure du réseau ont favorisé l'adoption des clusters. Contrairement aux ordinateurs centraux à haute fiabilité, les clusters sont moins chers à mettre à l'échelle, mais présentent également une complexité accrue dans la gestion des erreurs, car dans les clusters, les modes d'erreur ne sont pas opaques pour les programmes en cours d'exécution.

Concepts de base

Un cluster Beowulf simple et fabriqué maison

Le désir d’obtenir davantage de puissance de calcul et une meilleure fiabilité en orchestrant un certain nombre d’ ordinateurs commerciaux à faible coût et prêts à l’emploi a donné naissance à une variété d’architectures et de configurations.

L'approche de clustering informatique connecte généralement (mais pas toujours) un certain nombre de nœuds informatiques facilement disponibles (par exemple des ordinateurs personnels utilisés comme serveurs) via un réseau local rapide . Les activités des nœuds informatiques sont orchestrées par un « middleware de clustering », une couche logicielle qui se trouve au-dessus des nœuds et permet aux utilisateurs de traiter le cluster comme une unité informatique globalement cohérente, par exemple via un concept d'image système unique .

Le clustering informatique repose sur une approche de gestion centralisée qui rend les nœuds disponibles sous forme de serveurs partagés orchestrés. Il se distingue d'autres approches telles que le peer-to-peer ou le grid computing qui utilisent également de nombreux nœuds, mais avec une nature beaucoup plus distribuée .

Un cluster d'ordinateurs peut être un simple système à deux nœuds qui relie simplement deux ordinateurs personnels, ou peut être un supercalculateur très rapide . Une approche de base pour la construction d'un cluster est celle d'un cluster Beowulf qui peut être construit avec quelques ordinateurs personnels pour produire une alternative rentable au calcul haute performance traditionnel . Un des premiers projets qui a montré la viabilité du concept était le Stone Soupercomputer à 133 nœuds . Les développeurs ont utilisé Linux , la boîte à outils Parallel Virtual Machine et la bibliothèque Message Passing Interface pour atteindre des performances élevées à un coût relativement faible.

Bien qu'un cluster puisse être constitué de quelques ordinateurs personnels connectés par un réseau simple, l'architecture de cluster peut également être utilisée pour atteindre des niveaux de performance très élevés. La liste semestrielle des 500 supercalculateurs les plus rapides de l'organisation TOP500 comprend souvent de nombreux clusters, par exemple, la machine la plus rapide du monde en 2011 était l' ordinateur K qui possède une architecture de cluster à mémoire distribuée .

Histoire

Un VAX 11/780, vers 1977, tel qu'utilisé dans les premiers développements de VAXcluster

Greg Pfister a déclaré que les clusters n'ont pas été inventés par un fournisseur spécifique mais par des clients qui ne pouvaient pas faire tenir tout leur travail sur un seul ordinateur ou avaient besoin d'une sauvegarde. Pfister estime la date à un moment donné dans les années 1960. La base d'ingénierie formelle du calcul en cluster comme moyen d'effectuer un travail parallèle de toute sorte a sans doute été inventée par Gene Amdahl d' IBM , qui a publié en 1967 ce qui est considéré comme l'article fondateur sur le traitement parallèle : la loi d'Amdahl .

L'histoire des premiers clusters informatiques est plus ou moins directement liée à l'histoire des premiers réseaux, car l'une des principales motivations du développement d'un réseau était de relier les ressources informatiques, créant ainsi un cluster informatique de facto.

Le premier système de production conçu comme un cluster fut le Burroughs B5700 au milieu des années 1960. Il permettait de coupler étroitement jusqu'à quatre ordinateurs, chacun doté d'un ou deux processeurs, à un sous-système de stockage sur disque commun afin de répartir la charge de travail. Contrairement aux systèmes multiprocesseurs standard, chaque ordinateur pouvait être redémarré sans perturber le fonctionnement global.

Tandem NonStop II vers 1980

Le premier produit commercial de clustering à couplage lâche était le système « Attached Resource Computer » (ARC) de Datapoint Corporation , développé en 1977 et utilisant ARCnet comme interface de cluster. Le clustering en soi n'a vraiment décollé qu'à partir du moment où Digital Equipment Corporation a sorti son produit VAXcluster en 1984 pour le système d'exploitation VMS . Les produits ARC et VAXcluster prenaient en charge non seulement le calcul parallèle , mais aussi les systèmes de fichiers partagés et les périphériques . L'idée était de fournir les avantages du traitement parallèle, tout en préservant la fiabilité et l'unicité des données. Deux autres premiers clusters commerciaux remarquables étaient le Tandem NonStop (un produit commercial à haute disponibilité de 1976) et l' IBM S/390 Parallel Sysplex (vers 1994, principalement destiné à un usage professionnel).

Dans le même temps, alors que les clusters d'ordinateurs utilisaient le parallélisme en dehors de l'ordinateur sur un réseau de base, les supercalculateurs ont commencé à l'utiliser au sein du même ordinateur. Après le succès du CDC 6600 en 1964, le Cray 1 a été livré en 1976 et a introduit le parallélisme interne via le traitement vectoriel . Alors que les premiers supercalculateurs excluaient les clusters et s'appuyaient sur la mémoire partagée , avec le temps, certains des supercalculateurs les plus rapides (par exemple l' ordinateur K ) s'appuyaient sur des architectures de cluster.

Attributs des clusters

Un cluster d'équilibrage de charge avec deux serveurs et N stations utilisateur

Les clusters d'ordinateurs peuvent être configurés à des fins diverses, allant des besoins professionnels généraux tels que la prise en charge de services Web, aux calculs scientifiques intensifs. Dans les deux cas, le cluster peut utiliser une approche de haute disponibilité . Notez que les attributs décrits ci-dessous ne sont pas exclusifs et qu'un « cluster d'ordinateurs » peut également utiliser une approche de haute disponibilité, etc.

Les clusters « d'équilibrage de charge » sont des configurations dans lesquelles les nœuds du cluster partagent la charge de travail de calcul pour offrir de meilleures performances globales. Par exemple, un cluster de serveurs Web peut attribuer différentes requêtes à différents nœuds, de sorte que le temps de réponse global sera optimisé. Cependant, les approches d'équilibrage de charge peuvent différer considérablement selon les applications, par exemple un cluster hautes performances utilisé pour des calculs scientifiques équilibrerait la charge avec différents algorithmes d'un cluster de serveurs Web qui pourrait simplement utiliser une méthode de round-robin simple en attribuant chaque nouvelle requête à un nœud différent.

Les clusters informatiques sont utilisés à des fins de calcul intensif, plutôt que pour gérer des opérations orientées E/S telles que des services Web ou des bases de données. Par exemple, un cluster informatique peut prendre en charge des simulations informatiques d'accidents de véhicules ou de conditions météorologiques. Les clusters informatiques très étroitement couplés sont conçus pour des travaux qui peuvent se rapprocher du « supercalcul ».

Les « clusters à haute disponibilité » (également appelés clusters de basculement ou clusters HA) améliorent la disponibilité de l'approche cluster. Ils fonctionnent en ayant des nœuds redondants , qui sont ensuite utilisés pour fournir un service lorsque des composants du système tombent en panne. Les implémentations de cluster HA tentent d'utiliser la redondance des composants du cluster pour éliminer les points de défaillance uniques . Il existe des implémentations commerciales de clusters à haute disponibilité pour de nombreux systèmes d'exploitation. Le projet Linux-HA est un package HA gratuit couramment utilisé pour le système d'exploitation Linux .

Avantages

Les clusters sont principalement conçus dans un souci de performances, mais les installations reposent sur de nombreux autres facteurs. La tolérance aux pannes ( la capacité d'un système à continuer de fonctionner malgré un nœud défectueux ) permet l'évolutivité et, dans les situations de hautes performances, une faible fréquence des routines de maintenance, la consolidation des ressources (par exemple, RAID ) et la gestion centralisée. Les avantages incluent la possibilité de récupérer les données en cas de sinistre et la fourniture d'un traitement parallèle des données et d'une capacité de traitement élevée.

En termes d'évolutivité, les clusters offrent cette possibilité grâce à leur capacité à ajouter des nœuds horizontalement. Cela signifie que davantage d'ordinateurs peuvent être ajoutés au cluster, afin d'améliorer ses performances, sa redondance et sa tolérance aux pannes. Cela peut être une solution peu coûteuse pour un cluster plus performant par rapport à la mise à l'échelle d'un seul nœud du cluster. Cette propriété des clusters d'ordinateurs peut permettre l'exécution de charges de calcul plus importantes par un plus grand nombre d'ordinateurs moins performants.

Lors de l'ajout d'un nouveau nœud à un cluster, la fiabilité augmente car il n'est pas nécessaire de mettre hors service l'ensemble du cluster. Un seul nœud peut être mis hors service pour maintenance, tandis que le reste du cluster prend en charge la charge de ce nœud individuel.

Si vous disposez d'un grand nombre d'ordinateurs regroupés en cluster, cela se prête à l'utilisation de systèmes de fichiers distribués et de RAID , qui peuvent tous deux augmenter la fiabilité et la vitesse d'un cluster.

Conception et configuration

Une configuration typique de Beowulf

L'un des problèmes de conception d'un cluster est le degré de couplage entre les nœuds individuels. Par exemple, une seule tâche informatique peut nécessiter une communication fréquente entre les nœuds : cela implique que le cluster partage un réseau dédié, est densément localisé et possède probablement des nœuds homogènes. L'autre extrême est celui où une tâche informatique utilise un ou quelques nœuds et nécessite peu ou pas de communication entre les nœuds, ce qui se rapproche du calcul en grille .

Dans un cluster Beowulf , les programmes d'application ne voient jamais les nœuds de calcul (également appelés ordinateurs esclaves) mais interagissent uniquement avec le « maître », qui est un ordinateur spécifique gérant la planification et la gestion des esclaves. Dans une implémentation typique, le maître dispose de deux interfaces réseau, l'une qui communique avec le réseau privé Beowulf pour les esclaves, l'autre pour le réseau à usage général de l'organisation. Les ordinateurs esclaves ont généralement leur propre version du même système d'exploitation, ainsi qu'une mémoire locale et un espace disque. Cependant, le réseau esclave privé peut également disposer d'un serveur de fichiers volumineux et partagé qui stocke des données persistantes globales, auxquelles les esclaves accèdent selon les besoins.

Un cluster DEGIMA à 144 nœuds à usage spécial est conçu pour exécuter des simulations astrophysiques à N corps à l'aide du code d'arbre parallèle à marches multiples, plutôt que des calculs scientifiques à usage général.

En raison de la puissance de calcul croissante de chaque génération de consoles de jeu , une nouvelle utilisation est apparue, où elles sont réutilisées dans des clusters de calcul haute performance (HPC). Certains exemples de clusters de consoles de jeu sont les clusters Sony PlayStation et Microsoft Xbox . Un autre exemple de produit de jeu grand public est la station de travail Nvidia Tesla Personal Supercomputer , qui utilise plusieurs puces de processeur d'accélérateur graphique. Outre les consoles de jeu, des cartes graphiques haut de gamme peuvent également être utilisées à la place. L'utilisation de cartes graphiques (ou plutôt de leurs GPU) pour effectuer des calculs pour le calcul en grille est beaucoup plus économique que l'utilisation de CPU, bien qu'elle soit moins précise. Cependant, lorsqu'elles utilisent des valeurs à double précision, elles deviennent aussi précises à utiliser que les CPU et sont toujours beaucoup moins coûteuses (coût d'achat).

Les clusters informatiques ont toujours fonctionné sur des ordinateurs physiques distincts avec le même système d'exploitation . Avec l'avènement de la virtualisation , les nœuds du cluster peuvent fonctionner sur des ordinateurs physiques distincts avec des systèmes d'exploitation différents qui sont peints au-dessus avec une couche virtuelle pour se ressembler. Le cluster peut également être virtualisé sur diverses configurations au fur et à mesure de la maintenance ; un exemple d'implémentation est Xen comme gestionnaire de virtualisation avec Linux-HA .

Partage et communication des données

Partage de données

Un groupe de Nehalem de NEC

Les supercalculateurs sont apparus dans les années 1980, au même titre que les grappes d'ordinateurs . L'un des éléments qui distinguait les trois classes à cette époque était que les premiers supercalculateurs s'appuyaient sur une mémoire partagée . Les grappes n'utilisent généralement pas de mémoire partagée physiquement, et de nombreuses architectures de supercalculateurs l'ont également abandonnée.

Cependant, l'utilisation d'un système de fichiers en cluster est essentielle dans les clusters informatiques modernes. Les exemples incluent le système de fichiers parallèle général d'IBM , les volumes partagés en cluster de Microsoft ou le système de fichiers en cluster Oracle .

Transmission de messages et communication

Deux approches largement utilisées pour la communication entre les nœuds de cluster sont MPI ( Message Passing Interface ) et PVM ( Parallel Virtual Machine ).

PVM a été développé au laboratoire national d'Oak Ridge vers 1989 avant que MPI ne soit disponible. PVM doit être installé directement sur chaque nœud de cluster et fournit un ensemble de bibliothèques logicielles qui décrivent le nœud comme une « machine virtuelle parallèle ». PVM fournit un environnement d'exécution pour la transmission de messages, la gestion des tâches et des ressources et la notification des pannes. PVM peut être utilisé par des programmes utilisateur écrits en C, C++ ou Fortran, etc.

Le MPI est né au début des années 1990 de discussions entre 40 organisations. L'effort initial a été soutenu par l'ARPA et la National Science Foundation . Plutôt que de repartir de zéro, la conception du MPI s'est inspirée de diverses fonctionnalités disponibles dans les systèmes commerciaux de l'époque. Les spécifications MPI ont ensuite donné lieu à des implémentations spécifiques. Les implémentations MPI utilisent généralement TCP/IP et des connexions socket. Le MPI est désormais un modèle de communication largement disponible qui permet d'écrire des programmes parallèles dans des langages tels que C , Fortran , Python , etc. Ainsi, contrairement à PVM qui fournit une implémentation concrète, le MPI est une spécification qui a été implémentée dans des systèmes tels que MPICH et Open MPI .

Gestion des clusters

Mini-cluster de Cubieboards à faible coût et à faible consommation d'énergie , utilisant Apache Hadoop sur Lubuntu
Un échantillon préliminaire du système informatique en cluster Ground Electronics/AB Open Circumference C25 , équipé de 8x Raspberry Pi 3 Model B+ et 1x cartes UDOO x86

L'un des défis de l'utilisation d'un cluster informatique est le coût de son administration, qui peut parfois être aussi élevé que le coût d'administration de N machines indépendantes, si le cluster comporte N nœuds. Dans certains cas, cela offre un avantage aux architectures à mémoire partagée avec des coûts d'administration inférieurs. Cela a également rendu les machines virtuelles populaires, en raison de la facilité d'administration.

Planification des tâches

Lorsqu'un grand cluster multi-utilisateurs doit accéder à de très grandes quantités de données, la planification des tâches devient un défi. Dans un cluster CPU-GPU hétérogène avec un environnement d'application complexe, les performances de chaque tâche dépendent des caractéristiques du cluster sous-jacent. Par conséquent, le mappage des tâches sur les cœurs de processeur et les périphériques GPU pose des défis importants. Il s'agit d'un domaine de recherche en cours ; des algorithmes qui combinent et étendent MapReduce et Hadoop ont été proposés et étudiés.

Gestion des défaillances des nœuds

Lorsqu'un nœud d'un cluster tombe en panne, des stratégies telles que le « fencing » peuvent être employées pour maintenir le reste du système opérationnel. Le fencing est le processus d'isolement d'un nœud ou de protection des ressources partagées lorsqu'un nœud semble dysfonctionner. Il existe deux classes de méthodes de fencing ; l'une désactive un nœud lui-même et l'autre interdit l'accès aux ressources telles que les disques partagés.

La méthode STONITH signifie « Shoot The Other Node In The Head » (tirer sur l'autre nœud dans la tête), ce qui signifie que le nœud suspect est désactivé ou hors tension. Par exemple, le power fencing utilise un contrôleur de puissance pour éteindre un nœud inutilisable.

L' approche de clôture des ressources interdit l'accès aux ressources sans mettre le nœud hors tension. Cela peut inclure une clôture de réservation persistante via SCSI3 , une clôture Fibre Channel pour désactiver le port Fibre Channel ou une clôture GNBD ( Global Network Block Device ) pour désactiver l'accès au serveur GNBD.

Développement et administration de logiciels

Programmation parallèle

Les clusters d'équilibrage de charge tels que les serveurs Web utilisent des architectures de cluster pour prendre en charge un grand nombre d'utilisateurs et chaque demande d'utilisateur est généralement acheminée vers un nœud spécifique, ce qui permet d'obtenir un parallélisme des tâches sans coopération multi-nœuds, étant donné que l'objectif principal du système est de fournir un accès utilisateur rapide aux données partagées. Cependant, les « clusters d'ordinateurs » qui effectuent des calculs complexes pour un petit nombre d'utilisateurs doivent tirer parti des capacités de traitement parallèle du cluster et répartir « le même calcul » entre plusieurs nœuds.

La parallélisation automatique des programmes reste un défi technique, mais les modèles de programmation parallèle peuvent être utilisés pour réaliser un degré de parallélisme plus élevé via l'exécution simultanée de parties distinctes d'un programme sur différents processeurs.

Débogage et surveillance

Le développement et le débogage de programmes parallèles sur un cluster nécessitent des primitives de langage parallèle et des outils adaptés tels que ceux discutés par le High Performance Debugging Forum (HPDF) qui a abouti aux spécifications HPD. Des outils tels que TotalView ont ensuite été développés pour déboguer des implémentations parallèles sur des clusters d'ordinateurs qui utilisent Message Passing Interface (MPI) ou Parallel Virtual Machine (PVM) pour la transmission de messages.

Le système Network of Workstations (NOW) de l'Université de Californie à Berkeley collecte les données des clusters et les stocke dans une base de données, tandis qu'un système tel que PARMON, développé en Inde, permet d'observer et de gérer visuellement de grands clusters.

Le point de contrôle d'application peut être utilisé pour restaurer un état donné du système lorsqu'un nœud tombe en panne pendant un long calcul multi-nœuds. Cela est essentiel dans les grands clusters, étant donné que plus le nombre de nœuds augmente, plus la probabilité de défaillance du nœud sous de lourdes charges de calcul augmente également. Le point de contrôle peut restaurer le système à un état stable afin que le traitement puisse reprendre sans avoir à recalculer les résultats.

Implémentations

Le monde Linux prend en charge divers logiciels de clustering ; pour le clustering d'applications, il existe distcc et MPICH . Linux Virtual Server , Linux-HA – des clusters basés sur des directeurs qui permettent de distribuer les demandes entrantes de services sur plusieurs nœuds de cluster. MOSIX , LinuxPMI , Kerrighed et OpenSSI sont des clusters complets intégrés au noyau qui permettent la migration automatique des processus entre des nœuds homogènes. OpenSSI , openMosix et Kerrighed sont des implémentations d'images mono-système .

Le cluster informatique Microsoft Windows Server 2003 basé sur la plate-forme Windows Server fournit des éléments pour le calcul haute performance tels que le planificateur de tâches, la bibliothèque MSMPI et les outils de gestion.

gLite est un ensemble de technologies middleware créé par le projet Enabling Grids for E-sciencE (EGEE).

slurm est également utilisé pour planifier et gérer certains des plus grands clusters de supercalculateurs (voir la liste top500).

Autres approches

Bien que la plupart des clusters informatiques soient des installations permanentes, des tentatives de calcul flash mob ont été faites pour créer des clusters de courte durée destinés à des calculs spécifiques. Cependant, les systèmes de calcul volontaire à plus grande échelle tels que les systèmes basés sur BOINC ont eu plus d'adeptes.

Plus d articles de Worldlex Wiki

Revenez a l index pour explorer davantage de pages sur l histoire, la science, la culture, la geographie et la societe en francais.

Explorer l index