Ce manuel fournit des instructions pour la création d'un type de ressources destiné à une application telle qu'Oracle®, Sun JavaTM System Web Server (anciennement Sun ONE Web Server) ou DNS. Il s'adresse aux développeurs de types de ressources.
Ce chapitre présente les concepts à comprendre pour développer un service de données. Il contient les rubriques suivantes :
les expressions type de ressource et service de données sont utilisées de façon interchangeable dans ce manuel. Le terme agent, rarement utilisé dans ce manuel, désigne un type de ressource ou un service de données.
Le système Sun Cluster vous permet de gérer et d'administrer vos applications comme des ressources hautement disponibles ou évolutives. Le gestionnaire de groupes de ressources (Resource Group Manager, RGM) fournit la structure de base de la haute disponibilité et de l'évolutivité. Son interface de programmation est constituée des éléments suivants :
Un ensemble de méthodes de rappel à créer pour l'autoriser à contrôler une application du cluster.
L'interface de programmation d'application de gestion des ressources (Resource Management API, APIGR), ensemble de fonctions et de commandes API de bas niveau qui vous permet de créer les méthodes de rappel. Ces API sont mises en œuvre dans la bibliothèque libscha.so.
L'utilitaire de contrôle de processus (Process Monitor Facility, PMF), qui vous permet de contrôler et de redémarrer des processus du cluster.
La bibliothèque de développement de services de données (Data Service Development Library, DSDL), ensemble de fonctions de bibliothèque qui encapsule les API de bas niveau et la fonction de gestion de processus à un niveau plus élevé. La bibliothèque DSDL fournit quelques fonctions destinées à faciliter la création de méthodes de rappel. Ces fonctions sont mises en œuvre dans la bibliothèque libdsdev.so.
La figure ci-dessous illustre les relations entre ces éléments.
SunPlex Agent Builder (décrit au Chapitre 9, SunPlex Agent Builder) est un outil du package Sun Cluster qui automatise la création des services de données. Il génère du code de service de données en langage C (s'il utilise les fonctions de la bibliothèque DSDL pour écrire les commandes de rappel) ou Korn (ksh) (s'il utilise les commandes API de bas niveau).
Le gestionnaire RGM est exécuté, en tant que démon, sur chaque nœud du cluster ; il démarre et arrête automatiquement les ressources des nœuds sélectionnés suivant des règles préconfigurées. Il assure la haute disponibilité d'une ressource, en cas de défaillance ou de redémarrage d'un nœud, en arrêtant cette ressource sur le nœud affecté et en la redémarrant sur un autre nœud. Il démarre et arrête automatiquement les détecteurs spécifiques à chaque ressource, qui détectent les défaillances de ressources et réaffectent les ressources défectueuses à d'autres nœuds ou qui surveillent d'autres aspects des performances des ressources.
Le RGM prend en charge aussi bien les ressources de basculement (qui ne peuvent être connectées qu'à un seul nœud à la fois) que les ressources évolutives (qui peuvent être connectées à plusieurs nœuds à la fois).
Cette rubrique définit certains termes fondamentaux et présente plus en détail le gestionnaire RGM et ses interfaces associées.
Le gestionnaire RGM gère trois grands types d'objets : types de ressources, ressources et groupes de ressources. Que sont ces objets ? Nous allons prendre un exemple pour le savoir.
Vous mettez en œuvre un type de ressources, ha-oracle, qui rend hautement disponible une application de base de données Oracle existante. Un utilisateur final crée une base de données de marketing, une base de données d'ingénierie et une base de données financière, chacune étant une ressource du type ha-oracle. L'administrateur du cluster place ces ressources dans des groupes de ressources différents, de sorte qu'elles soient exécutées sur des nœuds différents et basculent indépendamment les unes des autres. Vous créez un deuxième type de ressources, ha-calendar, pour mettre en œuvre un serveur de calendrier hautement disponible, qui nécessite une base de données Oracle. L'administrateur de cluster place la ressource dédiée au calendrier financier dans le groupe de ressources dans lequel figure déjà la base de données financière. Ainsi, ces deux ressources sont exécutées sur le même nœud et basculent en même temps.
Un type de ressources comprend les éléments suivants :
Une application à exécuter sur le cluster
Des programmes de contrôle que le RGM utilise comme méthodes de rappel pour gérer l'application en tant que ressource de cluster
Un ensemble de propriétés intégré à la configuration statique du cluster
Le RGM utilise des propriétés de type de ressources pour gérer les ressources d'un type spécifique.
un type de ressources peut représenter des ressources système autres que des applications : par exemple, il peut représenter des adresses réseau.
Les propriétés du type de ressources et leurs valeurs sont définies dans un fichier d'enregistrement du type de ressources (fichier RTR). Ce fichier respecte le format décrit dans la rubrique Paramétrage des propriétés de ressources et de types de ressources et la page de manuel rt_reg(4). Pour voir une description d'un exemple de fichier RTR, consultez la rubrique Définition du fichier d'enregistrement du type de ressource.
La rubrique Propriétés des types de ressources fournit une liste des propriétés des types de ressources.
L'administrateur du cluster installe et enregistre sur un cluster l'application sous-jacente et de mise en œuvre des types de ressources. L'opération d'enregistrement ajoute les informations du fichier RTR à la configuration du cluster. La procédure d'enregistrement d'un service de données est décrite dans le document Sun Cluster Data Services Planning and Administration Guide for Solaris OS.
Chaque ressource hérite des propriétés et des valeurs de son type. En outre, il est possible de déclarer des propriétés de ressources dans le fichier RTR. La rubrique Propriétés des ressources fournit une liste des propriétés de ressources.
L'administrateur de clusters peut modifier les valeurs de certaines propriétés, selon la manière dont celles-ci sont définies dans le fichier RTR. Par exemple, les définitions de propriétés peuvent prévoir une plage de valeurs autorisées. Elles peuvent également indiquer à quels moments la propriété est réglable : jamais, à tout moment, à la création (lors de son ajout au cluster) ou lors de sa désactivation. Dans le cadre de ces définitions, l'administrateur du cluster peut modifier les propriétés en lançant des commandes d'administration.
Il peut créer un grand nombre de ressources du même type - chacune des ressources ayant son propre nom et son propre ensemble de valeurs de propriétés - afin d'exécuter plusieurs instances de l'application sous-jacente sur le même cluster. Chaque instanciation requiert un nom unique au sein du cluster.
Chaque ressource doit être configurée dans un groupe de ressources. Le RGM connecte et déconnecte simultanément toutes les ressources d'un groupe sur un même nœud. Il exécute alors les méthodes de rappel sur chacune des ressources du groupe.
Les nœuds auxquels un groupe de ressources est connecté sont appelés ses nœuds principaux. Un groupe de ressources est géré par chacun de ses nœuds principaux. Chaque groupe de ressources possède une propriété Nodelist qui identifie tous ses nœuds principaux ou maîtres potentiels. Cette propriété est définie par l'administrateur du cluster.
Un groupe de ressources possède également un ensemble de propriétés. Ces propriétés comprennent les propriétés de configuration définissables par l'administrateur du cluster et les propriétés dynamiques reflétant l'état actif du groupe de ressources et définies par le gestionnaire RGM.
Le RGM définit deux types de groupes de ressources : les groupes de ressources de basculement et les groupes de ressources évolutifs. Un groupe de ressources de basculement ne peut être connecté qu'à un seul nœud à la fois tandis qu'un groupe de ressources évolutives peut être connecté simultanément à plusieurs nœuds. Le gestionnaire RGM fournit un ensemble de propriétés pour prendre en charge la création de chaque type de groupe de ressources. Pour plus d'informations sur ces propriétés, voir Transfert d'un service de données sur un cluster et Mise en œuvre des méthodes de rappel.
La rubrique Propriétés du groupe de ressources fournit une liste des propriétés des groupes de ressources.
Le gestionnaire de groupes de ressources (RGM) est mis en œuvre sous la forme d'un démon, rgmd, exécuté sur chacun des nœuds d'un cluster. Tous les processus rgmd communiquent entre eux, ce qui leur permet de se comporter comme un utilitaire unique, à l'échelle du cluster.
Le gestionnaire RGM prend en charge les fonctions suivantes :
Lorsqu'un nœud démarre ou s'arrête, le RGM tente de maintenir la disponibilité de tous les groupes de ressources gérés en les connectant automatiquement à des nœuds maîtres fonctionnels.
Si une ressource spécifique tombe en panne, son programme de contrôle peut demander le redémarrage du groupe de ressources sur le même ou un nouveau noeud maître.
L'administrateur du cluster peut lancer une commande administrative demandant l'exécution d'une des actions suivantes :
Changer le maître d'un groupe de ressources.
Activer ou désactiver une ressource dans un groupe.
Créer, modifier ou supprimer une ressource, un groupe ou un type de ressources.
Chaque fois que le RGM active des modifications de configuration, il coordonne ses actions sur tous les nœuds appartenant au cluster. On parle alors de reconfiguration. Pour modifier l'état d'une ressource individuelle, le RGM lui applique une méthode de rappel propre au type de ressources.
La structure Sun Cluster utilise un mécanisme de rappel pour assurer la communication entre un service de données et le RGM. Elle définit un ensemble de méthodes de rappel (avec leurs arguments et les valeurs renvoyées), ainsi que les circonstances dans lesquelles le RGM appelle chaque méthode.
Pour créer un service de données, on code un ensemble de méthodes de rappel et on met en œuvre chacune de ces méthodes comme un programme de contrôle que le RGM peut appeler : le service de données n'est donc pas un exécutable unique, mais regroupe un certain nombre de scripts (ksh) ou de binaires exécutables (C), dont chacun peut être appelé directement par le gestionnaire RGM.
Les méthodes sont enregistrées auprès du RGM via le fichier RTR. Celui-ci identifie le programme correspondant à chacune des méthodes mises en œuvre pour le service de données. Lorsqu'un administrateur de clusters enregistre le service de données sur un cluster, le RGM lit le fichier RTR, qui fournit l'identité des programmes de rappel, ainsi que d'autres informations.
Les seules méthodes de rappel indispensables (quel que soit le type de ressources) sont une méthode de démarrage ( Start ou Prenet_start) et une méthode d'arrêt (Stop or Postnet_stop).
Les méthodes de rappel peuvent être regroupées dans les catégories suivantes :
Méthodes de contrôle et d'initialisation
Les méthodes Start et Stop démarrent et arrêtent les ressources d'un groupe lors de la connexion ou de la déconnexion de ce dernier.
Les méthodes Init, Fini et Boot exécutent du code d'initialisation ou d'arrêt sur une ressource.
Méthodes d'assistance à l'administration
La méthode Validate contrôle les propriétés définies par les actions administratives.
La méthode Update met à jour les paramètres des propriétés d'une ressource en ligne.
Méthodes relatives au réseau
Les méthodes Prenet_start et Postnet_stop effectuent des actions de démarrage ou d'arrêt spécifiques avant que les adresses réseau d'un groupe de ressources soient configurées comme actives, ou après qu'elles ont été configurées comme inactives.
Méthodes de contrôle des détecteurs
Les méthodes Monitor_start et Monitor_stop lancent ou arrêtent le détecteur d'une ressource.
La méthode Monitor_check évalue la fiabilité d'un nœud avant qu'un groupe de ressources ne soit basculé sur ce nœud.
Pour plus d'informations sur les méthodes de rappel, consultez le Chapitre 3, Référence concernant l'API de gestion des ressources et la page de manuel rt_callbacks(1HA). Pour connaître les méthodes de rappel de certains exemples de services de données, consultez le Chapitre 5, Service de données modèle et le Chapitre 8, Mise en oeuvre du type de ressource DSDL modèle .
Pour l'écriture du code des services de données, l'architecture de gestion des ressources fournit une API de bas niveau (ou de base), une bibliothèque de niveau plus élevé reposant sur l'API de base et l'outil SunPlex Agent Builder, qui peut créer automatiquement un service de données à partir de données de base saisies par l'utilisateur.
L'interface APIGR fournit un ensemble de fonctions de bas niveau qui permettent à un service de données d'accéder à des informations sur les ressources, les groupes et les types de ressources du système, de demander un redémarrage ou un basculement local et de définir le statut d'une ressource. Ces fonctions sont accessibles par le biais de la bibliothèque libscha.so. L'interface APIGR fournit ces méthodes de rappel sous la forme de commandes shell et de fonctions C. Pour plus d'informations sur les fonctions de l'interface APIGR, reportez-vous à la page de manuel scha_calls(3HA) et au Chapitre 3, Référence concernant l'API de gestion des ressources. Pour voir des exemples d'utilisation de ces fonctions dans des méthodes de rappel de services de données, consultez le Chapitre 5, Service de données modèle.
Au niveau supérieur à celui de l'interface APIGR, la bibliothèque DSDL fournit une structure intégrée plus évoluée, tout en conservant le modèle de rappel de méthodes du RGM. Ses fonctions sont hébergées par la bibliothèque libdsdev.so. La bibliothèque DSDL réunit plusieurs utilitaires de développement de services de données, notamment :
libscha.so, qui fournit les API de gestion de ressources de bas niveau.
PMF, qui permet de contrôler les processus ainsi que leurs descendants et de les redémarrer lorsqu'ils s'arrêtent. Reportez-vous aux pages de manuel pmfadm(1M) et rpc.pmfd(1M).
hatimerun, utilitaire qui permet d'exécuter les programmes respectant un délai d'attente. Reportez-vous à la page de manuel hatimerun(1M).
Avec la plupart des applications, la bibliothèque DSDL fournit toutes ou presque toutes les fonctionnalités dont vous avez besoin pour concevoir un service de données. Notez, toutefois, que la bibliothèque DSDL ne remplace pas l'interface API de bas niveau mais l'encapsule et l'étend. En fait, un grand nombre de fonctions de la bibliothèque DSDL appellent les fonctions du fichier libscha.so. C'est le cas, par exemple, lorsque vous utilisez la bibliothèque DSDL pour coder la majeure partie de votre service de données.
Pour plus d'informations sur la bibliothèque DSDL, reportez-vous au Chapitre 6, Bibliothèque de développement de services de données et à la page de manuel scha_calls(3HA).
Agent Builder est un outil automatisant la création d'un service de données. Une fois entrées les informations élémentaires sur l'application cible et le service de données à créer, Agent Builder génère un service de données qui inclut du code source et du code exécutable (shell Korn ou C), un fichier RTR personnalisé et un package Solaris.
Vous pouvez utiliser Agent Builder avec la plupart des applications pour générer un service de données complet en n'y apportant que des modifications manuelles mineures. Les applications dont les exigences sont plus complexes (ajout de contrôles de validation aux propriétés additionnelles par exemple) peuvent requérir des actions qu'Agent Builder ne peut réaliser. Cependant, même dans ces cas, vous pouvez utiliser Agent Builder pour créer la majeure partie du code et coder manuellement le reste. Vous pouvez n'utiliser Agent Builder que pour générer le package Solaris.
Sun Cluster fournit une interface graphique et un ensemble de commandes d'administration de cluster.
SunPlex Manager est un outil basé sur le Web qui vous permet d'effectuer les tâches suivantes :
Installer un cluster
Administrer un cluster
Créer et configurer des ressources et des groupes de ressources
Configurer des services de données à l'aide du logiciel Sun Cluster
Pour savoir comment installer SunPlex Manager et comment l'utiliser pour installer le logiciel de cluster, voir Guide d’installation du logiciel Sun Cluster pour SE Solaris. SunPlex Manager dispose d'une aide en ligne sur la plupart des tâches administratives uniques.
L'utilitaire scsetup(1M) vous permet de mener à bien la plupart des tâches d'administration de Sun Cluster.
scsetup vous permet d'administrer les éléments suivants de Sun Cluster :
quorum ;
groupes de ressources ;
services de données ;
interconnexion de cluster ;
groupes de périphériques et volumes ;
noms d'hôtes privés ;
nouveaux nœuds ;
autres propriétés du cluster.
Il vous permet également d'effectuer les opérations suivantes :
Créer un groupe de ressources
Ajouter des ressources réseau à un groupe de ressources
Ajouter une ressource de services de données à un groupe de ressources
Enregistrer un type de ressources
Connecter ou déconnecter un groupe de ressources
Basculer un groupe de ressources
Activer ou désactiver une ressource
Modifier les propriétés d'un groupe de ressources
Modifier les propriétés d'une ressource
Supprimer une ressource d'un groupe de ressources
Supprimer un groupe de ressources
Supprimer l'indicateur d'erreur Stop_failed d'une ressource
Pour administrer les objets du gestionnaire RGM, Sun Cluster propose les commandes suivantes : scrgadm, scswitch et scstat -g.
La commande scrgadm vous permet d'afficher, de créer, de configurer ou de supprimer un type de ressources, un groupe de ressources, ainsi que les objets de ressource utilisés par le gestionnaire RGM. Elle fait partie de l'interface administrative du cluster, mais ne doit pas être utilisée dans le même contexte de programmation que celui de l'interface d'application décrite dans le reste de ce chapitre. La configuration du cluster, au sein de laquelle l'interface API fonctionne, est réalisée à l'aide de l'outil scrgadm. La compréhension de l'interface d'application passe par la compréhension de l'interface administrative. Pour plus d'informations sur les tâches administratives que permet d'exécuter cette commande, reportez-vous à la page de manuel scrgadm(1M).
La commande scswitch permet de connecter et de déconnecter des groupes de ressources sur des nœuds donnés. Elle permet également d'activer ou de désactiver une ressource ou son détecteur. Pour plus d'informations sur les tâches administratives que la commande scswitch permet d'effectuer, reportez-vous à la page de manuel scswitch(1M).
La commande scstat -g indique l'état dynamique courant de tous les groupes de ressources et de toutes les ressources. Pour plus d'informations sur les tâches administratives qu'elle permet d'effectuer, reportez-vous à la page de manuel scstat(1M).