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

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 de Démarrage doit exécuter 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 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 de Démarrage devient :


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, soit les configurations de la ressource et de l'application sont conflictuelles soit ce noeud 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 noeud du cluster à ce moment. Dans ce cas, il ne rime à rien de tenter de démarrer la ressource sur ce noeud. Il est préférable de laisser le RGM tenter de démarrer la ressource sur un autre noeud. 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 noeud du cluster absolument nécessaires pour l'application) ou que le démarrage de la ressource peut échouer sur tous les autres noeuds du cluster et ainsi se retrouver avec l'état ÉCHEC_DÉMARRAGE. Reportez-vous à scswitch( 1M) et au document Sun Cluster 3.1 Data Service Planning and Administration Guide 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 noeud. 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 noeud 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 oeuvre la détection des échecs.