Sun Cluster 3.1 10/03: Guía del desarrollador de los servicios de datos

El 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. Los nombres del grupo de recursos, del recurso y del tipo de recurso se pasan a la línea de comandos. Se espera que el método Start realice las acciones necesarias para iniciar un recurso de servicio de datos en el nodo del clúster. Generalmente, esto implica recuperar las propiedades del recurso, ubicar los ejecutables específicos de la aplicación y los archivos de configuración y ejecutar la aplicación con los argumentos de línea de comando adecuados.

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(). Otra función, svc_wait(), puede invocarse para verificar que la aplicación se inicie efectivamente. El código simplificado para el método Start se convierte en:


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

   if (scds_initialize(&handle, argc, argv)!= SCHA_ERR_NOERR) {
   return (1);   /* Error de inicialización */
   }
   if (svc_validate(handle) != 0) {
   return (1);   /* Valores no válidos */
   }
   if (svc_start(handle) != 0) {
   return (1);   /* Fallo de inicio */
   }
   return (svc_wait(handle));
}

Esta implementación del método de inicio invoca svc_validate() para validar la configuración del recurso. Si falla, o bien la configuración del recurso o la configuración de la aplicación no coinciden o bien hay actualmente un problema relacionado con el sistema en el nodo del clúster. Por ejemplo, es posible que un sistema de archivos global necesario para el recurso no esté disponible actualmente en este nodo del clúster. En tal caso, es inútil intentar siquiera iniciar el recurso en este nodo del clúster, es mejor que RGM intente iniciar el recurso en otro nodo. Sin embargo, tenga presente que el caso anterior presupone que svc_validate() es lo suficientemente conservador (por lo que sólo comprueba los recursos del nodo del clúster imprescindibles para la aplicación), porque en caso contrario es posible que el inicio del recurso fallara en todos los nodos del clúster y acabara con un estado START_FAILED. Consulte scswitch(1M) y Sun Cluster 3.1 Data Service Planning and Administration Guide para ver una explicació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 ha encontrado algún problema, devolverá un valor distinto de cero. Si esta función falla, RGM intenta iniciar el recurso en otro nodo del clúster.

Para aprovechar DSDL en lo posible, la función svc_start() puede utilizar la utilidad scds_pmf_start() para iniciar la aplicación bajo la Prestación del supervisor de procesos (PMF). Esta utilidad aprovecha también la función de acción de rellamada en caso de fallo de PMF (consulte el indicador de acción -a en pmfadm(1M)) para implementar la detección de fallos de procesos.