Guide du développeur de services de données Sun Cluster pour SE Solaris

Chapitre 1 Présentation de la gestion des ressources

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 :


Remarque –

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.


Environnement d'application Sun Cluster

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 :

La figure ci-dessous illustre les relations entre ces éléments.

Figure 1–1 Architecture de programmation de l'environnement d'application Sun Cluster

Illustration présentant les relations entre les méthodes de rappel, l'interface APIGR, l'utilitaire PMF et la bibliothèque DSDL

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).

Modèle du gestionnaire de groupes de ressources

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.

Types de ressources

Un type de ressources comprend les éléments suivants :

Le RGM utilise des propriétés de type de ressources pour gérer les ressources d'un type spécifique.


Remarque –

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.

Ressources

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.

Groupes de ressources

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.

Gestionnaire de 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 :

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.

Méthodes de rappel

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 :

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 .

Interfaces de programmation

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.

API de gestion des ressources

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.

Bibliothèque de développement de services de données

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 :

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).

SunPlex Agent Builder

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.

Interface administrative du gestionnaire de groupes de ressources

Sun Cluster fournit une interface graphique et un ensemble de commandes d'administration de cluster.

SunPlex Manager

SunPlex Manager est un outil basé sur le Web qui vous permet d'effectuer les tâches suivantes :

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.

Utilitaire scsetup

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 :

Il vous permet également d'effectuer les opérations suivantes :

Commandes administratives

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).