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

Capítulo 6 Biblioteca de desarrollo del servicio de datos

Este capítulo proporciona información general sobre las interfaces de programación de aplicaciones que forman la Biblioteca de desarrollo del servicio de datos (DSDL). Ésta se implementa en la biblioteca libdsdev.so y está incluida en el paquete de Sun Cluster.

En este capítulo se tratan los temas siguientes:

Información general sobre DSDL

La API de DSDL se encuentra en una capa superior a la Interfaz de programación de aplicación de Administración de recursos (RMAPI). Por lo tanto, la API de DSDL no reemplaza a la RMAPI sino que encapsula y amplía su funcionalidad. DSDL simplifica el desarrollo de servicios de datos aportando soluciones predeterminadas a cuestiones concretas de integración de Sun Cluster. Por consiguiente, puede dedicar la mayor parte del tiempo de desarrollo a los problemas de alta disponibilidad y escalabilidad intrínsecos de la aplicación, y dedicar menos tiempo a la integración de los procesos de supervisión, apagado e inicio de la aplicación en Sun Cluster.

Administración de las propiedades de configuración

Todos los métodos de rellamada requieren acceso a las propiedades de configuración: DSDL admite el acceso a las propiedades de las siguientes formas:

La función scds_initialize(), que se debe invocar al principio de todos los métodos de rellamada:


Nota –

Si se utiliza el método Validate, scds_initialize () analiza los valores de propiedades pasados a la línea de comandos sin necesidad de escribir una función de análisis para Validate.


DSDL proporciona conjuntos de funciones para recuperar las propiedades de tipos de recursos, recursos y grupos de recursos, así como las propiedades de extensión utilizadas con mayor frecuencia. Estas funciones normalizan el acceso a las propiedades mediante el uso de las siguientes convenciones:

Inicio y parada de un servicio de datos

El método Start realiza las acciones necesarias para iniciar un servicio de datos en un nodo del clúster. Normalmente, este proceso requiere la recuperación de las propiedades de recursos, la búsqueda de los archivos ejecutables y de configuración específicos de la aplicación y el inicio de la aplicación con los argumentos de línea de comandos correctos.

La función scds_initialize()recupera la configuración de recursos. El método Start puede utilizar funciones prácticas para recuperar los valores de propiedades específicas como, por ejemplo, Confdir_list, que identifican los directorios y archivos necesarios para iniciar la aplicación.

El método Start puede llamar a scds_pmf_start() para iniciar la aplicación bajo el control de la Utilidad de supervisor de procesos (PMF, Process Monitor Facility). Esta utilidad permite especificar el nivel de supervisión que se aplicará al proceso y proporciona la capacidad de reiniciar dicho proceso en caso de fallo. Consulte Método xfnts_start para obtener un ejemplo del método Start implementado con DSDL.

El método Stop debe ser idempotente para que pueda salir de forma satisfactoria, aunque se haya llamado en el nodo cuando no se está ejecutando la aplicación. Si falla el método Stop, el recurso que se va a detener se establece en el estado STOP_FAILED, lo que puede provocar que el clúster se reinicie por completo.

Para evitar que el recurso presente el estado STOP_FAILED, el método Stop debe hacer todo lo posible para detener el recurso. La función scds_pmf_stop() permite detener el recurso de forma escalonada. La primera función intenta detener el recurso mediante la señal SIGTERM. Si ésta falla, se utiliza la señal SIGKILL. Consulte la página de comando man scds_pmf_stop(3HA) para obtener más información.

Implementación de un supervisor de fallos

DSDL asume la parte más compleja del proceso de implementación de un supervisor de fallos al proporcionar un modelo predeterminado. El método Monitor_start inicia el supervisor de fallos bajo el control de PMF al iniciarse el recurso en el nodo. El supervisor de fallos se ejecuta en un bucle mientras el recurso se está ejecutando en el nodo. La lógica de alto nivel del supervisor de fallos de DSDL es la siguiente:

Acceso a la información de dirección de la red

DSDL proporciona funciones prácticas para devolver información de dirección de la red de recursos y grupos de recursos. Por ejemplo, scds_get_netaddr_list() recupera los recursos de dirección de red utilizados por un recurso, permitiendo de este modo que el supervisor de fallos analice la aplicación.

DSDL proporciona también un conjunto de funciones para la supervisión basada en TCP. Generalmente, estas funciones establecen y finalizan una conexión de socket simple a un servicio, y leen y escriben datos en el servicio. El resultado del análisis se puede enviar a la función scds_fm_action() de DSDL para determinar qué acción se debe realizar.

Consulte Método xfnts_validate para obtener un ejemplo de la supervisión de fallos basada en TCP.

Depuración de la implementación del tipo de recurso

DSDL incluye funciones integradas para ayudarle a depurar el servicio de datos.

La utilidad scds_syslog_debug() de DSDL proporciona un marco básico para agregar instrucciones de depuración a la implementación del tipo de recurso. El nivel de depuración (un número entre 1 y 9) puede establecerse dinámicamente para cada implementación del tipo de recurso en cada nodo del clúster. Todos los métodos de rellamada del tipo de recurso leen el archivo denominado /var/cluster/rgm/rt/rtname/loglevel, que contiene un número entero entre 1 y 9. La función scds_initialize() de DSDL lee este archivo y establece de forma interna el nivel de depuración al nivel especificado. El nivel de depuración 0 predeterminado especifica que el servicio de datos no debe registrar mensajes de depuración.

La función scds_syslog_debug() usa la utilidad devuelta por la función scha_cluster_getlogfacility() con una prioridad de LOG_DEBUG. Puede configurar estos mensajes de depuración en el archivo /etc/syslog.conf.

Puede convertir algunos de los mensajes de depuración en mensajes informativos para una operación habitual del tipo de recurso (quizás con prioridad de LOG_INFO) mediante la función scds_syslog(). Tenga en cuenta que la aplicación DSDL de ejemplo descrita en el Capítulo 8, Ejemplo de implementación del tipo de recurso con DSDL utiliza libremente las funciones scds_syslog_debug() y scds_syslog().

Habilitación de sistemas de archivos locales de alta disponibilidad

Puede utilizar el tipo de recurso HAStoragePlus para conseguir que un sistema de archivos local proporcione alta disponibilidad en un entorno de Sun Cluster. Las particiones del sistema de archivos local deben ubicarse en grupos globales de disco. Deben habilitarse las conmutaciones de afinidad y configurarse Sun Cluster para una recuperación ante fallos. Esta configuración permite al administrador del clúster conseguir que se pueda acceder a cualquier sistema de archivos ubicado en discos de varios host desde cualquier host conectado directamente a estos discos. Se recomienda la utilización de un sistema de archivos local de alta disponibilidad para algunos servicios de datos de E/S intensiva. Enabling Highly Available Local File Systems de Sun Cluster Data Services Planning and Administration Guide for Solaris OS contiene información sobre la configuración del tipo de recurso HAStoragePlus resource type.