Supplément Sun Cluster 3.0 5/02

Annexe F Module générique de services de données

Cette annexe présente le module générique de services de données (GDS) et décrit la procédure de création d'un service basé sur GDS, à l'aide de SunPlex Agent Builder ou des commandes d'administration standard de Sun Cluster.

Présentation du module générique de services de données

Le module GDS (generic data service) est un mécanisme qui permet de rendre de simples applications réseau hautement disponibles ou modulaires, en les connectant à la structure de gestion des groupes de ressources de Sun Cluster. Ce mécanisme évite l'utilisation d'un agent de programmation, procédure habituelle pour rendre une application hautement disponible ou modulaire.

Le module GDS est un service de données unique, précompilé. Dans cette approche, le service de données précompilé et ses composants, les implémentations à rappel automatique (rt_callbacks(1HA)) et le fichier d'enregistrement du type de ressource (rt_reg(4)), ne sont pas modifiables.

Type de ressource précompilé

Le type de ressource du module générique de services de données, SUNW.gds, est inclus dans le module SUNWscgds. L'utilitaire scinstall(1M) installe ce module pendant l'installation de la grappe. Le module logiciel SUNWscgds comprend les fichiers suivants :


# pkgchk -v SUNWscgds
 
/opt/SUNWscgds 
/opt/SUNWscgds/bin 
/opt/SUNWscgds/bin/gds_monitor_check 
/opt/SUNWscgds/bin/gds_monitor_start 
/opt/SUNWscgds/bin/gds_monitor_stop 
/opt/SUNWscgds/bin/gds_probe 
/opt/SUNWscgds/bin/gds_svc_start 
/opt/SUNWscgds/bin/gds_svc_stop 
/opt/SUNWscgds/bin/gds_update 
/opt/SUNWscgds/bin/gds_validate 
/opt/SUNWscgds/etc 
/opt/SUNWscgds/etc/SUNW.gds

Pourquoi utiliser GDS

Voici les avantages que présente le module GDS par rapport au modèle de code source généré par SunPlex Agent Builder (reportez-vous à scdscreate(1HA)) ou aux commandes standard d'administration de Sun Cluster :

Méthodes de création d'un service basé sur GDS

Il existe 2 méthodes de création d'un service utilisant GDS :

GDS et SunPlex Agent Builder

Utilisez SunPlex Agent Builder et sélectionnez GDS comme type de code source généré. La saisie de l'utilisateur sert à générer un ensemble de scripts moteur qui configurent les ressources de l'application en question.

GDS et les commandes standard d'administration de Sun Cluster

Cette méthode utilise le code de services de données précompilé dans SUNWscgds mais impose à l'administrateur système d'utiliser les commandes standard d'administration de Sun Cluster (scrgadm(1M) et scswitch(1M)) pour créer et configurer la ressource.

Comment choisir la méthode de création d'un service basé sur GDS

Comme l'indiquent les procédures "Commandes d'administration standard de Sun Cluster permettant de créer un service à haut niveau de disponibilité basé sur le module GDS" et "Commandes d'administration standard de Sun Cluster permettant de créer un service modulaire basé sur le module GDS", l'exécution des commandes scrgadm et scswitch nécessitent un effort conséquent de saisie.

L'utilisation de GDS avec SunPlex Agent Builder simplifie le processus car le module GDS génère des scripts moteur qui exécutent les commandes scrgadm et scswitch à votre place.

Dans quels cas ne faut-il pas utiliser GDS

Si l'utilisation du module GDS présente de nombreux avantages, son utilisation n'est pas toujours conseillée. Le module GDS ne convient pas :

Saisies obligatoires relatives au module GDS

Les propriétés suivantes sont requises :

Start_command

La commande de démarrage, spécifiée par la propriété Start_command, lance l'application. Cette commande UNIX et ses arguments peuvent être passés directement à un shell pour démarrer l'application.

Port_list

La commande Port_list identifie la liste des ports utilisés par l'application. La propriété Port_list doit figurer dans le script de démarrage créé par SunPlex Agent Builder ou dans la commande scrgadm si vous utilisez les commandes standard d'administration de Sun Cluster.

Saisies facultatives relatives au module GDS

Les saisies suivantes sont facultatives :

Network_resources_used

La valeur par défaut de cette propriété est nulle. Vous devez impérativement spécifier cette propriété dès lors que l'application doit être liée à une ou plusieurs adresses spécifiques. Si cette propriété est omise ou si elle est spécifiée comme nulle, on considère que l'application écoute sur toutes les adresses.

Avant de créer une ressource GDS, la ressource LogicalHostname ou SharedAddress doit également avoir été configurée. Reportez-vous au Sun Cluster 3.0 12/01 Data Services Installation and Configuration Guide pour de plus amples informations sur la configuration d'une ressource LogicalHostname ou SharedAddress.

Pour spécifier une valeur, spécifiez le nom d'une ou plusieurs ressources ; chaque nom de ressource peut comporter un ou plusieurs noms d'hôte logiques ou une ou plusieurs adresses partagées. Reportez-vous à r_properties(5) pour plus de détails.

Stop_command

La commande d'arrêt doit arrêter l'application et ne réapparaître qu'une fois l'application définitivement arrêtée. Il doit impérativement s'agir d'une commande UNIX complète qui peut être transmise directement à un shell pour arrêter l'application.

En présence de Stop_command, la méthode d'arrêt du module GDS lance la commande d'arrêt avec 80 % du délai imparti à l'arrêt. Quel que soit le résultat de la commande d'arrêt, la méthode d'arrêt du module GDS envoie la commande SIGKILL avec 15% du délai imparti à l'arrêt. Les 5% restants sont réservés au temps système de gestion interne.

Si la commande d'arrêt est omise, le module GDS tente d'arrêter l'application en utilisant le signal spécifié dans Stop_signal.

Probe_command

La commande de détection vérifie périodiquement le bon état de l'application concernée. Cette commande UNIX et ses arguments peuvent être transmis directement à un shell pour sonder l'application. La commande de détection renvoie un statut de sortie égal à 0 si l'application est en bon état.

Le statut de sortie de la commande de détection permet de déterminer le degré de gravité de la panne qui touche l'application. Ce statut de sortie, appelé statut de détection, doit être un nombre entier compris entre 0 (réussite) et 100 (panne intégrale). Le statut de détection peut également correspondre à une valeur spéciale de 201 qui entraîne un basculement immédiat de l'application sauf si Failover_enabled est défini sur false. L'algorithme de détection du module GDS (reportez-vous à scds_fm_action(3HA)) se base sur le statut de détection pour prendre la décision de redémarrer l'application en local ou de la basculer sur un autre noeud ; si le statut de sortie est 201, le basculement de l'application est immédiat.

Si la commande de détection est omise, le module GDS effectue sa propre détection et se connecte à l'application sur l'ensemble des adresses IP dérivées de la propriété Newtork_resources_used ou de la sortie descds_get_netaddr_list(3HA). Si la connexion réussit, le module GDS se déconnecte immédiatement. Si la connexion et la déconnexion réussissent, on considère que l'application fonctionne correctement.


Remarque :

La détection effectuée par le module GDS n'est qu'un simple substitut à la détection complète de l'application.


Start_timeout

Cette propriété spécifie le délai imparti au démarrage de la commande de démarrage (reportez-vous à "Start_command" pour de plus amples informations). La valeur par défaut de Start_timeout est de 300 secondes.

Stop_timeout

Cette propriété spécifie le délai imparti à l'arrêt de la commande d'arrêt (reportez-vous à "Stop_command" pour de plus amples informations). La valeur par défaut de Stop_timeout est de 300 secondes.

Probe_timeout

Cette propriété spécifie la valeur du délai imparti de la commande de détection (reportez-vous à "Probe_command" pour de plus amples informations). La valeur par défaut de Probe_timeout est de 30 secondes.

Child_mon_level

Cette propriété permet de contrôler quels processus sont surveillés par le contrôleur de processus (PMF). Elle indique le niveau auquel les processus fils sont surveillés. Cette propriété est similaire à l'argument -C de la commande pmfadm(1M).

Omettre cette propriété, ou lui conférer la valeur par défaut de -1, revient à omettre l'option -C de la commande pmfadm ; c'est à dire que tous les fils (et leurs descendants) seront surveillés. Reportez-vous à la page de manuel pmfadm(1M) pour de plus amples détails.


Remarque :

Cette option peut être spécifiée à l'aide des commandes d'administration standard de Sun Cluster. Vous ne pouvez pas spécifier cette option si vous utilisez SunPlex Agent Builder.


Failover_enabled

Cette propriété d'extension booléenne contrôle la fonction de basculement de la ressource. Si cette propriété d'extension est définie sur true, l'application est basculée dès lors que le nombre de redémarrages dépasse la valeur retry_countau cours du délai en secondes retry_interval.

Si cette propriété d'extension est définie sur false, l'application ne redémarre pas et ne bascule pas sur un autre noeud lorsque le nombre de redémarrages dépasse la valeur retry_count au cours du délai en secondes retry_interval.

Cette propriété d'extension peut être utilisée pour empêcher la ressource d'application de basculer un groupe de ressources. La valeur par défaut est true.

Stop_signal

Le module GDS utilise la valeur du nombre entier correspondant à cette propriété d'extension pour déterminer quel signal utiliser pour arrêter l'application par le biais de PMF. Reportez-vous à signal(3head) pour connaître la liste des nombres entiers qu'il est possible de spécifier comme valeur. La valeur par défaut est 15 (SIGTERM).

Utilisation de SunPlex Agent Builder pour créer un service basé sur le module GDS

Vous pouvez utiliser SunPlex Agent Builder pour créer le service utilisant le module GDS. Reportez-vous au Sun Cluster 3.0 12/01 Data Services Installation and Configuration Guide pour de plus amples informations sur SunPlex Agent Builder et pour une définition des champs.

Création d'un service basé sur le module GDS dans Agent Builder

  1. Lancez SunPlex Agent Builder.


    # /usr/cluster/bin/scdsbuilder
    

  2. Le panneau SunPlex Agent Builder apparaît.

    Graphic
  3. Entrez le nom du fournisseur (Vendor Name).

  4. Entrez le nom de l'application (Application Name).


    Remarque :

    La combinaison du nom du vendeur et de celui de l'application ne doit pas excéder neuf caractères. Cette combinaison servira de nom au module des scripts moteur.


  5. Entrez le répertoire de travail (Working Directory). Vous pouvez utiliser le bouton Parcourir (Browse) pour sélectionner le répertoire de votre choix plutôt que d'entrer son chemin d'accès.

  6. Indiquez si le service de données est modulaire ou de reprise sur panne.

  7. Vous n'êtes pas tenu de sélectionner l'option compatible réseau (Network Aware), celle-ci étant celle attribuée par défaut lors de la création du module GDS.

  8. Sélectionnez GDS.

  9. Cliquez sur le bouton Créer (Create) pour créer les scripts moteur.

  10. Le panneau SunPlex Agent Builder affiche les résultats de la création du service. Le bouton Créer (Create) apparaît grisé et le bouton Suivant (Next) est disponible.

    Graphic

Configuration des scripts moteur

Une fois que vous avez créé les scripts moteur, vous devez utiliser SunPlex Agent Builder pour configurer le nouveau service.

  1. Cliquez sur le bouton Suivant (Next) pour afficher le panneau de configuration.

  2. Tapez le chemin d'accès à la commande Démarrer (Start) ou utilisez le bouton Parcourir (Browse) pour sélectionner la commande de démarrage.

  3. (Facultatif) Tapez la commande d'arrêt (Stop) ou utilisez le bouton Parcourir (Browse) pour sélectionner la commande d'arrêt.

  4. (Facultatif) Tapez la commande de détection (Probe) ou utilisez le bouton Parcourir (Browse) pour sélectionner la commande de détection.

  5. (Facultatif) Spécifiez les valeurs de délai imparti des commandes d'arrêt, de démarrage et de détection.

  6. Cliquez sur Configurer (Configure) pour démarrer la configuration des scripts moteur.

    Une offre de scripts moteur est ainsi créée et placée dans :


    rép_travail/<nom_vendeur><application>/pkg

    Par exemple, /export/wdir/NETapp/pkg.


    Remarque :

    Le nom du module se compose d'une concaténation du nom du vendeur et de celui de l'application.


  7. Installez le module logiciel complet sur tous les noeuds de la grappe.


    # cd /export/wdir/NETapp/pkg
    # pkgadd -d . NETapp
    

  8. Les fichiers suivants sont installés au cours de pkgadd :


    /opt/NETapp 
    /opt/NETapp/README.app 
    /opt/NETapp/man 
    /opt/NETapp/man/man1m 
    /opt/NETapp/man/man1m/removeapp.1m 
    /opt/NETapp/man/man1m/startapp.1m 
    /opt/NETapp/man/man1m/stopapp.1m 
    /opt/NETapp/man/man1m/app_config.1m 
    /opt/NETapp/util 
    /opt/NETapp/util/removeapp 
    /opt/NETapp/util/startapp 
    /opt/NETapp/util/stopapp 
    /opt/NETapp/util/app_config


    Remarque :

    Les pages de manuel et les noms des scripts correspondent au nom de l'application, tel qu'indiqué précédemment, précédé par le nom du script ; par exemple, startapp.


    Pour afficher les pages de manuel, vous devez spécifier leur chemin d'accès. Par exemple, pour afficher les pages de manuel startapp, utilisez :


    # man -M /opt/NETapp/man startapp
    

  9. Sur l'un des noeuds de la grappe, configurez les ressources et démarrez l'application.


    # /opt/NETapp/util/startapp -h <nom_hote_logique> -p <liste ports et protocoles>
    

    Les arguments du script de démarrage varient en fonction du type de ressource : de reprise sur panne ou modulaire. Vérifiez la page de manuel personnalisée ou exécutez le script de démarrage sans aucun argument pour obtenir une déclaration d'utilisation.


    # /opt/NETapp/util/startapp 
     The resource name of LogicalHostname or SharedAddress must be specified. 
     For failover services: 
     Usage: startapp -h <logical host name> 
               -p <port and protocol list> 
              [ -n <nafogroup/adapter list>] 
     For scalable services: 
     Usage: startapp 
              -h <shared address name> 
              -p <port and protocol list> 
              [ -l <load balancing policy>] 
              [-n <nafogroup/adapter list>] 
               [-w <load balancing weights>]

Sortie de SunPlex Agent Builder

SunPlex Agent Builder génère trois scripts moteur et un fichier de configuration basé sur votre saisie. Le fichier de configuration spécifie les noms du groupe de ressources et du type de ressource.

Les scripts moteurs sont :

Ces scripts moteur ont la même interface et se comportent de la même façon que les scripts utilitaires générés par SunPlex Agent Builder pour les agents qui ne sont pas basés sur GDS. Les scripts sont regroupés en un module logiciel compatible avec Solaris et réutilisable sur plusieurs grappes.

Vous pouvez personnaliser le fichier de configuration pour y indiquer les noms de vos groupes de ressources ou d'autres paramètres qui correspondent généralement à des entrées de la commande scrgadm. Si vous ne personnalisez pas les scripts, SunPlex Agent Builder fournit des valeurs par défaut rationnelles aux paramètres scrgadm.

Utilisation des commandes d'administration standard de Sun Cluster pour créer un service basé sur GDS

Cette section décrit la procédure de d'introduction des paramètres ci-dessus mentionnés dans le module GDS. Le module GDS sera utilisé et administré à l'aide des commandes d'administration de Sun Cluster, telles que scrgadm et scswitch.

Les commandes d'administration de niveau inférieur, répertoriées dans cette section, n'ont pas besoin d'être introduites si les scripts moteur fournissent des fonctionnalités adéquates. Vous pouvez cependant les introduire si vous souhaitez affiner le contrôle des ressources basées sur le module GDS. Voici les commandes exécutées par les scripts moteur.

Commandes d'administration standard de Sun Cluster permettant de créer un service à haut niveau de disponibilité basé sur le module GDS
  1. Enregistrement du type de ressource SUNW.gds.


    # scrgadm -a -t SUNW.gds
    

  2. Création du groupe de ressources comportant la ressource LogicalHostname et du service de reprise sur panne.


    # scrgadm -a -g haapp_rg
    

  3. Création de la ressource correspondant à la ressource LogicalHostname.


    # scrgadm -a -L -g haapp_rs -l hhead
    

  4. Création de la ressource correspondant au service de reprise sur panne.


    # scrgadm -a -j haapp_rs -g haapp_rg -t SUNW.gds \
         -y Scalable=false -y Start_timeout=120 \
         -y Port_list="2222/tcp" \
         -x Start_command="/export/ha/appctl/start" \
         -x Stop_command="/export/ha/appctl/stop" \
         -x Probe_command="/export/app/bin/probe" \
         -x Child_mon_level=0 -y Network_resources_used=hhead \
         -x Failover_enabled=true -x Stop_signal=9
    

  5. Mise en ligne du ressources haapp_rg.


    # scswitch -Z -g haapp_rg
    

Commandes d'administration standard de Sun Cluster permettant de créer un service modulaire basé sur le module GDS
  1. Enregistrement du type de ressource SUNW.gds.


    # scrgadm -a -t SUNW.gds
    

  2. Création du groupe de ressources correspondant à la ressource SharedAddress.


    # scrgadm -a -g sa_rg
    

  3. Création de la ressource SharedAddress sur sa_rg.


    # scrgadm -a -S -g sa_rg -l hhead
    

  4. Création du groupe de ressources correspondant au service modulaire.


    # scrgadm -a -g app_rg -y Maximum_primaries=2 \
    -y Desired_primaries=2 -y RG_dependencies=sa_rg
    

  5. Création du groupe de ressources correspondant au service modulaire.


    # scrgadm -a -j app_rs -g app_rg -t SUNW.gds \
         -y Scalable=true -y Start_timeout=120 \
         -y Stop_timeout=120 -x Probe_timeout=120 \
         -y Portlist="2222/tcp" \
         -x Start_command="/export/app/bin/start" \
         -x Stop_command="/export/app/bin/stop" \
         -x Probe_command="/export/app/bin/probe \
         -x Child_mon_level=0 -y Network_resource_used=hhead \
         -x Failover_enabled=true -x Stop_signal=9
    

  6. Mise en ligne du groupe de ressources comportant les ressources réseau.


    # scswitch -Z -g sa_rg
    

  7. Mise en ligne du groupe de ressources app_rg.


    # scswitch -Z -g app_rg
    

Interface de ligne de commande de SunPlex Agent Builder

SunPlex Agent Builder dispose d'une interface de ligne de commande dont les fonctionnalités sont équivalentes à celles de l'interface graphique utilisateur. Cette interface comprend les commandes scsdcreate(1ha) et scdsconfig(1ha). La section suivante exécute la même fonction que la procédure basée sur l'interface graphique utilisateur "Lancez SunPlex Agent Builder" à la page 253, sans utiliser cette dernière interface.

Création d'un service qui utilise DGS à l'aide de la fonctionnalité équivalent à une ligne de commande de SunPlex Agent Builder
  1. Créez le service.

    Pour un service de reprise sur panne, utilisez :


    # scdscreate -g -V NET -T app -d /export/wdir
    

    Pour un service modulaire, utilisez :


    # scdscreate -g -s -V NET -T app -d /export/wdir
    


    Remarque :

    Le paramètre -d est facultatif. A moins d'indication contraire, le répertoire de travail est celui en cours d'utilisation.


  2. Configurez le service.


    # scdsconfig -s "/export/app/bin/start" \
    -t "/export/app/bin/stop" \
    -m "/export/app/bin/probe" -d /export/wdir
    


    Remarque :

    Seule la commande de démarrage est requise. Tous les autres paramètres sont facultatifs.


  3. Installez le module complet sur tous les noeuds de la grappe.


    # cd /export/wdir/NETapp/pkg
    # pkgadd -d . NETapp
    

  4. Les fichiers suivants sont installés au cours de pkgadd :


    /opt/NETapp 
    /opt/NETapp/README.app 
    /opt/NETapp/man 
    /opt/NETapp/man/man1m 
    /opt/NETapp/man/man1m/removeapp.1m 
    /opt/NETapp/man/man1m/startapp.1m 
    /opt/NETapp/man/man1m/stopapp.1m 
    /opt/NETapp/man/man1m/app_config.1m 
    /opt/NETapp/util 
    /opt/NETapp/util/removeapp 
    /opt/NETapp/util/startapp 
    /opt/NETapp/util/stopapp 
    /opt/NETapp/util/app_config


    Remarque :

    Les pages de manuel et les noms des scripts correspondront au nom de l'application que vous avez entré ci-dessus, précédé du nom du script ; par exemple, startapp.


    Pour afficher les pages de manuel, vous devez spécifier leur chemin d'accès. Par exemple, pour afficher les pages de manuel startapp, utilisez :


    # man -M /opt/NETapp/man startapp
    

  5. Sur l'un des noeuds de la grappe, configurez les ressources et démarrez l'application.


    # /opt/NETapp/util/startapp -h <nom_hote_logique> -p <liste ports et protocoles>
    

    Les arguments du script de démarrage varient en fonction du type de ressource : de reprise sur panne ou modulaire. Vérifiez la page de manuel personnalisée ou exécutez le script de démarrage sans argument pour obtenir une déclaration d'utilisation.


    # /opt/NETapp/util/startapp 
     The resource name of LogicalHostname or SharedAddress must be specified. 
     For failover services : 
     Usage: startapp -h <nom hôte logique> 
               -p <liste ports et protocoles> 
              [-n <liste groupe nafo/adaptateur>] 
     For scalable services : 
     Usage: startapp 
              -h <nom adresse partagée> 
              -p <liste ports et protocoles> 
              [-l <politique d'équilibrage des charges>] 
              [-n <liste groupe nafo/adaptateur>] 
               [-w <poids d'équilibrage des charges>]