Ce manuel fournit des procédures de création d'un type de ressources pour des applications telles que Oracle, SunTM One Web Server, DNS, etc. Par conséquent, il s'adresse aux développeurs de types de ressources.
Ce chapitre présente les concepts que vous devez maîtriser pour développer un service de données et contient les informations suivantes :
les expressions type de ressources et service de données sont utilisées de façon interchangeables dans ce manuel. Le terme agent, rarement usité dans ce manuel, signifie également type de ressources et service de données.
Le système Sun Cluster permet d'exécuter et d'administrer les applications en tant que ressources évolutives et hautement disponibles. La fonction de cluster appelée RGM (gestionnaire de groupes de ressources) est à l'origine du haut niveau de disponibilité et d'évolutivité. Les éléments constituant l'interface de programmation vers cette fonction sont :
Un ensemble de méthodes de rappel, que vous avez rédigées, permettant au RGM de contrôler une application sur le cluster.
L'interface de programme d'application de gestion des ressources (API GR), un ensemble de commandes et de fonctions API de bas niveau que vous pouvez utiliser pour rédiger des méthodes de rappel. Ces interfaces API sont mises en oeuvre dans la bibliothèque libscha.so.
Les fonctions de gestion de processus pour contrôler et redémarrer les processus sur le cluster.
La bibliothèque de développement de services de données (BDSD), un ensemble de fonctions de bibliothèque qui encapsule les fonctionnalités de gestion des processus et de l'interface API de bas niveau à un niveau supérieur et confère d'autres fonctionnalités pour faciliter l'écriture des méthodes de rappel. Ces fonctions sont mises en oeuvre dans le fichier libdsdev.so .
L'illustration indiquée ci-après présente l'interrelation entre ces éléments.
SunPlex Agent Builder TM est inclus dans le package Sun Cluster. Cet outil automatise le processus de création d'un service de données (reportez-vous au Chapitre 9). Agent Builder génère un code de service de données en C (à l'aide des fonctions BDSD pour rédiger des méthodes de rappel) ou en korn shell (ksh) (à l'aide des commandes API de bas niveau pour rédiger des méthodes de rappel).
Le gestionnaire RGM s'exécute comme un démon sur chaque noeud du cluster. Il démarre automatiquement et arrête les ressources sur les noeuds sélectionnés conformément à des règles prédéfinies. Le gestionnaire RGM assure le haut niveau de disponibilité d'une ressource en cas de dysfonctionnement ou de redémarrage d'un noeud en arrêtant la ressource sur le noeud concerné et en la démarrant sur un autre noeud. En outre, le gestionnaire RGM démarre et arrête automatiquement les détecteurs dédiés aux ressources pouvant détecter les dysfonctionnements au niveau des ressources, réallouer ces ressources sur un autre noeud ou contrôler d'autres aspects en termes de performances des ressources.
Le gestionnaire RGM prend en charge les ressources de basculement pouvant être connectées à un seul noeud à la fois et les ressources évolutives pouvant être connectées à plusieurs noeuds simultanément.
Cette rubrique traite de la terminologie fondamentale et présente de façon détaillée le gestionnaire RGM et les interfaces connexes.
Le gestionnaire RGM gère trois types fondamentaux d'objets interreliés : types de ressources, ressources et groupes de ressources. Un exemple peut être utilisé pour présenter ces objets, comme indiqué ci-après.
Un développeur met en oeuvre un type de ressources, ha-oracle, garantissant le haut niveau de disponibilité d'une application Oracle DBMS. Un utilisateur final définit des bases de données distinctes pour le marketing, l'ingénierie et la finance, chacune d'entre elles représentant une ressource de type ha-oracle. L'administrateur du cluster intègre ces ressources dans des groupes de ressources distincts, afin de pouvoir les exécuter sur différents noeuds et les basculer de façon indépendante. Un développeur crée un second type de ressources, ha-calendar, pour mettre en oeuvre un serveur d'agendas à haut niveau de disponibilité requérant une base de données Oracle. L'administrateur de cluster place la ressource dédiée à l'agenda 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 noeud et basculent en même temps.
Un type de ressources est constitué d'une application à exécuter sur un cluster, de programmes de gestion utilisés, comme les méthodes de rappel, par le gestionnaire RGM pour gérer l'application en tant que ressource de cluster et d'un ensemble de propriétés faisant partie intégrante de la configuration statique d'un cluster. Le gestionnaire RGM utilise des propriétés de type de ressources pour gérer les ressources d'un type spécifique.
en plus d'une application, un type de ressources peut représenter d'autres ressources système comme les adresses réseau.
Le développeur indique les propriétés du type de ressources qu'il conçoit et définit leur valeur dans un fichier RTR (Resource Type Registration). Le fichier RTR est conforme à un format bien défini dont vous trouverez une description dans la rubrique Paramétrage des propriétés de ressources et de types de ressources et à la page man rt_reg(4). Reportez-vous également à la rubrique Définition du fichier d'enregistrement du type de ressource pour obtenir la description du fichier d'enregistrement d'un exemple de type de ressources.
Le Tableau A–1 répertorie les propriétés de type de ressources.
L'administrateur du cluster installe et enregistre sur un cluster l'application sous-jacente et de mise en oeuvre des types de ressources. La procédure d'enregistrement ajoute à la configuration du cluster les informations issues du fichier d'enregistrement du type de ressources. Le document Sun Cluster 3.1 Data Service Planning and Administration Guide présente la procédure d'enregistrement d'un service de données.
Une ressource hérite des propriétés et des valeurs de son type de ressources. En outre, un développeur peut déclarer des propriétés de ressource dans le fichier d'enregistrement du type de ressources. Reportez-vous au Tableau A–2 pour obtenir la liste des propriétés de ressource.
L'administrateur de cluster peut modifier les valeurs de certaines propriétés suivant la façon dont elles sont spécifiées dans le fichier RTR. Par exemple, les définitions de propriété peuvent indiquer une plage de valeurs permises et spécifier quand la propriété est configurable (par exemple à la création, à tout moment ou jamais). L'administrateur du cluster peut modifier les propriétés dans le respect de ces spécifications à l'aide des commandes d'administration.
L'administrateur du cluster peut créer de nombreuses ressources du même type, chaque ressource possédant un nom et un ensemble de valeurs de propriété qui lui sont propres, afin qu'il soit possible d'exécuter plusieurs instances de l'application sous-jacente sur le cluster. Chaque instanciation requiert un nom unique au sein du cluster.
Chaque ressource doit être configurée dans un groupe de ressources. Le gestionnaire RGM connecte et déconnecte simultanément toutes les ressources d'un groupe sur un même noeud. Lorsque le gestionnaire RGM connecte ou déconnecte un groupe de ressources, il exécute des méthodes de rappel sur les ressources individuelles du groupe.
Les noeuds auxquels un groupe de ressources est connecté sont appelés les noeuds principaux de ce groupe. Un groupe de ressources est géré par chacun de ses noeuds principaux. Chaque groupe de ressources possède une propriété Liste_noeuds associée. Cette propriété est définie par l'administrateur de cluster et identifie tous les noeuds principaux potentiels ou maîtres du groupe de ressources.
Un groupe de ressources possède également un jeu 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 gestionnaire RGM définit deux types de groupes de ressources : les groupes de ressources de basculement et les groupes de ressources évolutives. Un groupe de ressources de basculement ne peut être connecté qu'à un seul noeud à la fois tandis qu'un groupe de ressources évolutives peut être connecté simultanément à plusieurs noeuds. Le gestionnaire RGM fournit un ensemble de propriétés pour prendre en charge la création de chaque type de groupe de ressources. Reportez-vous aux rubriques Transfert d'un service de données sur un cluster et Mise en oeuvre des méthodes de rappel pour de plus amples informations sur ces propriétés.
Reportez-vous au Tableau A–3 pour obtenir la liste des propriétés de groupe de ressources.
Le gestionnaire RGM (Resource Group Manager) est mis en oeuvre comme un démon, rgmd qui s'exécute sur chaque noeud appartenant au cluster. Tous les processus rgmd communiquent entre eux et agissent ensemble comme une fonction unique à l'échelle du cluster.
Le gestionnaire RGM prend en charge les fonctions suivantes :
Chaque fois qu'un noeud est initialisé ou tombe en panne, le gestionnaire RGM tente de préserver la disponibilité de tous les groupes de ressources gérés en les connectant automatiquement aux noeuds maîtres appropriés.
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 :
modification des noeuds maîtres d'un groupe de ressources ;
activation ou désactivation d'une ressource spécifique au sein d'un groupe de ressources ;
création, suppression ou modification d'une ressource, d'un groupe de ressources ou d'un type de ressources.
Chaque fois que le gestionnaire RGM active des modifications de configuration, il coordonne ses actions sur tous les noeuds appartenant au cluster. Cette activité porte le nom de reconfiguration. Pour modifier l'état d'une ressource individuelle, le gestionnaire RGM lui applique une méthode de rappel propre au type de ressources.
La structure de Sun Cluster utilise un mécanisme de rappel pour assurer la communication entre un service de données et le gestionnaire RGM. Cette structure définit un ensemble de méthodes de rappel, arguments et valeurs de retour compris, ainsi que les circonstances dans lesquelles le gestionnaire RGM appelle chaque méthode.
Vous pouvez créer un service de données en codant un ensemble de méthodes de rappel individuelles et en mettant en oeuvre chaque méthode sous la forme d'un programme que le logiciel RGM peut appeler. Aussi, le service de données n'est pas constitué d'un seul fichier exécutable mais plutôt de plusieurs scripts exécutables (ksh) ou programmes en binaire (C) que le gestionnaire RGM peut appeler directement.
Les méthodes de rappel sont enregistrées avec le gestionnaire RGM dans le fichier RTR (Resource Type Registration). Vous identifiez dans le fichier RTR chaque méthode mise en oeuvre pour le service de données. Lorsqu'un administrateur système enregistre le service de données sur un cluster, le gestionnaire RGM lit le fichier RTR, qui fournit, entre autres informations, l'identité des programmes de rappel.
Un type de ressources ne requiert que deux méthodes de rappel : une méthode de démarrage (Démarrage ou Démarrage_avant_réseau) et une méthode d'arrêt (Arrêt ou Arrêt_après_réseau).
Les méthodes de rappel peuvent être regroupées dans les catégories suivantes :
Contrôle et initialisation des méthodes
Démarrage lance et Arrêt arrête les ressources dans un groupe connecté ou déconnecté.
Init, Fini, Initialisation exécutent le code d'initialisation et de fin sur les ressources.
Méthodes de prise en charge administrative
Validation vérifie les propriétés définies par l'action administrative.
Mise_à_jour met à jour les paramètres de propriété d'une ressource en ligne.
Méthodes relatives au réseau
Démarrage_avant_réseau et Arrêt_après_réseau exécutent des actions de démarrage ou d'arrêt spéciales avant que les adresses réseau du même groupe de ressources ne soient connectées ou après leur déconnexion.
Méthodes de contrôle du moniteur
Contrôle_moniteur et Arrêt_détecteur démarrent ou arrêtent le moniteur d'une ressource.
Contrôle_moniteur évalue la fiabilité d'un noeud avant qu'un groupe de ressources ne soit basculé sur ce noeud.
Reportez-vous au Chapitre 4 et à la page man rt_callbacks (1HA) pour de plus amples informations sur les méthodes de rappel. Reportez-vous également au Chapitre 5 et au Chapitre 8 pour de plus amples informations sur les méthodes de rappel dans les services de données échantillon.
Afin d'écrire le code du service de données, l'architecture de gestion des ressources offre une interface API de base et de bas niveau, une bibliothèque d'un niveau plus élevé et un outil, SunPlex Agent Builder, générant automatiquement un service de données à partir de l'entrée de base fournie.
L'interface API GR (interface de programme d'application des gestion des ressources) propose un ensemble de routines de bas niveau permettant au service de données d'accéder aux informations sur les ressources, les types de ressources et les groupes de ressources du système, demandant un redémarrage local ou un basculement et définissant l'état des ressources. La bibliothèque libscha.so vous permet d'accéder à ces fonctions. L'interface API GR fournit ces méthodes de rappel sous la forme de commandes shell et de fonctions C. Reportez-vous à scha_calls(3HA) et au Chapitre 4 pour de plus amples informations sur les routines API GR. Reportez-vous également au Chapitre 5 pour découvrir des exemples d'utilisation de ces routines dans les méthodes de rappel de service de données échantillon.
La bibliothèque BDSD est générée au sommet de l'interface API GR . Elle fournit une structure intégrée de plus haut niveau tout en conservant le modèle de rappel/méthode sous-jacente de l'interface RGM. La bibliothèque BDSD regroupe diverses fonctions de développement de services de données, y compris :
libscha.so : les interfaces API de gestion des ressources de bas niveau.
PMF : la fonction de gestion de processus offrant un moyen de contrôler les processus et leurs descendants et de les redémarrer en cas d'arrêt (reportez-vous à pmfadm(1M) et rpc.pmfd(1M)).
hatimerun : une fonction d'exécution de programmes suivant un délai d'expiration (reportez-vous à hatimerun( 1M)).
Avec la plupart des applications, la bibliothèque BDSD 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 BDSD ne remplace pas l'interface API de bas niveau mais l'encapsule et l'étend. En fait, de nombreuses fonctions BDSD appellent les fonctions libscha.so. Vous pouvez également appeler directement les fonctions libscha.so tout en utilisant la librairie BDSD pour coder la majeure partie du service de données. La librairie libdsdev.so contient les fonctions BDSD.
Reportez-vous au Chapitre 6 et à la page man scha_calls (3HA) pour de plus amples informations sur la bibliothèque BDSD.
Agent Builder est un outil automatisant la création d'un service de données. Après la saisie des 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, complété par un code source ou exécutable (C ou Korn shell), 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 circonstances vous pouvez utiliser Agent Builder pour générer la majeure partie du code avant de coder manuellement la partie restante. Vous pouvez, au minimum, utiliser Agent Builder pour générer le package Solaris pour vous.
Sun Cluster offre une interface utilisateur graphique et un ensemble de commandes d'administration d'un cluster.
SunPlex Manager est un outil basé sur le Web vous permettant d'exécuter 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 avec le logiciel Sun Cluster.
Reportez-vous au document Guide d'installation du logiciel Sun Cluster 3.1 10/03 pour de plus amples informations sur la procédure d'installation de SunPlex Manager et son utilisation pour installer un logiciel de cluster. SunPlex Manager dispose d'une aide en ligne sur la plupart des tâches administratives uniques.
Les commandes d'administration Sun Cluster des objets RGM sont scrgadm(1M), scswitch(1M) et scstat(1M) - g.
La commande scrgadm permet de visualiser, créer, configurer et supprimer le type de ressources, le groupe de ressources et les ressources utilisés par le gestionnaire RGM. La commande fait partie intégrante de l'interface administrative du cluster. Vous ne devez pas l'utiliser dans le même contexte que l'interface d'application présentée 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. Reportez-vous à la page man scrgadm( 1M) pour de plus amples informations sur les tâches administratives que cette commande vous permet de réaliser.
La commande scswitch connecte et déconnecte le groupe de ressources sur les noeuds indiqués et active ou désactive une ressource ou son détecteur. Reportez-vous à la page man scswitch(1M) pour de plus amples informations sur les tâches administratives que cette commande peut réaliser.
La commande scstat -g indique l'état dynamique courant de tous les groupes de ressources et de toutes les ressources.