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

Méthode de Démarrage

La méthode de rappel de Démarrage associée à la mise en oeuvre d'un type de ressource est appelée par le RGM sur un cluster donné afin de démarrer la ressource. Les noms du groupe de ressources, de la ressource et du type de ressource sont transmis à la ligne de commande. La méthode Start effectue les opérations nécessaires pour démarrer une ressource de service de données sur le noeud du cluster. Généralement, ceci implique la récupération des propriétés de la ressource, la localisation des fichiers exécutables et/ou de configuration spécifiques à l'application, ainsi que le démarrage de l'application avec les arguments de ligne de commande appropriés.

Avec la DSDL, la configuration de la ressource est déjà récupérée par l'utilitaire scds_initialize(). L'opération de démarrage de l'application peut être contenue dans une fonction svc_start(). Une autre fonction, svc_wait(), peut être appelée pour vérifier que l'application démarre bien. Le code simplifié de la méthode Start est le suivant :

int
main(int argc, char *argv[])
{
   scds_handle_t handle;

   if (scds_initialize(&handle, argc, argv)!= SCHA_ERR_NOERR) {
   return (1);   /* Initialization Error */
   }
   if (svc_validate(handle) != 0) {
   return (1);   /* Invalid settings */
   }
   if (svc_start(handle) != 0) {
   return (1);   /* Start failed */
   }
   return (svc_wait(handle));
}

Cette mise en oeuvre de la méthode de démarrage appelle svc_validate() pour valider la configuration de la ressource. En cas d'échec, cela signifie soit que la configuration de la ressource et la configuration de l'application ne correspondent pas, soit qu'il y a un problème lié au système sur ce noeud de cluster. Par exemple, un système de fichiers de cluster requis par la ressource peut ne pas être disponible sur ce noeud de cluster. Dans ce cas, il est inutile d'essayer de démarrer la ressource sur ce noeud de cluster. Il est préférable de laisser le RGM tenter de démarrer la ressource sur un autre noeud.

Notez toutefois que l'instruction précédente considère que svc_validate () est suffisamment conservatrice, c'est-à-dire qu'elle ne vérifie que les ressources du noeud de cluster qui sont absolument indispensables à l'application. Si ce n'était pas le cas, la ressource risquerait de ne pas pouvoir démarrer sur tous les noeuds de cluster et, par conséquent, prendrait l'état START_FAILED. Reportez-vous à la page de manuel scswitch(1M) et au Sun Cluster Data Services Planning and Administration Guide for Solaris OS pour en savoir plus sur cet état.

La fonction svc_start() doit renvoyer la valeur 0 pour un démarrage réussi de la ressource sur le noeud. Si la fonction de démarrage rencontre un problème, elle doit renvoyer une valeur différente de zéro. Si cette fonction échoue, le RGM tente de démarrer la ressource sur un autre noeud du cluster.

Pour tirer parti au maximum de la DSDL, la fonction svc_start() peut appeler l'utilitaire scds_pmf_start() pour démarrer l'application sous le gestionnaire de processus (PMF). Cet utilitaire utilise également l'action de rappel d'échec du PMF pour détecter l'échec du processus. Pour en savoir plus, reportez-vous à la description de l'argument d'action - a à la page de manuel pmfadm(1M).