Cette rubrique présente la procédure d'utilisation d'Agent Builder ainsi que les tâches que vous devez effectuer avant de pouvoir l'utiliser. Vous y découvrirez également comment déployer Agent Builder après avoir généré le code de votre type de ressources.
Avant d'utiliser Agent Builder, vous devez déterminer si votre application répond aux critères requis pour devenir hautement disponible ou évolutive. Agent Builder ne peut pas réaliser cette analyse s'appuyant uniquement sur les caractéristiques du temps d'exécution de l'application. Vous trouverez de plus amples informations à ce sujet dans la rubrique Analyse du caractère approprié de l'application.
Il est possible qu'Agent Builder ne puisse pas toujours créer un type de ressources complet pour votre application. Dans la plupart des cas, cependant, il propose au moins une solution partielle. Par exemple, les applications particulièrement complexes peuvent nécessiter un code supplémentaire qu'Agent Builder ne génère pas par défaut. Il peut notamment s'agir d'un code permettant d'ajouter des contrôles de validation pour des propriétés supplémentaires ou de régler des paramètres qu'Agent Builder n'affiche pas. Le cas échéant, vous devez apporter des modifications au code source généré ou au fichier RTR. La conception d'Agent Builder vise justement à offrir cette souplesse.
De fait, Agent Builder insère des commentaires aux endroits du code source généré où vous pouvez ajouter votre propre code de type de ressources. Une fois le code source modifié, vous pouvez utiliser le fichier makefile généré par Agent Builder pour recompiler le code source et générer de nouveau le package de type de ressources.
Même si vous utilisez exclusivement le code de type de ressources que vous avez créé sans insérer de code généré par Agent Builder, vous pouvez déployer le fichier makefile et la structure fournis par Agent Builder pour créer le package Solaris de votre type de ressources.
Agent Builder ne requiert aucune installation spéciale. Agent Builder est intégré au package SUNWscdev qui est installé par défaut lors de l'installation standard de Sun Cluster (reportez-vous au Sun Cluster Software Installation Guide for Solaris OS pour obtenir de plus amples informations). Avant d'utiliser Agent Builder, vérifiez les points suivants :
Java doit figurer dans la variable $PATH. Agent Builder dépend de Java (Java Development Kit version 1.3.1 ou version supérieure) et si Java ne figure pas dans la variable $PATH, scdsbuilder renvoie un message d'erreur.
Vous avez installé le groupe de logiciels « Developer System Support » de Solaris 8 ou version supérieure.
Le compilateur cc est fourni avec la variable $PATH. Agent Builder utilise la première occurrence de cc dans la variable $PATH pour identifier le compilateur dont il doit se servir pour générer un code binaire C pour le type de ressources. Si cc n'est pas intégré à la variable $PATH, Agent Builder désactive l'option de génération de code C (reportez-vous à la rubrique Utilisation de l'écran Créer.
vous pouvez utiliser un autre compilateur que le compilateur cc standard avec Agent Builder. Pour ce faire, vous pouvez par exemple créer un lien symbolique du compilateur cc vers un autre compilateur dans la variable $PATH, tel gcc. Vous pouvez également remplacer la spécification du compilateur dans le fichier makefile (actuellement CC=cc) par le chemin d'accès complet d'un autre compilateur. Par exemple, dans le fichier makefile généré par Agent Builder, remplacez CC=cc par CC=pathname/gcc. Le cas échéant, vous ne pouvez pas exécuter Agent Builder directement. Vous devez utiliser les commandes make et make pkg pour générer un code de service de données et un package.
Lancez Agent Builder à l'aide de la commande suivante :
% /usr/cluster/bin/scdsbuilder |
L'écran initial de Sun Builder (comme indiqué dans l'illustration suivante) apparaît.
vous pouvez accéder à Agent Builder par le biais de l'interface de ligne de commande (reportez-vous à la rubrique Utilisation de la version ligne de commande d'Agent Builder) si l'interface utilisateur graphique n'est pas accessible.
Agent Builder comprend deux écrans vous guidant tout au long du processus de création d'un nouveau type de ressources :
Créer : cet écran contient des informations élémentaires sur le type de ressources à créer, comme son nom et le répertoire de travail (c'est-à-dire le répertoire dans lequel vous créez et configurez le modèle de type de ressources) des fichiers générés. Vous pouvez également identifier le type de ressources à créer (évolutives ou de basculement), si l'application de base est compatible réseau (c'est-à-dire si elle passe par le réseau pour communiquer avec ses clients) et le type de code (C, ksh ou GDS (service de données générique)) à générer. Pour de plus amples informations sur le code GDS (service de données générique), reportez-vous au Chapitre 10. Vous devez renseigner les champs de cet écran, puis sélectionner Créer pour générer la sortie correspondante, avant d'afficher l'écran Configurer.
Configurer : vous devez indiquer dans cet écran une commande permettant de démarrer l'application. Vous pouvez, de façon facultative, fournir des commandes pour interrompre et sonder l'application. Si vous n'entrez pas ces commandes, la sortie générée utilise des signaux pour arrêter l'application et fournit un mécanisme de détection par défaut (reportez-vous à la description de la commande correspondante dans la rubrique Utilisation de l'écran Configurer). Cet écran vous permet également de modifier les valeurs de délai pour chacune de ces trois commandes.
si vous lancez Agent Builder à partir du répertoire de travail d'un type de ressources existant, Agent Builder initialise les écrans Créer et Configurer en reprenant les valeurs du type de ressources existant.
Reportez-vous à la rubrique Navigation dans Agent Builder si vous avez des questions sur l'utilisation des boutons ou des commandes de menu de l'un ou l'autre des écrans d'Agent Builder.
La première étape de création d'un type de ressources consiste à renseigner l'écran Créer qui s'affiche au lancement d'Agent Builder. L'illustration suivante présente l'écran Créer une fois que vous avez renseigné les champs.
L'écran Créer contient les champs, les cases d'option et les cases à cocher suivantes :
Nom du fournisseur : nom permettant d'identifier le fournisseur du type de ressources. Si vous indiquez en règle générale le symbole de référencement du fournisseur, sachez toutefois que n'importe quel nom unique d'identification du fournisseur est valide. N'utilisez que des caractères alphanumériques.
Nom d'application : nom du type de ressources. N'utilisez que des caractères alphanumériques.
le nom du fournisseur et le nom d'application constituent le nom complet du type de ressources. Ce nom complet ne doit pas excéder neuf caractères.
Répertoire de travail : répertoire dans lequel Agent Builder crée une structure de répertoire pour contenir tous les fichiers créés pour le type de ressources cible. Quel que soit le répertoire de travail, vous ne pouvez y créer qu'un seul type de ressources. Agent Builder initialise ce champ sur le chemin d'accès au répertoire de lancement d'Agent Builder. Vous pouvez cependant entrer un nom différent ou localiser un autre répertoire à l'aide du bouton Parcourir.
Agent Builder crée un sous-répertoire contenant le nom du type de ressources dans le répertoire de travail. Par exemple, si le nom du fournisseur et le nom d'application sont respectivement SUNW et ftp, Agent Builder appelle ce sous-répertoire SUNWftp.
Agent Builder insère tous les répertoires et fichiers du type de ressources cible dans ce répertoire (reportez-vous à la rubrique Structure de répertoire).
Évolutif ou Basculement : indique si le type de ressources cible est évolutif ou de basculement.
Compatible réseau : indique si l'application de base est compatible ; c'est-à-dire si elle passe par le réseau pour communiquer avec ses clients. Cochez cette case pour indiquer que l'application est compatible réseau et ne la cochez pas pour indiquer qu'elle n'est pas prévue pour être utilisée en réseau. Le code korn shell nécessite que l'application soit compatible réseau. Par conséquent, Agent Builder sélectionne cette case et la grise si vous cochez le bouton ksh ou GDS.
C, ksh : indique le langage du code source généré. Bien que ces options soient mutuellement exclusives, Agent Builder vous permet de créer un type de ressources avec un code généré ksh, puis de réutiliser les mêmes données pour créer un code généré C (reportez-vous à la rubrique Clonage d'un type de ressources existant).
GDS : indique que ce service est un service de données générique. Reportez-vous au Chapitre 10 pour de plus amples informations sur la création et la configuration d'un service de données générique.
si le compilateur cc ne figure pas dans la variable $PATH, Agent Builder grise la case d'option C et sélectionne le bouton ksh. Pour spécifier un compilateur différent, reportez-vous à la remarque figurant à la fin de la rubrique Installation et configuration d'Agent Builder.
Une fois les données requises entrées, cliquez sur le bouton Créer. Le Journal en bas de l'écran présente les actions qu'Agent Builder entreprend. La commande Enregistrer journal du menu Éditer vous permet d'enregistrer les données dans le journal.
Une fois cette opération terminée, Agent Builder affiche soit un message indiquant que cette étape a été réalisée avec succès soit un message d'avertissement précisant qu'il est impossible d'achever correctement cette tâche. Dans ce cas, vous devez consulter le journal pour obtenir plus d'informations.
Si Agent Builder termine cette tâche avec succès, vous pouvez cliquer sur le bouton Suivant pour afficher l'écran Configurer depuis lequel vous pouvez terminer de générer le type de ressources.
bien que la génération d'un type de ressources complet s'exécute suivant une procédure en deux étapes, vous pouvez quitter Agent Builder une fois la première étape (création) terminée sans perdre les données que vous avez entrées ou le travail qu'Agent Builder a achevé (reportez-vous à la rubrique Réutilisation d'un travail terminé).
L'écran Configurer, illustré ci-après, apparaît une fois qu'Agent Builder a terminé de créer le type de ressources et que vous avez cliqué sur le bouton Suivant de l'écran Créer. Vous ne pouvez pas accéder à l'écran Configurer avant d'avoir créé le type de ressources.
L'écran Configurer contient les champs suivants :
Commande de démarrage : ligne de commande complète pouvant être transférée à n'importe quel shell UNIX pour lancer l'application de base. Nous vous recommandons de spécifier cette commande. Vous pouvez entrer cette commande dans le champ correspondant ou localiser le fichier contenant la commande de démarrage de l'application à l'aide du bouton Parcourir.
La ligne de commande complète doit contenir toutes les informations requises pour démarrer l'application (noms d'hôte, numéros de port, chemin d'accès aux fichiers de configuration, etc.). Si votre application nécessite d'indiquer un nom d'hôte sur la ligne de commande, utilisez la variable $hostnames définie par Agent Builder (reportez-vous à la rubrique Utilisation de la variable $hostnames d'Agent Builder).
N'utilisez pas de guillemets (““) avec la commande.
si l'application de base comprend plusieurs arborescences de processus indépendantes et que chaque processus est exécuté à partir de sa propre balise sous la fonction PMF, vous ne pouvez pas indiquer une seule commande. Vous devez plus exactement créer un fichier texte contenant les commandes individuelles de démarrage de chaque arborescence de processus et indiquer le chemin d'accès à ce fichier dans le champ Commande de démarrage. Reportez-vous à la rubrique Création de types de ressources contenant plusieurs arborescences de processus indépendantes. Vous y découvrirez quelques-unes des caractéristiques spécifiques que requiert ce fichier pour fonctionner correctement.
Commande d'arrêt : ligne de commande complète pouvant être transférée à n'importe quel shell UNIX pour arrêter l'application de base. Vous pouvez entrer cette commande dans le champ correspondant ou localiser le fichier contenant la commande d'arrêt de l'application à l'aide du bouton Parcourir. Si votre application nécessite d'indiquer un nom d'hôte sur la ligne de commande, utilisez la variable $hostnames définie par Agent Builder (reportez-vous à la rubrique Utilisation de la variable $hostnames d'Agent Builder).
Cette commande est facultative. Si vous n'indiquez pas de commande d'arrêt, le code généré utilise les signaux (de la méthode Arrêt) pour arrêter l'application, comme suit :
La méthode Arrêt envoie le signal SIGTERM pour arrêter l'application et laisse s'écouler 80% du délai d'attente pour que l'application se ferme.
Si le signal SIGTERM échoue, la méthode Arrêt envoie le signal SIGKILL pour arrêter l'application et laisse s'écouler 15% du délai d'attente pour que l'application se ferme.
Si le signal SIGKILL échoue, la méthode Arrêt ne ferme pas l'application correctement (les 5% restants du délai d'attente sont considérés comme du temps supplémentaire).
veillez à ce que la commande d'arrêt ne soit pas renvoyée avant l'arrêt complet de l'application.
Commande de détection : commande que vous pouvez exécuter périodiquement pour vérifier la maintenance de l'application et obtenir un état de sortie compris entre 0 (succès) et 100 (échec total). Cette commande est facultative. Vous pouvez entrer le chemin d'accès complet à cette commande ou localiser le fichier contenant la commande de détection de l'application à l'aide du bouton Parcourir.
En règle générale, vous indiquez un client unique de l'application de base. Si vous n'indiquez pas de commande de détection, le code généré se contente de se connecter au port utilisé par la ressource puis de se déconnecter. Si cette opération réussit, l'application est déclarée comme étant parfaitement opérationnelle. L'utilisation d'une commande de détection n'est possible qu'avec les applications réseau. Agent Builder génère toujours une commande de détection mais désactive cette fonction avec les applications non prévues pour être utilisées en réseau.
Si votre application nécessite d'indiquer un nom d'hôte sur la ligne de commande de détection, utilisez la variable $hostnames définie par Agent Builder (reportez-vous à la rubrique Utilisation de la variable $hostnames d'Agent Builder).
Délai d'attente : (par commande) : délai d'attente en secondes pour chaque commande. Vous pouvez indiquer une nouvelle valeur ou accepter la valeur par défaut fournie par Agent Builder (300 secondes pour le démarrage et l'arrêt et 30 secondes pour la détection).
Pour de nombreuses applications, notamment les applications réseau, le nom d'hôte sur lequel l'application écoute et gère les requêtes des clients doit être transmis à l'application sur la ligne de commande. Par conséquent, le nom d'hôte est généralement un paramètre que vous devez indiquer pour les commandes de démarrage, d'arrêt et de détection du type de ressources cible (dans l'écran Configurer). Par contre, le nom d'hôte est propre au cluster. Il est déterminé à l'exécution de la ressource sur un cluster et ne peut pas l'être lorsqu'Agent Builder génère le code de votre type de ressources.
Pour pallier ce problème, Agent Builder propose la variable $hostnames que vous pouvez spécifier sur la ligne de commande pour les commandes de démarrage, d'arrêt et de détection. Vous spécifiez la variable $hostnames exactement comme vous indiqueriez un nom d'hôte réel. Exemple :
/opt/network_aware/echo_server -p n°_port -l $hostnames |
Lorsqu'une ressource du type de ressources cible est exécutée sur un cluster, le nom d'hôte LogicalHostname (NomHôteLogique) ou SharedAddress (AdressePartagée) configuré pour cette ressource (dans la propriété de ressource Ressources_réseau_utilisées de cette ressource) est remplacé par la valeur de la variable $hostnames.
Si vous configurez la propriété Ressources_réseau_utilisées avec plusieurs noms d'hôte, ils apparaissent tous dans la variable $hostnames, séparés par des virgules.
Agent Builder peut créer des types de ressources pour les applications intégrant plusieurs arborescences de processus indépendantes. Ces arborescences de processus sont indépendantes dans le sens où la fonction PMF les contrôle et les démarre individuellement. La fonction PMF démarre chaque arborescence de processus avec sa propre balise.
Agent Builder ne vous permet de créer des types de ressources contenant plusieurs arborescences de processus indépendantes que si le code source généré que vous spécifiez est C. Vous ne pouvez pas utiliser Agent Builder pour créer ces types de ressources pour ksh ou GDS. Pour ce faire, vous devez écrire le code manuellement.
Dans le cadre d'une application de base contenant plusieurs arborescences de processus indépendantes, la spécification d'une ligne de commande unique ne suffit pas pour démarrer l'application. Dans ce cas, vous devez créer un fichier texte dont chaque ligne indique le chemin d'accès complet à une commande permettant de démarrer l'une des arborescences de processus de l'application. Ce fichier ne doit contenir aucune ligne vide et être spécifié dans le champ Commande de démarrage de l'écran Configurer.
Vous devez vous assurer qu'il ne contient aucune autorisation d'exécution, ce qui permet à Agent Builder de distinguer ce fichier visant à démarrer plusieurs arborescences de processus d'un simple script exécutable contenant plusieurs commandes. Si ce fichier texte contient des autorisations d'exécution, les ressources s'affichent sans problème ni erreur sur le cluster mais toutes les commandes sont exécutées sous une seule balise PMF. Le cas échéant, la fonction PMF ne peut pas contrôler et redémarrer individuellement les arborescences de processus.
Agent Builder vous permet d'exploiter un travail terminé de plusieurs façons :
Vous pouvez cloner un type de ressources existant créé avec Agent Builder.
Vous pouvez éditer le code source généré par Agent Builder puis recompiler le code pour créer un nouveau package.
Procédez comme suit pour cloner un type de ressources existant généré par Agent Builder :
Chargez un type de ressources existant dans Agent Builder. Pour ce faire, vous pouvez procéder de deux façons :
Lancez Agent Builder à partir du répertoire de travail (dans lequel figure le fichier rtconfig) d'un type de ressources existant (créé avec Agent Builder). Agent Builder charge ensuite les valeurs de ce type de ressources dans les écrans Créer et Configurer.
Utilisez la commande Charger type de ressources du menu Fichier.
Modifiez le répertoire de travail dans l'écran Créer.
Pour ce faire, sélectionnez le répertoire avec le bouton Parcourir, l'entrée du nom d'un nouveau répertoire n'étant pas suffisante. Une fois le répertoire sélectionné, Agent Builder active de nouveau le bouton Créer.
Apportez les modifications requises.
Cette procédure vous permet notamment de modifier le type de code généré pour le type de ressources. Par exemple, si vous avez commencé par créer une version ksh d'un type de ressources avant de découvrir qu'il vous faut une version C, vous pouvez charger le type de ressources ksh existant, remplacer le langage de sortie par C, puis utiliser Agent Builder pour concevoir une version C du type de ressources.
Créez le clone du type de ressources.
Sélectionnez Créer pour créer le type de ressources. Sélectionnez Suivant pour passer à l'écran Configurer. Sélectionnez Configurer pour configurer le type de ressources, puis Annuler pour terminer la procédure.
Pour que le processus de création d'un type de ressources reste simple, Agent Builder limite le nombre d'entrées, ce qui restreint la portée du type de ressources généré. Par conséquent, si vous souhaitez ajouter des fonctions plus complexes (des contrôles de validation de propriétés supplémentaires, par exemple) ou régler des paramètres qu'Agent Builder n'affiche pas, vous devez modifier le code source généré ou le fichier RTR.
Les fichiers sources sont disponibles dans le répertoire répertoire_installation /nom_type_res/src. Agent Builder intègre des commentaires dans le code source là où vous pouvez ajouter un code. Exemple (pour un code C) :
/* Code ajouté par l'utilisateur -- BEGIN vvvvvvvvvvvvvvv */ /* Code ajouté par l'utilisateur -- END ^^^^^^^^^^^^^^^ */ |
ces commentaires sont identiques dans le code korn shell à la seule différence que le symbole # est inséré au début d'une ligne de commentaire.
Par exemple, nom_typ_res.h déclare toutes les routines utilitaires que les différents programmes utilisent. À la fin de la liste des déclarations, vous trouverez des commentaires vous permettant de déclarer les autres routines que vous aimeriez ajouter à n'importe quel code source.
Agent Builder génère également un fichier makefile dans le répertoire répertoire_installation/nom_type_res/src avec les cibles appropriées. Les commandes make et make pkg vous permettent respectivement de recompiler le code source et de générer de nouveau le package du type de ressources.
Le fichier RTR figure dans le répertoire répertoire_installation/ nom_type_res/etc. Vous pouvez éditer le fichier RTR au moyen d'un éditeur de texte standard (reportez-vous à la rubrique Paramétrage des propriétés de ressources et de types de ressources pour de plus amples informations sur le fichier RTR et à l'Annexe A pour de plus amples informations sur les propriétés).
La version ligne de commande d'Agent Builder s'appuie sur la même procédure en deux étapes que l'interface utilisateur graphique. Au lieu d'entrer les données dans l'interface utilisateur graphique, vous fournissez les paramètres aux commandes scdscreate( 1HA) et scdsconfig(1HA).
Procédez comme suit pour utiliser la version ligne de commande d'Agent Builder :
Utilisez la commande scdscreate pour créer un modèle de type de ressources Sun Cluster permettant de concevoir une application hautement disponible ou évolutive.
Utilisez la commande scdsconfig pour configurer le modèle de type de ressources créé avec scdscreate.
Remplacez les répertoires par le sous-répertoire pkg dans le répertoire de travail.
Utilisez la commande pkgadd(1M) pour installer les packages que vous avez créés avec scdscreate.
Éditez le code source généré, si vous le souhaitez.
Exécutez le script de démarrage.