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

Inicio y parada de un recurso

Una implementación de un tipo de recurso requiere, como mínimo, un método Start y un método Stop. RGM invoca programas del método del tipo de recurso en los momentos pertinentes y en los nodos adecuados para poner los grupos de recursos en línea y fuera de línea. Por ejemplo, tras la caída de un nodo del clúster, RGM mueve todos los nodos que ese nodo controla a uno nuevo. Debe implementar un método Start para que RGM pueda reiniciar cada recurso en el nodo principal superviviente.

No se debe devolver un método Start hasta que se haya iniciado el recurso y esté disponible en el nodo local. Asegúrese de que en los métodos Start se haya especificado un tiempo suficiente para los tipos de recursos que requieren un periodo de inicialización prolongado (establezca los valores predeterminado y mínimo para la propiedad Start_timeout en el archivo de registro de tipo de recurso).

Debe implementar un método Stop para situaciones en las que RGM ponga un grupo de recursos fuera de línea. Por ejemplo, suponga que un grupo de recursos se pone fuera de línea en el Nodo1 y se pone en línea en el Nodo2. Mientras pone el grupo de recursos fuera de línea, RGM llama al método Stop para que los recursos del grupo detengan todas sus actividades en el Nodo1. Después de que los métodos Stop de todos los recursos se hayan terminado en el Nodo1, RGM vuelve a poner en línea el grupo de recursos en el Nodo2.

Un método Stop no se debe devolver hasta que el recurso haya detenido por completo toda su actividad en el nodo local y se haya apagado totalmente. La manera más segura de implementar un método Stop es dar tiempo a que todos los procesos del nodo local relacionados con el recurso se completen. Para los que requieren mucho tiempo para apagarse se debería establecer un tiempo de espera suficientemente prolongado en su método Stop. Establezca la propiedad Stop_timeout en el archivo de registro del tipo de recurso.

Cuando un método Stop no es satisfactorio o su tiempo de espera se agota, el grupo de recursos entra en un estado de error que requiere la intervención del operador. Para evitar esto, las implementaciones de los métodos Stop y Monitor_stop deberían intentar la recuperación de cualquier condición de error posible. Idealmente, estos métodos deberían salir con un estado de error 0 (satisfactorio), una vez que se haya detenido satisfactoriamente toda la actividad del recurso y su supervisor en el nodo local.

Elección de los métodos Start y Stop que se van a utilizar

Esta sección ofrece algunos consejos sobre cuándo se deben utilizar los métodos Start y Stop en lugar de los métodos Prenet_start y Postnet_stop. Debe conocer perfectamente el protocolo de conexión de red de cliente-servidor del servicio de datos y del cliente para decidir qué métodos se deben emplear.

Es posible que los servicios que utilizan recursos de dirección de red necesiten que se realicen las operaciones de inicio o parada en un orden determinado, dependiendo de la configuración de dirección de nombre lógico de servidor. Los métodos de rellamada opcionales Prenet_start y Postnet_stop permiten que la implementación de un tipo de recurso realice acciones especiales de encendido y apagado antes y después de asignar o desasignar las direcciones de red del mismo grupo de recursos.

RGM invoca métodos para conectar (pero no configurar) las direcciones de red antes de invocar el método Prenet_start de los servicios de datos. RGM invoca métodos para desconectar las direcciones de red, después de invocar los métodos Postnet_stop de los servicios de datos. RGM pone un grupo de recursos en línea con la siguiente secuencia de acciones:

  1. Conectar direcciones de red.

  2. Invocar el método Prenet_start de los servicios de datos (si lo hubiera).

  3. Configurar las direcciones de red que activar.

  4. Invocar el método Start de los servicios de datos (si lo hubiera).

El proceso para poner un recurso fuera de línea es el contrario:

  1. Invocar el método Stop del servicio de datos (si lo hubiera).

  2. Configurar las direcciones de red que desactivar.

  3. Invocar el método Postnet_stop de los servicios de datos (si lo hubiera).

  4. Desconectar las direcciones de red.

En el proceso de decidir cuál de los métodos Start, Stop, Prenet_start o Postnet_stop se va a usar, se ha de tener en cuenta primero el lado del servidor. Cuando se pone en línea un grupo de recursos que contiene recursos de aplicación del servicio de datos y de dirección de red, RGM invoca métodos para configurar las direcciones de red que activar antes de llamar a los métodos Start del recurso del servicio de datos. Por tanto, si un servicio de datos requiere que se configuren las direcciones de red en el momento del inicio, utilice el método Start para iniciar el servicio de datos.

Del mismo modo, al poner fuera de línea un grupo de recursos que contenga recursos del servicio de datos y de direcciones de red, RGM invoca métodos para configurar las direcciones de red como inactivas después de invocar los métodos Stop del recurso del servicio de datos. Por tanto, si un servicio de datos requiere que se configuren direcciones de red como activas en el momento de la parada, utilice el método Stop para detener el servicio de datos.

Por ejemplo, para iniciar o detener un servicio de datos, es posible que haya que invocar las bibliotecas o utilidades administrativas del servicio de datos. En ocasiones, éste tiene bibliotecas o utilidades administrativas que utilizan una interfaz de red cliente-servidor para realizar la administración. Es decir, una utilidad administrativa realiza una llamada al daemon del servidor, por lo que es posible que la dirección de red tenga que estar activa para utilizar la biblioteca o utilidad administrativa. En este caso, utilice los métodos Start y Stop.

Si el servicio de datos requiere que se configuren direcciones de red como inactivas en el momento en que se inicia y se detiene, utilice los métodos Prenet_start y Postnet_stop para iniciar y detener el servicio de datos. Tenga en cuenta si el software cliente responderá de modo diferente en función de que sea la dirección de red o el servicio de datos el que se ponga en línea primero, tras una reconfiguración del clúster (scha_control() con el argumento SCHA_GIVEOVER o una conmutación con scswitch). Por ejemplo, la implementación de cliente puede hacer unos reintentos mínimos, y desistir pronto, una vez haya determinado que el puerto del servicio de datos no está disponible.

Si el servicio de datos no requiere que la dirección de red se configure como activa al inicio, inícielo antes de que se configure la interfaz de red. Esto garantiza que el servicio de datos podrá responder inmediatamente a las solicitudes de cliente, en cuanto se haya configurado la dirección de red, y es menos probable que los clientes dejen de realizar nuevos intentos. En este caso, utilice el método Prenet_start en lugar del método Start para iniciar el servicio de datos.

Si utiliza el método Postnet_stop, el recurso del servicio de datos seguirá activo en el punto en que se haya desconfigurado la dirección de red. El método Postnet_stop sólo se invoca después de la inactivación de la dirección de red. Así, el puerto de servicio UDP o TCP del servicio de datos o su número de programa RPC, siempre aparecen como disponibles para los clientes de la red, salvo cuando la dirección de red tampoco responda.

La decisión de utilizar los métodos Start y Stop, en lugar de Prenet_start y Postnet_stop, o de utilizar ambos métodos, debe tener en cuenta los requisitos y el comportamiento del servidor y el cliente.