FR 3001817 A1 20140808 FR 1351058 A 20130207 Procédé de configuration d'une pluralité de noeuds d'une grappe d'ordinateur. DOMAINE TECHNIQUE DE L'INVENTION [0001] L'invention se rapporte à un procédé de configuration d'une pluralité de noeuds d'une grappe de serveurs. [0002] Serveur est un terme usité dans le domaine de l'invention. Un serveur est aussi un ordinateur en ce sens qu'il en a toutes les caractéristiques. [0003] On entendra par grappe de serveurs dans le cadre de la présente demande un regroupement de plusieurs ordinateurs aptes à coopérer pour la réalisation d'une tâche. Sont en particulier visées les grappes de serveurs à haute performance aussi appelées cluster HPC, ferme de calcul, ou tout simplement grappe. Une grappe de serveurs est classiquement un ensemble de quelques milliers d'ordinateurs, classiquement de mille à cinq mille. Cependant il existe des grappes de serveurs plus petites et plus grosses. On connaît par exemple une grappe de dix ordinateurs. L'invention se rapporte à l'ensemble des grappes de serveurs quelques soient leurs tailles. [0004] Dans une grappe de serveurs il y en a au moins un qui a le rôle de superviseur. Ce rôle est aussi désigné comme rôle de management. Les ordinateurs non superviseurs sont désignés comme les noeuds de la grappe. On entendra par déploiement le fait de fournir à chaque noeud un système d'exploitation. [0005] Dans le domaine de l'invention, le terme grappe est communément utilisé pour parler d'une grappe de serveurs. ETAT DE LA TECHNIQUE ANTERIEURE [0006] Dans l'état de la technique, la configuration d'une grappe de serveurs se fait en déployant une image sur les noeuds de la grappe. Un déploiement d'image comporte les étapes suivantes : - Installation et configuration d'un ordinateur de référence en fonction de la tâche de traitement attribuée à la grappe, cet ordinateur n'appartient pas à la grappe en ce sens qu'il n'est ni un superviseur ni un noeud ; - Prise de l'image : - Recopie du système de fichiers de la machine de référence, on obtient ainsi une copie du système de fichiers de référence, - Association à la copie du système de fichiers de référence d'instructions de configuration matérielle, - Emission, par le superviseur de la grappe vers les noeuds de la grappe, d'une commande de déploiement - Réception et exécution de la commande de déploiement par les noeuds de la grappe : - Chargement d'un micronoyau dans la mémoire du noeud pour : - Récupérer la copie du système de fichiers de référence et les instructions de configuration - Exécuter les instructions de configuration matérielle, - Enregistrer sur le noeud configuré la copie du système de fichiers de référence. [0007] A ce stade, et une fois ces opérations réalisées sur tous les noeuds, la grappe est prête à redémarrer avec son nouveau système d'exploitation et/ou sa nouvelle configuration. [0008] II n'y a alors plus de problème jusqu'au moment où l'on doit reconfigurer la grappe. Il faut alors procéder à un nouveau déploiement. [0009] Pendant toutes ces étapes le cluster est indisponible pour des calculs. La durée de ces étapes représente : - plusieurs minutes, - des risques de pannes liés aux deux séquences de démarrage. [0010] En particulier une commande de déploiement implique forcément un redémarrage des noeuds, le déploiement sur un noeud se faisant au moment du démarrage du noeud. [0011] II s'agit donc d'une procédure lourde rendant la grappe indisponible pour toute activité d'exploitation. EXPOSE DE L'INVENTION [0012] L'invention vise à remédier à tout ou partie des inconvénients de l'état de la technique identifiés ci-dessus, et notamment à proposer des moyens pour permettre de reconfigurer de manière sure une grappe de serveurs sans avoir à effectuer un déploiement d'une image. [0013] L'invention enseigne l'utilisation d'une application de gestion de configurations de serveurs. Une telle application est basée sur un fonctionnement de type client-serveur. Un client, dans l'invention un noeud de la grappe, se connecte à un serveur de configuration pour obtenir la configuration qui lui est associée. Cette configuration est alors appliquée au noeud par le noeud lui-même. Cependant, les applications de gestions de configurations de serveurs connues ne prévoient pas d'intelligence coté serveur mais uniquement coté client. En d'autres termes ces applications de gestion de configurations peuvent intégrer des moteurs d'interprétation d'instructions mais uniquement coté client. Au niveau du serveur tout est statique et alimenté à la main par saisie. Ainsi l'invention prévoit des moyens de générer dynamiquement, au niveau d'un serveur de gestion de configuration, des configurations qui seront récupérées par les clients. Une application de gestion de configurations d'ordinateurs et aussi appelé un gestionnaire de configurations. [0014] Dans ce dessein, un aspect de l'invention se rapporte à un procédé de configuration d'une pluralité de noeuds d'une grappe d'ordinateurs comportant les étapes suivantes : - Identification d'ordinateurs de la grappe d'ordinateur formant la pluralité d'ordinateurs à configurer, - Identification d'un environnement d'un gestionnaire de configurations d'ordinateurs, - S'il existe des instructions de production d'instructions de configuration alors : - Pour chaque ordinateur identifié production d'instructions de configuration selon les instructions de production d'instructions de configurations associées à l'environnement identifié, - Enregistrement d'une première base de données de configuration du gestionnaire de configurations d'ordinateurs par les instructions de configuration produite et associées à l'environnement identifié et aux ordinateurs identifiés, - Application, par le gestionnaire de configurations d'ordinateurs de l'environnement identifié aux ordinateurs identifiés. [0015] Outre les caractéristiques principales qui viennent d'être mentionnées dans le paragraphe précédent, le procédé/dispositif selon l'invention peut présenter une ou plusieurs caractéristiques complémentaires parmi les suivantes, considérées individuellement ou selon les combinaisons techniquement possibles: - l'identification des ordinateurs est réalisée par une liste énumérative d'identifiant des ordinateurs. - l'identification des ordinateurs est réalisée par l'interprétation d'une requête d'interrogation d'une deuxième base de données. - les instructions de configuration sont structurées en arbre, un premier niveau de l'arbre correspondant à un paramètre d'environnement, un deuxième niveau inférieur correspondant à un noeud de la grappe. - des moyens de production des informations de configuration sont intégrables dans un script de ligne de commandes. - l'étape d'application est réalisée avant l'étape de production d'instruction de configuration. - l'étape d'application est réalisée après l'étape d'alimentation de la première base de données. [0016] L'invention se rapporte également à un dispositif de stockage numérique comportant un fichier correspondant à des codes instructions mettant en oeuvre le procédé selon l'invention. [0017] L'invention se rapporte également à un dispositif mettant en oeuvre le procédé selon l'une des revendications précédentes. BREVE DESCRIPTION DES FIGURES [0018] D'autres caractéristiques et avantages de l'invention ressortiront à la lecture de la description qui suit, en référence aux figures annexées, qui illustrent : - figure 1, une illustration d'une infrastructure permettant la mise en oeuvre de l'invention; - figure 2, une illustration d'étapes du procédé selon l'invention. [0019] [...] [0020] Pour plus de clarté, les éléments identiques ou similaires sont repérés par des signes de référence identiques sur l'ensemble des figures. [0021] L'invention sera mieux comprise la lecture de la description qui suit et à l'examen des figures qui l'accompagnent. Celles-ci sont présentées à titre indicatif et nullement limitatif de l'invention. DESCRIPTION DETAILLEE D'UN MODE DE REALISATION [0022] Pour la description du procédé on attribue des étapes ou des actions à des machines de type ordinateur. Une telle machine comporte au moins un microprocesseur et une mémoire de stockage. La mémoire de stockage permet d'enregistrer des codes instructions dont l'interprétation permet la mise en oeuvre des étapes ou des actions. Donc, lorsque l'on attribue une action à une machine, celle-ci est en fait réalisée par un microprocesseur de la machine interprétant des codes instructions enregistrés dans une mémoire de la machine. [0023] Pour la description du procédé on attribue des communications à des machines de type ordinateur. Ces communications sont réalisées via de échanges de messages selon un protocole prédéterminé mis en oeuvre au moins par une carte réseau, câblée ou sans câble. Chaque machine impliquée dans la communication comporte sa carte réseau connecté, via un bus, à un microprocesseur de la machine. Cela permet au microprocesseur de prendre en compte les messages reçus et d'en émettre. Les cartes réseau sont par ailleurs connectées à un réseau, par exemple de type Ethernet. Il y a d'autre type de réseau comme les réseaux à fibre optique ou les réseaux sans fil. Ces derniers ne sont pas courant dans les grappes hautes performances mais l'enseignement de l'invention reste valable même dans ce contexte. [0024] Lorsque l'on dit qu'une action est effectuée par un système d'exploitation, une application ou une zone de code instructions, cette action correspond à la mise en oeuvre, par un microprocesseur, de codes instructions 30 correspondant, comme décrit aux paragraphes précédents. [0025] Par code instruction on entend aussi bien des codes binaires natifs, que des codes intermédiaire interpréter par une machine virtuelle, par exemple Java, ou des scripts interprétés par des moteurs d'interprétations, par exemple Python, PERL,... la liste n'est pas exhaustive. Cela inclut les instructions intégrées du système d'exploitation. [0026] La figure 1 montre une grappe 500 de serveurs comportant un ordinateur 100 superviseur. L'ordinateur 100 superviseur comporte : - Un microprocesseur 110, - Une interface 120 réseau, - Un moyen 130 de stockage, par exemple un disque dur. [0027] L'homme du métier comprendra aisément qu'il s'agit d'une description pratique d'un moyen de stockage. Dans la pratique le moyen de stockage peut être composé de plusieurs composants physiques, disques durs selon plusieurs connectiques (IDE, SCSI, eSCSI, ATA, SATA, eSATA, USB,...) et plusieurs configurations (JBOD, RAIDO, RAID1, RAIDS,...), disque mémoire,... la liste n'est pas exhaustive. Ces remarques s'appliquent pour tous les ordinateurs décrits. [0028] Les éléments de l'ordinateur 100 superviseur sont interconnectés par un bus 140. Les éléments de l'ordinateur 100 superviseur interconnectés par le bus 140 sont : - Le microprocesseur 110, - L'interface 120 réseau, - Le moyen 130 de stockage. [0029] La figure 1 montre que le moyen 130 de stockage de l'ordinateur 100 superviseur comporte plusieurs zones. Parmi des zones de moyens de stockage on ne décrit et n'illustre que celles utiles à la compréhension de l'invention. L'ensemble de ces zones, décrites et non décrites, forment un système de fichiers. En particulier un système de fichiers 131 de l'ordinateur 100 superviseur comporte : - Une zone 132 application serveur de gestion de configurations : il s'agit des codes instructions correspondant à une application de gestion de configurations. Plus spécifiquement il s'agit de code instruction correspondant à la partie serveur de l'application de gestion de configurations. - Une zone 134 instructions de production d'instruction de configuration : il s'agit d'une zone spécifique à l'invention, il s'agit des codes instructions d'applications permettant de produire des instructions de configuration. - Une zone 136 première base de données de configuration : il s'agit d'une zone comportant des données utilisées par l'application de gestion de configurations. - Une zone138 deuxième base de données : il s'agit, par exemple, d'une base de données comportant des informations sur la configuration de la grappe et de ses noeuds. [0030] Une application de gestion de configuration est par exemple Puppet. D'autres applications seraient Chef, CFEngine... La liste n'est pas exhaustive. La structure et la nature de la première base 136 de données dépend de l'application de gestion de configuration utilisée. Dans le cas de Puppet la base de données est une arborescence de fichiers répartis dans différents répertoires Avec d'autres applications ma base de données pourrait être un moteur de base de donnée relationnel, NoSql ou autre. [0031] La figure 1 montre que la grappe 500 comporte un premier noeud 200. Le premier noeud 200 comporte : - Un microprocesseur 210, - Une interface 220 réseau, - Un moyen 230 de stockage, par exemple un disque dur. [0032] Les éléments du premier noeud 200 sont interconnectés par un bus 240. Les éléments du noeud 200 interconnectés par le bus 240 sont : - Le microprocesseur 210, - L'interface 220 réseau, - Le moyen 230 de stockage. [0033] La figure 1 montre que le moyen 230 de stockage du premier noeud 200 comporte plusieurs zones. En particulier un système de fichiers 231 du premier noeud 200 comporte : - Une zone 232 application cliente de gestion de configuration : il s'agit des codes instructions correspondant à une application de gestion de configurations. Plus spécifiquement il s'agit de code instruction correspondant à la partie cliente de l'application de gestion de configurations. [0034] Dans la mesure où l'on prévoit d'utiliser l'invention il est avantageux d'enregistrer les codes instructions de la zone 233 application cliente de gestion de configuration lors d'un déploiement d'une image sur les noeuds de la grappe. [0035] La grappe 500 comporte N ordinateurs/noeuds identiques au premier 5 noeud 200. Ces noeuds sont usuellement décrits dans la deuxième base 138 de données. Chaque noeud a un identifiant unique dans la deuxième base 138 de données. [0036] L'invention étant un procédé mis en oeuvre par un ordinateur elle comporte une interface permettant son lancement, c'est-à-dire l'initialisation de 10 son exécution par un ordinateur. Une telle interface offre la possibilité de saisir des paramètres. Par exemple pour une interface en ligne de commande on peut saisir des paramètres après le nom de la commande correspondant au programme que l'on souhaite lancer. On parle de paramètres de lancement. Ils sont identifiés par un commutateur et/ou par leur ordre de saisie. Les noeuds et l'ordinateur 15 superviseur sont interconnectés via un réseau 300. [0037] La figure 2 montre une étape 1010 d'identifications de noeuds de la grappe 500. Dans cette étape un utilisateur saisissant une commande correspondant à la mise en oeuvre de l'invention saisi un paramètre permettant d'identifier des noeuds dans la deuxième base 138 de données. Un tel paramètre 20 est, par exemple : - Une liste énumérant des identifiant : il ,i2,i3... - Une liste de plages de d'identifiants : il -i2,i3-i4... - Cela doit être interpréter comme les identifiant de il à i2 et les identifiants de i3 à i4. 25 - Un nom d'un fichier comportant une liste d'identifiant - Une commande dont l'interprétation par le moteur de gestion de la deuxième base 138 de données retourne une liste d'identifiant. - [0038] Les caractères de séparation [,-] utilisés dans les précédents exemples 30 sont arbitraires et pourraient être choisis autres. [0039] La figure 2 montre que l'étape 1010 d'identification de noeuds est suivie par une étape 1020 d'identification d'un environnement du gestionnaire 132 de configuration. Il s'agit de saisir un autre paramètre de lancement de l'invention. Un tel identifiant est signifiant pour la première base 136 de données du gestionnaire 132 de configurations. L'invention associe en plus à cet identifiant de configuration des instructions de production d'instructions de configuration. Cette association est soit intégrée au gestionnaire de configurations soit indépendante. [0040] Pa r exemple, dans le cas du gestionnaire de configurations Puppet, un environnement correspond à un répertoire. Il est alors possible, dans une hypothèse association intégrée, d'enregistrer les instructions de production d'instructions de configuration dans ce répertoire avec un nom particulier. Le nom particulier du fichier dépend, par exemple, du moment où les instructions contenues dans le fichier doivent être exécutée. Par exemple on a deux noms possibles : - PreApplique : pour des instructions qui doivent être exécutée avant l'application de configuration par le gestionnaire de configurations. - PostApplique : pour des instructions qui doivent être exécutée après l'application de configuration par le gestionnaire de configurations. [0041] Ces noms sont arbitraires ils pourraient être autres, mais dans une hypothèse intégrée dénué de sens pour le gestionnaire de configuration. [0042] Dans une hypothèse association indépendante, l'invention maintient, par exemple, une arborescence comportant un répertoire par identifiant 20 d'environnement, chaque répertoire comportant les fichiers PreApplique et PostApplique. [0043] Dans l'invention ces fichiers sont optionnels. C'est-à-dire que leur absence n'est pas considérée comme une erreur et n'interrompt pas l'exécution du programme. 25 [0044] Pour la suite de la description on se place dans une hypothèse association intégrée. [0045] La figure 2 montre que l'étape 1020 d'identification d'un environnement est suivie d'une première étape 1030 de test testant l'existence d'instructions à appliquer avant l'application de configuration par le gestionnaire de configurations. 30 C'est-à-dire que l'on teste l'existence d'un fichier nommée PreApplique dans le répertoire correspondant à l'environnement identifié à l'étape 1020 d'identification d'un environnement. [0046] Si le résultat de la première étape 1030 de test est que le fichier PreApplique existe alors on passe à une première étape 1040 de production d'instruction de configuration. La première étape 1040 de production d'instructions de configuration est suivie d'une première étape 1050 d'enregistrement, dans la première base 136 de données, des instructions de configuration produites. Les étapes 1040 de production d'instructions de configuration et première étape 1050 d'enregistrement des instructions de configuration produites sont répétées pour chaque noeud identifié à l'étape 1010 d'identification de noeuds. A la fin de l'itération on passe à une étape 1060 d'application de la configuration identifié à l'étape 1020 d'identification d'un environnement par le gestionnaire de configurations. [0047] Dans la première étape 1040 de production on exécute les instructions contenues dans le fichier nommé PreApplique avec comme paramètre un identifiant de noeud. Ces instructions permettent d'aller chercher des informations dans tous les endroits nécessaires : - Lecture d'une base de données, par exemple la deuxième base 138 de données, - Lecture d'un fichier - Appel d'une commande - Lectures de variables systèmes - Appel de processus systèmes - [0048] A partir des informations cherchées, on produit des instructions de configuration adaptées au noeud traité. [0049] Le fichier PreApplique et le fichier PostApplique sont indifféremment des scripts, scripts associés à un moteur d'interprétation spécifique ou des fichiers binaires. La différence entre un script et un script associé à un moteur d'interprétation est que le script est directement interprété par le système d'exploitation alors que le script associé à un moteur d'interprétation requiert l'invocation d'un moteur d'interprétation, par exemple Python, PERL, PHP... On rappelle qu'un script peut invoquer d'autres scripts et/ou des fichiers binaires. [0050] Dans la première étape 1050 d'enregistrement on enregistre les instructions produite à l'étape précédente en fonction du noeud traité et de l'environnement identifié à l'étape 1020 d'identification d'un environnement. [0051] Dans l'exemple choisit l'enregistrement se fait dans l'arborescence de configurations Puppet, dans un répertoire portant le nom de l'environnement identifié, puis dans un sous répertoire portant un nom lié à l'identifiant de noeud. Dans le cas du gestionnaire de configuration Puppet on parle d'un module. Cela correspond à une arborescence dont un niveau correspond à un identifiant d'environnement, un niveau inférieur correspondant aux noeuds de la grappe 500. [0052] Si le résultat de la première étape 1030 de test est que le fichier PreApplique n'existe pas, alors on passe directement à l'étape 1060 d'application. L'étape 1060 dépend du gestionnaire de configurations. [0053] Dans le cas du gestionnaire de configurations Puppet, dans l'étape 1060 d'application chaque noeud reçoit un message de configuration comportant l'identifiant d'environnement identifié à l'étape 1020 d'identification d'un environnement. Ces messages sont émis par la partie serveur du gestionnaire de configurations. Ces messages de configuration sont reçus et traité, par chaque noeud et par la partie cliente du gestionnaire de configurations. De manière simplifiée, chaque noeud émet, à destination de la partie serveur du gestionnaire de configurations, un message qui est une requête de demande d'instructions de configuration. Une telle requête de demande d'instructions de configuration comporte : - l'identifiant d'environnement compris dans le message configuration - son identifiant de noeud. [0054] Dans le cas du gestionnaire de configurations Puppet, l'identifiant de noeud est en fait un identifiant de module qui aura été transmis dans le message de configuration. [0055] En réponse à une requête de demande d'instructions de configuration la partie serveur du gestionnaire de configurations émet les instructions de configuration correspondantes. Ces instructions de configuration sont exécutées par le noeud ayant émis la requête de demande d'instructions de configuration. [0056] L'étape 1060 est suivie par une deuxième étape 1070 de test testant l'existence d'instructions à appliquer après l'application de configuration par le gestionnaire de configurations. C'est-à-dire que l'on teste l'existence d'un fichier nommée PostApplique dans le répertoire correspondant à l'environnement identifié à l'étape 1020 d'identification d'un environnement. [0057] Si le résultat de la deuxième étape 1070 de test est que le fichier PostApplique n'existe pas, alors on passe directement à une étape 1100 de fin. [0058] Si le résultat de la deuxième étape 1070 de test est que le fichier PostApplique existe alors on passe à une deuxième étape 1080 de production d'instruction de configuration. La deuxième étape 1080 de production d'instructions de configuration est suivie d'une deuxième étape 1090 d'enregistrement, dans la première base 136 de données, des instructions de configuration produites. La deuxième étape 1080 de production d'instructions de configuration et la première étape 1090 d'enregistrement des instructions de configuration produites sont répétées pour chaque noeud identifié à l'étape 1010 d'identification de noeuds. A la fin de l'itération on passe à l'étape 1100 de fin. [0059] La deuxième étape 180 de production est identique à la première étape 1040 de production. La deuxième étape 1090 d'enregistrement est identique à la première étape 1050 d'enregistrement. [0060] Ainsi l'invention tire le meilleur parti d'une application de gestions de configuration. De manière simplifiée et résumée l'invention peut se décrire comme suit : - Exécution d'instructions de mise à jour d'une base de données de configurations d'un gestionnaire de configuration - Application d'une configuration par le gestionnaire de configuration, - Exécution d'instructions de mise à jour d'une base de données de configurations du gestionnaire de configuration. [0061] Ainsi un changement de configuration et/ou une mise à jour peut être effectuée sans qu'il soit requis de redémarrer les noeuds d'une grappe de serveurs.30 REVENDICATIONS1. Procédé de configuration d'une pluralité de noeuds d'une grappe d'ordinateurs caractérisé en ce qu'il comporte les étapes suivantes : Identification (1010) d'ordinateurs de la grappe d'ordinateur formant la pluralité d'ordinateurs à configurer, Identification (1020) d'un environnement d'un gestionnaire de configurations d'ordinateurs, S'il existe (1030, 1070) des instructions de production d'instructions de configuration alors : Pour chaque ordinateur identifié production (1040, 4080) d'instructions de configuration selon les instructions de production d'instructions de configurations associées à l'environnement identifié, Enregistrement (1080, 1090) d'une première base de données de configuration du gestionnaire de configurations d'ordinateurs par les instructions de configuration produite et associées à l'environnement identifié et aux ordinateurs identifiés, Application (1060), par le gestionnaire de configurations d'ordinateurs de l'environnement identifié aux ordinateurs identifiés. 2. Procédé de configuration selon la revendication 1, caractérisé en ce que l'identification des ordinateurs est réalisée par une liste énumérative d'identifiant des ordinateurs. 3. Procédé de configuration selon la revendication 1, caractérisé en ce que l'identification des ordinateurs est réalisée par l'interprétation d'une requête d'interrogation d'une deuxième base de données. 4. Procédé selon l'une des revendications précédentes, caractérisé en ce que les instructions de configuration sont structurées en arbre, un premier niveau de 30 l'arbre correspondant à un paramètre d'environnement, un deuxième niveau inférieur correspondant à un noeud de la grappe. 14 3001817 5. Procédé selon l'une des revendications précédentes, caractérisé en ce que des moyens de production des instructions de configuration sont intégrables dans un script de ligne de commandes. 6. Procédé selon l'une des revendications précédentes, caractérisé en ce que 5 l'étape d'application est réalisée avant l'étape de production d'instruction de configuration. 7. Procédé selon l'une des revendications précédentes, caractérisé en ce que l'étape d'application est réalisée après l'étape d'enregistrement de la première base de donnée. 10 8. Dispositif de stockage numérique comportant un fichier correspondant à des codes instructions mettant en oeuvre le procédé selon l'une des revendications précédentes. 9. Dispositif mettant en oeuvre le procédé selon l'une des revendications précédentes. 15