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

Control de una aplicación

Los métodos de rellamada permiten que RGM asuma el control del recurso subyacente (es decir, la aplicación) cada vez que los nodos se unan o abandonen el clúster.

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 llama a los programas de métodos del tipo de recurso en el momento y nodos correctos para poner los grupos de recursos en línea o fuera de línea. Por ejemplo, después de producirse un bloqueo de un nodo del clúster, RGM transfiere los grupos de recursos controlados por ese nodo 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 se han establecido tiempos de espera lo suficientemente largos en los métodos Start para los tipos de recursos que requieren un periodo de inicialización prolongado. Para ello, establezca los valores predeterminados y mínimos para la propiedad Start_timeout en el archivo RTR.

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 Nodo 1 y se vuelve a poner en línea en el Nodo 2. Al establecer fuera de línea el grupos de recursos, RGM llama al método Stop en los recursos del grupos para detener toda actividad en el Nodo 1. Una vez que se han completado los métodos Stop de todos los recursos en el Nodo 1, RGM vuelve a poner en línea los grupos de recursos en el Nodo 2.

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 implementación más segura del método Stop finaliza todos los procesos relacionados con el recurso en el nodo local. Los tipos de recursos que requieren un largo tiempo para cerrarse deberían disponer de tiempos de espera lo suficientemente prolongados en los métodos Stop. Establezca la propiedad Stop_timeout en el archivo RTR.

Si falla el método Stopo se agota el tiempo de espera, el grupo de recursos presenta un estado de error que requiere la intervención del administrador del clúster. 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.

Selección de los métodos Start y Stop que deben utilizarse

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 en profundidad tanto el cliente como el protocolo de red de cliente-servidor del servicio de datos para decidir los métodos correctos que deben utilizarse.

Es posible que los servicios que utilizan recursos de dirección de red necesiten que los procesos de inicio o parada se realicen en un determinado orden en relación con la configuración de dirección de nombre de host lógico. 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 inicio y cierre antes y después de configurar la activación o desactivación de 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. A continuación se muestra la secuencia que permite que RGM ponga en línea un grupo de recursos:

  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.

Al optar por los métodos Start, Stop, Prenet_start o Postnet_stop, debe tener en cuenta primero la parte 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 la activación de las direcciones de red antes de llamar a los métodos Start del recurso del servicio de datos. Por tanto, si un servicio de datos requiere que se configure la activación de 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 configure la activación de direcciones de red 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 recomendable ejecutar las bibliotecas o las utilidades administrativas del servicio de datos. En ocasiones, el servicio de datos 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. Utilice los métodos Start y Stop en esta situación.

Si el servicio de datos requiere que se configuren las 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 se configure la activación de la dirección de red, inícielo antes de que se configure la activación de la interfaz de red. Si se inicia el servicio de datos de esta forma, asegúrese de que el servicio de datos responde inmediatamente a las solicitudes del cliente tan pronto como se configure la activación de la dirección de red. Como resultado, es poco probable que los clientes dejen de intentarlo. 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 ejecuta después de configurar la desactivación de la dirección de red. A consecuencia de esto, el puerto del servicio TCP o UDP del servicio de datos, o su número de programa RPC, aparecerá siempre disponible para los clientes de la red, excepto cuando no responda la dirección de red.


Nota –

Si instala un servicio RPC en el clúster, éste no debe utilizar los siguientes números de programa: 100141, 100142 y 100248. Estos números se reservan para los daemons de Sun Cluster rgmd_receptionist, fed y pmfd, respectivamente. Si el servicio RPC instalado utiliza uno de estos números de programa, cámbielo.


A la hora de decidirse por el uso de los métodos Start y Stop o de los métodos Prenet_start y Postnet_stop, o ambos, debe tener en cuenta los requisitos y el comportamiento de el servidor y el cliente.

Métodos Init, Fini y Boot

Tres métodos opcionales, Init, Fini y Boot, permiten que RGM ejecute el código de inicialización y finalización en un recurso.

RGM ejecuta el método Init para efectuar una única inicialización del recurso cuando éste se administra como resultado de una de las siguientes condiciones:

RGM ejecuta el método Fini para efectuar tareas de limpieza en el recurso al convertirse en un recurso no administrado, como consecuencia de una de las siguientes condiciones:

El proceso de limpieza debe ser idempotente. Es decir, si la limpieza ya se ha realizado, Fini sale satisfactoriamente.

RGM ejecuta el método Boot en los nodos que se acaban de unir al clúster, es decir, que acaban de iniciarse o reiniciarse.

El método Boot suele realizar la misma inicialización que Init. La inicialización debe ser idempotente, es decir, si el recurso ya se ha inicializado en el nodo local, Boot e Init salen satisfactoriamente.