Sun Cluster: Guía de conceptos para SO Solaris

Desarrollo de nuevos servicios de datos

Sun proporciona archivos de configuración y plantillas de métodos de gestión que permiten hacer funcionar varias aplicaciones como servicios a prueba de fallos o escalables dentro de un clúster. Si Sun no ofrece en algún momento una aplicación que se desee ejecutar como servicio a prueba de fallos o escalable, se puede usar la API DSET u otra para configurar la aplicación a fin de que se ejecute como un servicio de tipo a prueba de fallos o escalable.

Existe un conjunto de criterios para determinar si una aplicación puede convertirse en un servicio a prueba de fallos. Los criterios específicos se describen en los documentos de SunPlex que tratan de las API que se puede usar para las aplicaciones.

Aquí, presentamos algunas directrices que permitirán comprender si el servicio puede aprovechar las ventajas de la arquitectura de servicios de datos escalable. Repase el apartado Servicios de datos escalables para obtener más información sobre los servicios escalables.

Los servicios nuevos que sigan estas directrices pueden utilizar las ventajas de los servicios escalables. Si un servicio existente no sigue estas directrices exactamente, será necesario reescribir partes del mismo para que las cumpla.

Un servicio de datos escalable tiene las características siguientes. En primer lugar, un servicio así está compuesto por una o más instancias de servidor, cada una de las cuales se ejecuta en un nodo distinto del clúster. Dos o más instancias del mismo servicio no se pueden ejecutar en el mismo nodo.

En segundo lugar, si el servicio ofrece un almacenamiento de datos lógico externo, debe sincronizarse el acceso simultáneo a este almacenamiento desde varias instancias de servidores para evitar perder actualizaciones o leer los datos mientras se estén modificando. Tenga en cuenta que se llama “externo” para distinguir el almacenamiento del estado en la memoria y “lógico” porque aparece como una entidad única, aunque pueda estar replicado. Además, este almacenamiento de datos lógico tiene la propiedad de que cuando alguna instancia de servidor lo actualiza, las demás instancias pueden ver las modificaciones .

El sistema SunPlex proporciona ese almacenamiento externo a través de su sistema de archivos del clúster y las particiones a bajo nivel globales. Como ejemplo, supongamos que un servicio escribe datos nuevos a un archivo de registro cronológico externo o modifica los datos que haya. Cuando se ejecuten varias instancias de este servicio, cada una tendrá acceso a este registro cronológico externo y podrá intentar acceder al mismo simultáneamente. Cada instancia debe sincronizar su acceso a este registro o de lo contrario se interferirán entre ellas. El servicio podría usar bloqueos de archivo normales de Solaris con fcntl(2) y lockf(3C) para conseguir la sincronización deseada.

Otro ejemplo de este tipo de almacenamiento es una base de datos de componente trasero como Oracle de alta disponibilidad o Oracle Parallel Server/Real Application Clusters. Tenga en cuenta que este tipo de servidor de base de datos de componente trasero proporciona una sincronización incorporada gracias a las consultas de bases de datos o las transacciones de actualizaciones, por lo que no es necesario que las distintas instancias del servidor implementen su propia sincronización.

Un ejemplo de servicio que no es de tipo escalable en su encarnación actual es el servidor IMAP de Sun. El servicio actualiza un almacenamiento, pero es privado y cuando varias instancias de IMAP escriben en él, se sobrescriben porque las actualizaciones no están sincronizadas. El servidor IMAP debe volver a escribirse para que se sincronice el acceso simultáneo.

Finalmente, tenga en cuenta que algunas instancias pueden tener datos privados que sean contradictorios con los de otras. En tal caso, no es necesario que el servicio se preocupe de sincronizar el acceso simultáneo, ya que los datos son privados y sólo esa instancia puede manipularlos. En este caso, se ha de tener cuidado de no almacenar estos datos privados en el sistema de archivos del clúster, porque existe la posibilidad de que resulte accesible globalmente.

API de servicio de datos y de biblioteca de desarrollo de servicio de datos

El sistema SunPlex para que las aplicaciones estén altamente disponibles ofrece:

El manual Sun Cluster Data Services Planning and Administration Guide describe cómo instalar y configurar los servicios de datos que se proporcionan con el sistema SunPlex. El manual Sun Cluster Data Services Developer's Guide describe cómo instrumentar otras aplicaciones para hacerlas de alta disponibilidad bajo la estructura de Sun Cluster.

Las API de Sun Cluster permiten a los programadores de aplicaciones desarrollar supervisores de fallos y secuencias que inician y detienen instancias de servicios de datos. Con estas herramientas una aplicación puede instrumentalizarse para que sea un servicio a prueba de fallos o escalable. Además, el sistema SunPlex ofrece un servicio de datos “genérico” que se puede usar para generar rápidamente métodos de inicio y detención necesarios para la aplicación y ejecutarla como servicio a prueba de fallos o escalable.