Sun Cluster: Guía del desarrollador de los servicios de datos del sistema operativo Solaris

Método Start

RGM invoca el método de rellamada Start de una implementación de tipo de recursos en un nodo del clúster seleccionado para iniciar el recurso. En la línea de comandos se pasan los nombres del grupo de recurso, del recurso y del tipo de recurso. El método Start realiza las acciones necesarias para iniciar un recurso del servicio de datos en el nodo del clúster. Normalmente, este proceso requiere la recuperación de las propiedades de recursos, la búsqueda del archivo ejecutable o los archivos de configuración específicos de la aplicación, o ambos, así como el inicio de la aplicación con los argumentos de línea de comandos correctos.

Con DSDL, la configuración del recurso se recupera con la utilidad scds_initialize(). La acción de inicio de la aplicación se puede contener en una función svc_start(). Se puede llamar a otra función, svc_wait(), para verificar que la aplicación se inicie realmente. El código simplificado del método Start es el siguiente:

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));
}

Esta implementación de método de inicio llama a svc_validate() para validar la configuración del recurso. Si falla, es posible que no coincidan la configuración del recurso y la de la aplicación o que haya actualmente un problema en este nodo del clúster en relación con el sistema. Por ejemplo, es posible que no esté disponible actualmente el sistema de archivos del clúster necesario para el recurso en este nodo de clúster. En ese caso, es inútil intentar iniciar el recurso en este nodo del clúster; es mejor que RGM intente iniciar el recurso en otro nodo.

No obstante, tenga en cuenta que la afirmación anterior presupone que svc_validate () presenta un comportamiento lo suficientemente moderado, comprobando únicamente los recursos del nodo del clúster que son absolutamente necesarios para la aplicación. De lo contrario, es posible que el recurso no puede iniciarse en todos los nodos del clúster y, por consiguiente, presente el estado START_FAILED. Consulte la página de comando man scswitch(1M) y Sun Cluster Data Services Planning and Administration Guide for Solaris OS para obtener más información sobre este estado.

La función svc_start() debe devolver 0 para que el inicio del recurso en el nodo sea satisfactorio. Si la función de inicio encuentra un problema, debe devolver un valor distinto a 0. Si esta función falla, RGM intenta iniciar el recurso en otro nodo del clúster.

Para sacar el mayor provecho posible de DSDL, la función svc_start() puede llamar a la utilidad scds_pmf_start() para iniciar la aplicación bajo el control de la Utilidad de supervisor de procesos (PMF). Esta utilidad emplea también la acción de función de rellamada de PMF para detectar fallos en los procesos. Consulte la descripción del argumento de acción - a en la página de comando man pmfadm(1M) para obtener más información.