Guide des développeurs pour les services de données Sun Cluster 3.1 10/03

Chapitre 10 Services de données génériques

Ce chapitre présente le module de service de données générique (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 standard d'administration de Sun Cluster.

Présentation générale des services de données génériques

Un service de données générique (GDS) est un mécanisme permettant de rendre hautement disponibles et évolutives des applications uniques et compatibles réseau en les connectant à la structure du gestionnaire RGM de Sun Cluster. Ce mécanisme évite l'utilisation d'un agent de programmation, procédure habituelle pour rendre une application hautement disponible ou évolutive.

Le module GDS est un service de données unique, précompilé. Vous ne pouvez pas modifier un service de données précompilé et ses composants, les mises en oeuvre de la méthode de rappel (rt_callbacks (1HA)) et le fichier d'enregistrement du type de ressources (rt_reg( 4)).

Type de ressources précompilé

Le type de ressources du service de données générique SUNW.gds est inclus dans le package SUNWscgds. L'utilitaire scinstall(1M) installe ce package en même tant que le cluster. Le package 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 le module GDS

Le module GDS offre les avantages suivants par rapport à l'utilisation du modèle de code source généré par SunPlex Agent Builder (reportez-vous à scdscreate( 1HA)) ou les commandes standard d'administration de Sun Cluster :

Processus de création d'un service utilisant le module GDS

Vous pouvez créer un service utilisant le module GDS de deux façons :

Module 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 moteurs qui configurent les ressources de l'application en question.

Module GDS et commandes standard d'administration de Sun Cluster

Cette méthode utilise le code de service 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.

Sélection d'une méthode de création d'un service basé sur GDS

Comme l'indiquent les procédures Utilisation des commandes d'administration 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 évolutif basé sur le module GDS, l'exécution des commandes scrgadm et scswitch nécessite un effort conséquent de saisie.

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

Cas dans lesquels le module GDS n'est pas approprié

Alors que l'utilisation du module GDS offre de nombreux avantages, il arrive qu'il ne soit pas opportun de l'utiliser. Le module GDS ne convient pas :

Propriétés requises pour le module GDS

Les propriétés suivantes sont indispensables :

Propriété d'extension Commande_démarrage

La commande de démarrage que vous spécifiez dans la propriété d'extension Commande_démarrage lance l'application. Cette commande UNIX et ses arguments peuvent être passés directement à un shell pour démarrer l'application.

Propriété Liste_ports

La propriété Liste_ports identifie la liste des ports que l'application écoute. La propriété Liste_ports 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.

Propriétés facultatives pour le module GDS

Propriétés GDS facultatives :

Propriété Ressources_réseau_utilisées

La valeur par défaut de cette propriété est Null. 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 Null, 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 document Sun Cluster 3.1 Data Service Planning and Administration Guide pour de plus amples informations sur la procédure de configuration d'une ressource LogicalHostName ou SharedAddress.

Pour spécifier une valeur, spécifiez le nom d'une ou plusieurs ressources ; chaque nom pouvant contenir un ou plusieurs LogicalHostName ou une ou plusieurs SharedAddress. Reportez-vous à r_properties (5) pour de plus amples informations.

Propriété Commande_arrêt

La commande d'arrêt doit arrêter l'application et n'être retournée qu'une fois l'application totalement 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 la Commande_arrêt, 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 Signal_arrêt.

Propriété Commande_sonde

La commande de détection contrôle périodiquement l'état de l'application en question. 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.

L'état de sortie de la commande de détection permet de déterminer le degré de gravité de la panne qui touche l'application. Cet état 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 Basculement_activé 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 décider 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é Ressources_réseau_utilisées ou de la sortie de scds_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.


Propriété Délai_démarrage

Cette propriété spécifie le délai d'attente au démarrage de la commande de démarrage (reportez-vous à la rubrique Propriété d'extension Commande_démarrage pour de plus amples informations). La valeur par défaut de Délai_démarrage est de 300 secondes.

Propriété Délai_arrêt

Cette propriété spécifie le délai d'attente à l'arrêt de la commande d'arrêt (reportez-vous à la rubrique Propriété Commande_arrêt pour de plus amples informations. La valeur par défaut de Délai_arrêt est de 300 secondes.

Propriété Délai_sonde

Cette propriété spécifie le délai d'attente de la commande de détection (reportez-vous à la rubrique Propriété Commande_sonde pour de plus amples informations). La valeur par défaut de Délai_sonde est de 30 secondes.

Propriété Niveau_cont_fils

Cette propriété permet de contrôler les processus gérés par la fonction 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.


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.


Propriété Basculement_activé

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

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

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

Propriété Signal_arrêt

Le module GDS utilise la valeur de cette propriété d'extension entière pour déterminer le signal utilisé pour arrêter l'application au moyen de la fonction 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

SunPlex Agent Builder vous permet de créer le service utilisant le module GDS. SunPlex Agent Builder est présenté plus en détail dans le Chapitre 9.

Création d'un service dans SunPlex Agent Builder à l'aide du module GDS

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.

    Boîte de dialogue intitulée SunPlex Agent Builder présentant l'écran principal d'Agent Builder
  3. Renseignez le champ Nom du fournisseur.

  4. Renseignez le champ Nom de l'application.


    Remarque :

    la combinaison du nom du fournisseur et de celui de l'application ne doit pas excéder neuf caractères. Cette combinaison sert de nom au package des scripts moteurs.


  5. Accédez au répertoire de travail.

    Vous pouvez utiliser le bouton Parcourir 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 évolutif ou de basculement.

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

  7. Sélectionnez GDS.

  8. Cliquez sur le bouton Créer pour créer les scripts moteurs.

  9. Le panneau SunPlex Agent Builder affiche les résultats de la création du service. Le bouton Créer est grisé. Vous pouvez à présent utiliser le bouton Suivant.

    Boîte de dialogue présentant l'écran Créer une fois les champs renseignés
Configuration des scripts moteurs

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

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

  2. Entrez le chemin d'accès à la commande de démarrage ou utilisez le bouton Parcourir pour sélectionner la commande de démarrage.

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

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

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

  6. Cliquez sur Configurer pour démarrer la configuration des scripts moteurs.


    Remarque :

    le nom du package se compose d'une concaténation du nom du fournisseur et de celui de l'application.


    Un package de scripts moteurs est ainsi créé et placé dans :


    <rép_travail>/<nom_fournisseur><application>/pkg
    
    Par exemple, /export/wdir/NETapp/pkg

  7. Installez le package complet sur tous les noeuds du cluster.


    # 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 man 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 man, vous devez spécifier leur chemin d'accès. Par exemple, pour afficher les pages man startapp, utilisez :


    # man -M /opt/NETapp/man startapp
    
  9. Sur l'un des noeuds du cluster, configurez les ressources et démarrez l'application.


    # /opt/NETapp/util/startapp -h <nom_hôte_logique> -p <liste_ports_et_protocole>
    

    Les arguments du script de démarrage varient en fonction du type de ressources : de basculement ou évolutives. Vérifiez la page man personnalisée ou exécutez le script de démarrage sans argument pour obtenir une déclaration d'utilisation.


    # /opt/NETapp/util/startapp
     Vous devez spécifier le nom de ressource de LogicalHostname ou de SharedAddress.
     Pour des services de basculement :
     Utilisation : startapp -h <nom_hôte_logique>
              -p <liste_ports_et_protocoles>
              [-n <liste_groupes_mp_ip_et_adaptateur>]
     Pour des services évolutifs :
     Utilisation : startapp
              -h <nom_adresse_partagée>
              -p <liste_ports_et_protocoles>
              [-l <règle_équilibrage_charge>]
              [-n <liste_groupe_mp_ip_et_adaptateur>]
              [-w <poids_équilibrage_charge>]

Sortie de SunPlex Agent Builder

SunPlex Agent Builder génère trois scripts de commande et un fichier de configuration en fonction des données que vous saisissez à la création du package. Le fichier de configuration spécifie les noms du groupe de ressources et du type de ressources.

Les scripts moteurs sont :

Ces scripts moteurs 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 package compatible avec Solaris et réutilisable sur plusieurs clusters.

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 rubrique décrit la procédure d'introduction de ces paramètres dans le module GDS. Ce module est 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 rubrique, n'ont pas besoin d'être introduites si les scripts moteurs 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 moteurs.

Utilisation des commandes d'administration de Sun Cluster permettant de créer un service à haut niveau de disponibilité basé sur le module GDS
  1. Enregistrez le type de ressources SUNW.gds


    # scrgadm -a -t SUNW.gds
    
  2. Créez le groupe de ressources comportant la ressource LogicalHostname et le service de basculement.


    # scrgadm -a -g haapp_rg
    
  3. Créez la ressource correspondant à la ressource LogicalHostname.


    # scrgadm -a -L -g haapp_rs -l hhead
    
  4. Créez la ressource correspondant au service de basculement.


    # scrgadm -a -j haapp_rs -g haapp_rg -t SUNW.gds \
             -y Scalable=false -y Start_timeout=120 \
             -y Stop_timeout=120 -x Probe_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. Mettez en ligne le groupe de ressources haapp_rg.


    # scswitch -Z -g haapp_rg
    
Commandes d'administration standard de Sun Cluster permettant de créer un service évolutif basé sur le module GDS
  1. Enregistrez le type de ressources SUNW.gds.


    # scrgadm -a -t SUNW.gds
    
  2. Créez le groupe de ressources correspondant à la ressource SharedAddress.


    # scrgadm -a -g sa_rg
    

  3. Créez la ressource SharedAddress sur sa_rg.


    # scrgadm -a -S -g sa_rg -l hhead
    
  4. Créez le groupe de ressources correspondant au service évolutif.


    # scrgadm -a -g app_rg -y Maximum_primaries=2 \
          -y Desired_primaries=2 -y RG_dependencies=sa_rg
    
  5. Créez le groupe de ressources correspondant au service évolutif.


    # 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 Port_list="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. Mettez en ligne le groupe de ressources comportant les ressources réseau.


     # scswitch -Z -g sa_rg
    
  7. Mettez en ligne le groupe de ressources app_rg.


    # scswitch -Z -g app_rg
    

Interface de ligne de commande de SunPlex Agent Builder

SunPlex Agent Builder intègre une interface de ligne de commande dont les fonctionnalités sont identiques à celles de l'interface utilisateur graphique. Cette interface comprend les commandes scdscreate( 1HA) et scdsconfig (1HA). La rubrique suivante exécute la même fonction que la procédure basée sur l'interface graphique utilisateur Création d'un service utilisant le module GDS avec la version ligne de commande d'Agent Builder, sans utiliser cette dernière interface.

Création d'un service utilisant le module GDS avec la version ligne de commande d'Agent Builder
  1. Créez le service.

    Pour un service de basculement, utilisez :


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

    Pour un service évolutif, utilisez :


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

    Remarque :

    les paramètres –d sont facultatifs. À moins d'une 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 package complet sur tous les noeuds du cluster.


    # 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 man 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 man, vous devez spécifier leur chemin d'accès. Par exemple, pour afficher les pages man startapp, utilisez :


    # man -M /opt/NETapp/man startapp
    
  5. Sur l'un des noeuds du cluster, configurez les ressources et démarrez l'application.


    # /opt/NETapp/util/startapp -h <nom_hôte_logique> -p <liste_port_et_protocole>
    

    Les arguments du script de démarrage varient en fonction du type de ressources : de basculement ou évolutives. Vérifiez la page man 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_groupes_mp_ip_et_adaptateur>]
     For scalable services:
     Usage: startapp
              -h <nom_adresse_partagée>
              -p <liste_ports_et_protocoles>
              [-l <règle_équilibrage_charge>]
              [-n <liste_groupes_mp_ip_et_adaptateur>]
              [-w <poids_équilibrage_charge>]