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

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. En la línea de órdenes se pasan los nombres del grupo de recurso, del recurso y del tipo de recurso. 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 órdenes adecuados.

Con DSDL, la configuración del recurso ya la recupera 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 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 de configuración no válidos */
   }
   if (svc_start(handle) != 0) {
   return (1);   /* Inicio no realizado */
   }
   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, 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. Tenga en cuenta en todo caso que lo anterior asume que svc_validate () es lo bastante conservador (de forma que sólo compruebe los recursos del nodo del clúster que son absolutamente necesarios para la aplicación) o de lo contrario el recurso podría no iniciarse en todos los nodos del clúster y por tanto terminar con un estado START_FAILED. Consulte scswitch( 1M) y Sun Cluster Data Services Planning and Administration Guide for Solaris OS 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.