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

Capítulo 3 Referencia de la API de administración de recursos

Este capítulo muestra y describe brevemente las funciones de acceso y los métodos de rellamada que conforman la API de administración de recursos (RMAPI). Sin embargo, la referencia definitiva para estas funciones y métodos son las páginas de comando man de RMAPI.

En este capítulo se tratan los temas siguientes:

Métodos de acceso a RMAPI

La API proporciona funciones de acceso a las propiedades de tipo de recurso, recurso y grupo de recurso, y a otra información del clúster. Estas funciones se proporcionan en forma de comandos de shell y funciones de C, que permiten implementar programas de control como secuencias de shell o programas de C.

Comandos del shell de RMAPI

Los comandos de shell se utilizan en implementaciones de secuencias de shell de los métodos de rellamada para los tipos de recursos que representan los servicios controlados por el Gestor de grupos de recursos del clúster. Puede utilizar estos comandos para completar las siguientes tareas:


Nota –

Aunque esta sección proporciona breves descripciones de los comandos de shell, las páginas de comando man 1HA ofrecen una referencia completa de estos comandos. Se asocia una página de comando man con el mismo nombre a cada comando, a menos que se indique lo contrario.


Comandos de los recursos de RMAPI

Puede acceder a la información de un recurso o establecer las propiedad Status o Status_msg con estos comandos.

scha_resource_get

Accede a la información sobre un recurso o tipo de recurso que se encuentra bajo el control de RGM. Este comando proporciona la misma información que la función de C scha_resource_get(). Para obtener información, consulte la página de comando man scha_resource_get(1HA).

scha_resource_setstatus

Establece las propiedades Status y Status_msg de un recurso bajo el control de RGM. El supervisor del recurso utiliza este comando para indicar el estado del mismo, según su criterio. Este comando proporciona las mismas capacidades que la función de C scha_resource_setstatus(). Para obtener una descripción más detallada de este comando, consulte la página de comando man scha_resource_setstatus(1HA).


Nota –

scha_resource_setstatus() es especialmente útil para un supervisor de recursos, cualquier programa puede invocarlo.


Comando del tipo de recurso

scha_resourcetype_get

Accede a la información sobre el tipo de recurso registrada con RGM. Realiza la misma tarea que la función de C scha_resourcetype_get(). Para obtener una descripción más detallada de este comando, consulte la página de comando man scha_resourcetype_get(1HA).

Comandos del grupo de recursos

Puede acceder a la información sobre el grupo de recursos o reiniciar un grupo con estos comandos.

scha_resourcegroup_get

Accede a la información sobre un grupo de recursos que se encuentra bajo el control de RGM. Realiza la misma tarea que la función de C scha_resourcetype_get(). Para obtener una descripción más detallada de este comando, consulte la página de comando man scha_resourcegroup_get(1HA).

scha_control

Solicita el reinicio de un grupo de recursos bajo el control de RGM o su reubicación en un nodo diferente. Realiza la misma tarea que la función de C scha_control(). Este comando se describe de forma más detallada en la página de comando man scha_control(1HA).

Comando del clúster

scha_cluster_get

Accede a la información sobre el clúster como, por ejemplo, el nombre del clúster, los nombres de los nodos, los Id., los estados y los grupos de recursos. Este comando proporciona la misma información que la función de C scha_cluster_get(). Este comando se describe de forma más detallada en la página de comando man scha_cluster_get(1HA).

Funciones de C

Las funciones de C se utilizan en implementaciones de programas C de los métodos de rellamada para los tipos de recursos que resepresentan los servicios controlados por el Gestor de grupos de recursos del clúster. Puede utilizar estas funciones para completar las siguientes tareas:


Nota –

Aunque esta sección proporciona breves descripciones de las funciones de C, las páginas de comando man 3HA ofrecen una referencia completa de estas funciones. Se asocia una página de comando man con el mismo nombre a cada función, a menos que se indique lo contrario. Consulte la página de comando man scha_calls(3HA) para obtener información sobre los argumentos de salida y los códigos de devolución de las funciones de C.


Funciones de los recursos

Estas funciones acceden a la información sobre un recurso administrado por RGM o indican el estado del recurso proporcionado por el supervisor.

scha_resource_open(), scha_resource_get () y scha_resource_close()

Estas funciones acceden a la información de un recurso administrado por RGM. La función scha_resource_open() inicializa el acceso a un recurso y devuelve un controlador para scha_resource_get(), que accede a la información del recurso. La función scha_resource_close() invalida el controlador y libera la memoria asignada para los valores de devolución de scha_resource_get ().

Se puede cambiar un recurso, mediante una reconfiguración del clúster o una acción administrativa, después de que scha_resource_open() devuelva el controlador del recurso. Como resultado, es posible que la información obtenida por scha_resource_get() mediante el controlador no sea precisa. Si se realiza una reconfiguración del clúster o una acción administrativa en un recurso, RGM devuelve el código de error scha_err_seqid a scha_resource_get() para indicar que la información sobre el recurso puede haber cambiado. No se trata de un error grave. La función devuelve información de forma satisfactoria. Puede optar por ignorar el mensaje o aceptar la información devuelta. También puede cerrar el controlador actual y abrir uno nuevo para acceder a la información sobre el recurso.

Estas tres funciones se describen en una página de comando man. Puede acceder a ella mediante cualquier de las tres funciones individuales scha_resource_open(3HA), scha_resource_get(3HA), o scha_resource_close(3HA).

scha_resource_setstatus()

Establece las propiedades Status y Status_msg de un recurso bajo el control de RGM. El supervisor del recurso utiliza esta función para indicar el estado del recurso.


Nota –

scha_resource_setstatus() es especialmente útil para un supervisor de recursos, cualquier programa puede invocarlo.


Funciones del tipo de recurso

Estas funciones acceden a la información sobre el tipo de recurso registrado con RGM.

scha_resourcetype_open(), scha_resourcetype_get () y scha_resourcetype_close()

La función scha_resourcetype_open() inicializa el acceso a un recurso y devuelve un controlador para scha_resourcetype_get(), que accede a la información del recurso. La función scha_resourcetype_close() invalida el controlador y libera la memoria asignada para los valores de devolución de scha_resourcetype_get ().

Se puede cambiar un tipo de recurso, mediante una reconfiguración del clúster o una acción administrativa, después de que scha_resourcetype_open() devuelva el controlador del tipo de recurso. Como resultado, es posible que la información obtenida por scha_resourcetype_get() mediante el controlador no sea precisa. Si se realiza una reconfiguración del clúster o una acción administrativa en un tipo de recurso, RGM devuelve el código de error scha_err_seqid a scha_resourcetype_get() para indicar que la información sobre el tipo de recurso puede haber cambiado. No se trata de un error grave. La función devuelve información de forma satisfactoria. Puede optar por ignorar el mensaje o aceptar la información devuelta. También puede cerrar el controlador actual y abrir uno nuevo para acceder a la información sobre el tipo de recurso.

Estas tres funciones se describen en una página de comando man. Puede acceder a ella mediante cualquiera de las funciones individuales scha_resourcetype_open(3HA), scha_resourcetype_get(3HA) o scha_resourcetype_close(3HA).

Funciones del grupo de recursos

Puede acceder a la información sobre un grupo de recursos o reiniciar un grupo con estas funciones.

scha_resourcegroup_open(), scha_resourcegroup_get () y scha_resourcegroup_close()

Estas funciones acceden a la información de un grupo de recursos administrado por RGM. La función scha_resourcegroup_open() inicializa el acceso a un grupo de recursos y devuelve un controlador para scha_resourcegroup_get(), que accede a la información del grupo de recursos. La función scha_resourcegroup_close() invalida el controlador y libera la memoria asignada para los valores de devolución de scha_resourcegroup_get ().

Se puede cambiar un grupo de recursos, mediante una reconfiguración del clúster o una acción administrativa, después de que scha_resourcegroup_open() devuelva el controlador del grupo. Como resultado, es posible que la información obtenida por scha_resourcegroup_get() mediante el controlador no sea precisa. Si se realiza una reconfiguración del clúster o una acción administrativa en un grupo de recursos, RGM devuelve el código de error scha_err_seqid a scha_resourcegroup_get() para indicar que la información sobre el grupo puede haber cambiado. No se trata de un error grave. La función devuelve información de forma satisfactoria. Puede optar por ignorar el mensaje o aceptar la información devuelta. También puede cerrar el controlador actual y abrir uno nuevo para acceder a la información sobre el grupo de recursos.

Estas tres funciones se describen en una página de comando man. Puede acceder a ella mediante cualquiera de las funciones individuales scha_resourcegroup_open(3HA), scha_resourcegroup_get(3HA) y scha_resourcegroup_close(3HA).

scha_control()

Solicita el reinicio de un grupo de recursos bajo el control de RGM o su reubicación en un nodo diferente. Esta función se describe de forma más detallada en la página de comando man scha_control(3HA).

Funciones del clúster

Estas funciones devuelven información sobre el clúster o acceden a ella.

scha_cluster_open(), scha_cluster_get () y scha_cluster_close()

Estas funciones acceden a la información sobre el clúster como, por ejemplo, el nombre del clúster, los nombres de los nodos, los Id., los estados y los grupos de recursos.

Se puede cambiar un clúster, mediante una reconfiguración o una acción administrativa, después de que scha_cluster_open() devuelva el controlador del clúster. Como resultado, es posible que la información obtenida por scha_cluster_get() mediante el controlador no sea precisa. Si se realiza una reconfiguración o una acción administrativa en un clúster, RGM devuelve el código de error scha_err_seqid a scha_cluster_get() para indicar que la información sobre el cluster puede haber cambiado. No se trata de un error grave. La función devuelve información de forma satisfactoria. Puede optar por ignorar el mensaje o aceptar la información devuelta. También puede cerrar el controlador actual y abrir uno nuevo para acceder a la información sobre el clúster.

Estas tres funciones se describen en una página de comando man. Puede acceder a ella mediante cualquiera de las funciones individuales scha_cluster_open(3HA), scha_cluster_get(3HA) y scha_cluster_close(3HA).

scha_cluster_getlogfacility()

Devuelve el número de la utilidad de registro del sistema que se está utilizando como registro del clúster. Utiliza el valor devuelto con la función syslog() de Solaris para registrar eventos y mensajes de estado en el registro del clúster. Esta función se describe de forma más detallada en la página de comando man scha_cluster_getlogfacility(3HA).

scha_cluster_getnodename()

Devuelve el nombre del nodo del clúster en el que se invoca la función. Esta función se describe de forma más detallada en la página de comando man scha_cluster_getnodename(3HA).

Función de utilidades

Esta función convierte un código de error en un mensaje de error.

scha_strerror()

Convierte un código de error devuelto por una de las funciones scha_ en el mensaje de error correspondiente. Utilice esta función con el comando logger para almacenar mensajes en el registro del sistema de Solaris (syslog). Esta función se describe de forma más detallada en la página de comando man scha_strerror(3HA).

Métodos de rellamada de RMAPI

Los métodos de rellamada son elementos clave proporcionados por la API para implementar un tipo de recurso. Los métodos de rellamada permiten a RGM controlar los recursos del clúster en caso de producirse un cambio en la pertenencia al clúster como, por ejemplo, el arranque o bloqueo de un nodo.


Nota –

RGM ejecuta estos métodos con permisos de rol de superusuario o equivalente, ya que los programas de cliente controlan los servicios HA del sistema del clúster. Instale y administre estos métodos con permisos y propiedad de archivos restrictivos. En concreto, otorgue estos métodos a un propietario con privilegios, como bin o root, y no conceda permisos de escritura para ellos.


Esta sección describe los argumentos y códigos de salida de los métodos de rellamada. Los métodos de rellamada se dividen en las siguientes categorías:


Nota –

Esta sección proporciona breves descripciones de los métodos de llamada, incluido el momento en que se ejecuta el método y el efecto previsto que tendrá sobre el recurso. Sin embargo, para obtener información completa sobre estos métodos, consulte la página de comando man rt_callbacks(1HA).


Argumentos para los métodos de rellamada

RGM ejecuta los métodos de rellamada de la siguiente forma:

method -R resource-name -T type-name -G group-name

El método es el nombre de ruta del programa que se registra como Start, Stop u otra rellamada. Los métodos de rellamada de un tipo de recurso se declaran en su archivo de registro.

Todos los argumentos de los métodos de rellamadas se pasan como valores marcados, de la siguiente forma:

Utilice los argumentos con funciones de acceso para recuperar información sobre el recurso.

Se llama al método Validate con argumentos adicionales que incluyen los valores de propiedades del recurso y el grupo de recursos.

La página de comando man scha_calls(3HA) contiene más información.

Códigos de salida de los métodos de rellamada

Todos los métodos de rellamada tienen los mismos códigos de salida. Estos códigos de salida se definen para especificar el efecto de la llamada al método en el estado del recurso. La página de comando man scha_calls(3HA) describe estos códigos de salida de forma más detallada. Los códigos de salida se dividen en las dos principales categorías siguientes:

RGM controla también los fallos anómalos en la ejecución de los métodos de rellamada como, por ejemplo, los tiempos de espera y los volcados del núcleo.

Las implementaciones de los métodos deben proporcionar información sobre fallos mediante syslog () en cada nodo. El resultado escrito en stdout o stderr no garantiza su envío al usuario, aunque se muestre actualmente en la consola del nodo local.

Métodos de rellamada de control e inicialización

Los métodos principales de rellamada de control e inicialización inician y detienen un recurso. Otros métodos ejecutan un código de inicialización y terminación en un recurso.

Start

RGM ejecuta este método en un nodo del clúster cuando el grupo que contiene el recurso se establece en línea en ese nodo. Este método activa el recurso en ese nodo.

El método Start no debería salir hasta que el recurso que ha activado se haya iniciado y esté disponible en el nodo local. Por tanto, antes de salir, el método Start debe interrogar al recurso para determinar si ya se ha iniciado. Además, se debería establecer un valor de tiempo de espera lo suficientemente largo para este método. Por ejemplo, determinados recursos como los daemons de base de datos, necesitan más tiempo para iniciarse, por lo que el método debería tener un valor de tiempo de espera más largo.

La forma en que RGM responde a un fallo del método Start depende de la configuración de la propiedad Failover_mode.

La propiedad Start_timeout del archivo de registro del tipo de recurso (RTR) establece el valor de tiempo de espera para el método Start del recurso.

Stop

RGM ejecuta este método necesario en un nodo del clúster cuando el grupo que contiene el recurso se establece fuera de línea en ese nodo. Este método desactiva el recurso si está activo.

El método Stop no debería salir hasta que el recurso que controla haya detenido completamente su actividad en el nodo local y se hayan cerrado todos los descriptores de archivos. De lo contrario, RGM supone que el recurso se ha detenido cuando realmente sigue activo. Esto podría provocar daños en los datos. La forma más segura de evitar daños en los datos consiste en finalizar todos los procesos en el nodo local relacionado con el recurso.

Antes de salir, el método Stop deberá interrogar al recurso para determinar si ya se ha detenido. Además, se debería establece un valor de tiempo de espera lo suficientemente largo para este método. Por ejemplo, determinados recursos como los daemons de base de datos, necesitan más tiempo para detenerse, por lo que el método debería tener un valor de tiempo de espera más largo.

La forma en que RGM responde a un fallo del método Stop depende de la configuración de la propiedad Failover_mode. Consulte Propiedades de recurso.

La propiedad Stop_timeout del archivo RTR establece el valor de tiempo de espera para el método Stop del recurso.

Init

RGM ejecuta este método opcional para realizar una inicialización única del recurso al convertirse en un recurso administrado. RGM ejecuta este método cuando el estado del grupo de recursos pasa de no administrado a administrado, o cuando se crea el recurso en un grupo que ya se está administrando. Se llama a este método en los nodos identificados por la propiedad Init_nodes.

Fini

RGM ejecuta este método opcional para el proceso de limpieza una vez que el recurso deja de administrarse. RGM ejecuta este método cuando el estado del grupo de recursos pasa a no administrado o cuando se elimina el recurso de un grupo de recursos administrado. Se llama a este método en los nodos identificados por la propiedad Init_nodes.

Boot

RGM ejecuta este método opcional, similar aInit , para inicializar el recurso en los nodos unidos al clúster después de que el grupo de recursos que contiene el recurso se haya puesto bajo la administración de RGM. RGM ejecuta este método en los nodos identificados por la propiedad Init_nodes. Se llama al método Boot cuando el nodo se une al clúster por primera vez o de nuevo como resultado de un inicio o reinicio.


Nota –

Si falla el método Init, Fini o Boot, la función syslog() generará un mensaje de error. Sin embargo, la administración del recurso por parte RGM no se verá afectada.


Métodos de asistencia administrativa

Las acciones administrativas en los recursos incluyen la configuración y modificación de las propiedades de los recursos. Los métodos de rellamada Validate y Update permiten que una implementación del tipo de recurso lleve a cabo acciones administrativas.

Validate

RGM llama a este método opcional cuando se crea un recurso y el administrador del clúster actualiza sus propiedades o el grupo de recursos que lo contiene. Se llama a este método en el conjunto de nodos del clúster definido por la propiedad Init_nodes del tipo de recurso. Se llama a Validate antes de aplicar la creación o la actualización. Un código de salida de fallo proveniente del método en cualquier nodo provoca que se cancele la creación o la actualización.

Se llama aValidate sólo cuando el administrador del clúster modifica las propiedades del recurso o el grupo de recursos y no cuando RGM establece las propiedades o el supervisor establece las propiedades Status y Status_msg del recurso.

Update

RGM ejecuta este método opcional para notificar a un recurso en ejecución que se han cambiado las propiedades. RGM ejecuta Update después de que una acción administrativa consiga configurar las propiedades de un recurso o su grupo. Este método se invoca en los nodos en los que el recurso está en línea. El método utiliza las funciones de acceso de la API para leer los valores de propiedades que pueden afectar a un recurso activo y ajustar este recurso de forma pertinente.


Nota –

Si falla el método Update, la función syslog() generará un mensaje de error. Sin embargo, la administración del recurso por parte RGM no se verá afectada.


Métodos de rellamada relacionados con la red

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 red. Los métodos de rellamada opcionales, Prenet_start y Postnet_stop, permiten que una implementación del tipo de recurso lleve a cabo acciones especiales de inicio y cierre antes y después de configuar una dirección de red relacionada o de anular su configuración.

Prenet_start

Se llama a este método opcional para realizar acciones especiales de inicio antes de configurar las direcciones de red del mismo grupo de recursos.

Postnet_stop

Se llama a este método opcional para realizar acciones especiales de cierre después de configurar las direcciones de red del mismo grupo de recursos.

Métodos de rellamada del control del supervisor

Una implementación del tipo de recurso puede incluir de forma opcional un programa que supervise el rendimiento de un recurso, informe de su estado o lleve a cabo acciones cuando el recurso falla. Los métodos Monitor_start, Monitor_stop y Monitor_check admiten la implementación de un supervisor de recursos en una implementación del tipo de recurso.

Monitor_start

Este método opcional se invoca para iniciar un supervisor para el recurso, una vez que se haya iniciado éste.

Monitor_stop

Este método opcional se invoca para detener un supervisor de un recurso antes de que éste se detenga.

Monitor_check

Se llama a este método para evaluar la fiabilidad de un nodo antes de que se cambie la ubicación del grupo de recursos a ese nodo. Debe implementar el método Monitor_check para que no entre en conflicto con la ejecución simultánea de otro método.