Guide des développeurs pour les services de données Sun Cluster pour SE Solaris

Méthode Start

La méthode de rappel Start associée à la mise en œuvre 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 doit exécuter les opérations nécessaires pour démarrer une ressource de service de données sur le nœud du cluster. Généralement, ceci implique la récupération des propriétés de la ressource, la localisation des exécutables et/ou des fichiers de configuration spécifiques à l'application ainsi que le lancement des arguments de ligne de commande appropriés.

Avec la BDSD, 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 devient :


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

   if (scds_initialize(&handle, argc, argv)!= SCHA_ERR_NOERR) {
   return (1);   /* Erreur d'initialisation */
   }
   if (svc_validate(handle) != 0) {
   return (1);   /* Paramètres invalides */
   }
   if (svc_start(handle) != 0) {
   return (1);   /* Échec du démarrage */
   }
   return (svc_wait(handle));
}

Cette mise en œuvre de la méthode de démarrage appelle svc_validate() pour valider la configuration de la ressource. En cas d'échec, soit les configurations de la ressource et de l'application sont conflictuelles soit ce nœud du cluster rencontre actuellement un problème lié au système. Par exemple, un système de fichiers global requis par la ressource peut ne pas être disponible sur ce nœud du cluster à ce moment. Dans ce cas, il ne rime à rien de tenter de démarrer la ressource sur ce nœud. Il est préférable de laisser le RGM tenter de démarrer la ressource sur un autre nœud. Toutefois, remarquez que les informations indiquées ci-dessus supposent que svc_validate () est suffisamment conservatrice (en d'autres termes, qu'elle ne vérifie que les ressources du nœud du cluster absolument nécessaires pour l'application) ou que le démarrage de la ressource peut échouer sur tous les autres nœuds du cluster et ainsi se retrouver avec l'état START_FAILED. Reportez-vous à scswitch( 1M) et au document Sun Cluster Data Services Planning and Administration Guide for Solaris OS pour de plus amples explications sur cet état.

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

Pour tirer avantage de la BDSD autant que possible, la fonction svc_start() peut recourir à l'utilitaire scds_pmf_start() pour démarrer l'application sous le gestionnaire de processus. Cet utilitaire permet également de tirer profit de l'action de rappel d'échec du gestionnaire de processus (reportez-vous à l'indicateur d'action -a dans pmfadm( 1M)) pour mettre en œuvre la détection des échecs.