Message Queue 4.1 incorpora los clúster de agente de alta disponibilidad (disponibilidad de datos y servicios), compatibilidad con JAAS y otras funciones menores. Esta sección describe estas funciones y proporciona más referencias que pueden serle útiles.
Message Queue 4.1 presenta los clústeres de alta disponibilidad, que proporcionan disponibilidad de los datos y de servicio. Si un cliente pierde su conexión con un agente de alta disponibilidad, se le vuelve a conectar automáticamente con otro agente de un clúster. El agente que proporciona la nueva conexión se hace cargo de los datos persistentes y del estado del agente desconectado y continúa proporcionando un servicio ininterrumpido a los clientes de este agente. Puede ejecutar los agentes de alta disponibilidad en una conexión segura.
Los agentes de alta disponibilidad requieren el uso de una base de datos también de alta disponibilidad (HADB) Si usted no dispone de esta base de datos o si la disponibilidad de los datos no es importante para usted, puede continuar utilizando clústeres convencionales, que ofrecen una reconexión automática y disponibilidad de servicio.
Configurar agentes de alta disponibilidad es un proceso sencillo: puede especificar los siguientes tipos de propiedades para cada agente del clúster.
Propiedades de pertenencia a clúster, que sirven para especificar si el agente forma parte de un clúster de alta disponibilidad, el ID del clúster y del agente.
Propiedades de la base de datos de alta disponibilidad (HADB), que sirven para especificar el modelo de los mensajes persistentes (JDBC), el nombre del fabricante HADB y las propiedades de configuración específicas del fabricante de la base de datos.
Propiedades de detección de fallos y toma de control, que sirven para especificar cómo deberían detectarse y gestionarse los fallos de los agentes.
Para usar esta función, debe hacer lo siguiente:
Instalar una base de datos de alta disponibilidad.
Instalar el archivo .jar del controlador de JDBC.
Crear el esquema de la base de datos para el almacén persistente de alta disponibilidad.
Configurar aquellas propiedades que estén relacionadas con la alta disponibilidad de cada agente del clúster.
Iniciar cada uno de los agentes del clúster.
Si desea consultar una explicación del concepto de alta disponibilidad y una comparación con los clústeres convencionales, consulte el Capítulo 4, Broker Clusters de Sun Java System Message Queue 4.1 Technical Overview. Si desea información sobre procedimientos y referencias de la alta disponibilidad, consulte el Capítulo 8, Broker Clusters de Sun Java System Message Queue 4.1 Administration Guide y Cluster Configuration Properties de Sun Java System Message Queue 4.1 Administration Guide.
Si usa una base de datos HADB con Message Queue versión 4.0 y quiere utilizar un clúster de alta disponibilidad, puede usar la utilidad dbmgr para actualizarse a un almacén compartido de HADB. Para más información, consulte Clústeres de agente.
Además de los mecanismos de autenticación basados en archivos y en LDAP que integra, Message Queue también es compatible con Java Authentication y Authorization Service (JAAS), que le permite conectar distintos servicios al agente para autenticar los clientes de Message Queue. Esta sección describe la información que el agente pone a disposición de un servicio de autenticación compatible con JAAS, y explica cómo configurar el agente para utilizar este servicio.
No describiremos el JAAS API, por exceder el propósito de este documento. Consulte las siguientes fuentes si necesita más información.
Para conseguir toda la información sobre el JAAS API, consulte la Guía de referencia de Java Authentication and Authorization Service (JAAS).
http://java.sun.com/j2se/1.5.0/docs/guide/security/jaas/JAASRefGuide.html
Para conseguir información sobre cómo escribir un LoginModule, consulte la Guía del desarrollador del LoginModule de Java Authentication and Authorization Service (JAAS).
http://java.sun.com/j2se/1.5.0/docs/guide/security/jaas/JAASLMDevGuide.html
El JAAS API es un API nuclear de J2SE y por ello forma parte del entorno de tiempo de ejecución de Message Queue. JAAS define la capa de abstracción entre una aplicación y un mecanismo de autenticación, permitiendo conectar el mecanismo deseado sin cambiar el código de aplicación. En el caso del servicio Message Queue, la capa de abstracción se encuentra entre el agente (aplicación) y un proveedor de autenticación. Configurando unas cuantas propiedades de agente, es posible conectar cualquier servicio de autenticación compatible con JAAS y actualizarlo sin interrumpir ni alterar el código del agente.
Si utiliza la autenticación basada en JAAS, puede utilizar clientes JMX para gestionar el agente, pero deberá configurar manualmente la compatibilidad con JAAS (configurando las propiedades de agente relacionadas con JAAS) antes de iniciar el agente. No es posible utilizar el JMX API para cambiar estas propiedades.
La Figura 1–1 muestra los elementos básicos de JAAS: un cliente JAAS, un servicio de autenticación compatible con JAAS y un archivo de configuración de JAAS.
El cliente JAAS es una aplicación que busca realizar la autenticación con un servicio compatible con JAAS. Se comunica con este servicio mediante un LoginModule y se encarga de proporcionar un controlador de devolución de llamadas que puede utilizar el LoginModule para obtener el nombre del usuario, su contraseña y otra información importante.
El servicio de autenticación compatible con JAAS consiste en uno o varios LoginModule y en procesos lógicos que realizan la autenticación necesaria. El LoginModule puede incluir la lógica de autenticación o puede utilizar un protocolo privado o API para comunicarse con un módulo que proporcione el proceso lógico.
El archivo de configuración de JAAS es un archivo de texto que utiliza el cliente JAAS para encontrar los LoginModules necesarios para comunicarse con el servicio compatible con JAAS.
La siguiente sección explica cómo el servicio Message Queue utiliza estos elementos para proporcionar la autenticación compatible con JAAS.
La siguiente figura muestra cómo el agente de Message Queue utiliza JAAS. Muestra una implementación más compleja del modelo JAAS mostrado en la figura anterior.
Tal y como se indicaba en el caso más simple, la capa del servicio de autenticación es independiente del agente. El servicio de autenticación consiste en uno o más módulos de registro (LoginModule) y en los módulos de autenticación adicionales que sean necesarios. Los módulos de registro se ejecutan en la misma máquina virtual Java que el agente. El agente de Message Queue se representa en el módulo de registro como un LogInContext y se comunica con él mediante un CallBackHandler que forma parte del código de tiempo de ejecución del agente.
El servicio de autenticación también proporciona un archivo de configuración JAAS que contiene entradas a los módulos de registro. El archivo de autenticación especifica el orden en que deben utilizarse los módulos y algunas condiciones para su uso. Al iniciarse el agente, JAAS localiza el archivo de configuración mediante la propiedad del sistema Java java.security.auth.login.config o mediante el archivo de propiedades de seguridad de Java. Después selecciona una entrada en el archivo de configuración JAAS, según el valor de la propiedad del agente imq.user_repository.jaas.name . Esa entrada especifica cuáles serán los módulos de registro que se utilizarán para la autenticación. Como muestra la figura, el agente puede utilizar más de un módulo de registro. (La relación entre el archivo de configuración, el módulo de registro y el agente se muestra en la Figura 1–3.)
El hecho de que el agente utilice un servicio de autenticación complemento de JAAS permanece totalmente transparente para el cliente de Message Queue. El cliente continúa conectándose al agente como lo hacía antes, mediante un nombre de usuario y una contraseña. El agente, por su parte, utiliza un controlador de devolución de llamadas para pasar esta información al servicio de autenticación, el cual utiliza esta información para autenticar al usuario y devolver los resultados. Si la autenticación tiene éxito, el agente permitirá la conexión; pero si falla, el tiempo de ejecución del cliente devolverá una excepción de seguridad de JMS que el cliente deberá solucionar.
Una vez autenticado el cliente de Message Queue (y siempre que haya que hacer más tareas de autorización), al agente procede normalmente: consulta el archivo de control de acceso para determinar si el cliente autenticado tiene autorización para realizar las acciones a su cargo: acceder a un destino, consumir un mensaje, examinar una cola, etc.
Para configurar la autenticación compatible con JAAS, es necesario establecer las propiedades del agente y del sistema para seleccionar este tipo de autenticación, especificar la ubicación del archivo de configuración y especificar las entradas a los módulos de registro que van a utilizarse.
Esta sección ilustra la relación existente entre el cliente JAAS, los módulos de registro y el archivo de configuración de JAAS y describe el proceso necesario para configurar la autenticación compatible con JAAS. La siguiente figura muestra la relación entre el archivo de configuracion, el módulo de registro y el agente.
Como muestra la figura, el archivo de configuración de JAAS, MyJAASCFile.config contiene referencias a varios módulos de registro, agrupados en un punto de entrada. Para localizar el archivo de configuración, el agente consulta la propiedad de sistema de Java java.security.auth.login.config o el archivo de propiedades de seguridad de Java. Para determinar los módulos de registro que van a utilizarse, se consulta la propiedad del agente imq.user_repository.jaas.name , que especifica la entrada deseada en el archivo de configuración. Las clases de esos módulos se encuentran en el directorio lib/ext.
Para configurar la compatibilidad de JAAS para Message Queue, debe seguir estos pasos: (En un entorno de desarrollo, el encargado de completar estos pasos sería el desarrollador. En un entorno de producción, el administrador podría encargarse de algunas de estas tareas.)
Cree una o varias clases del módulo de registro que implementen el servicio de autenticación. A continuación, se enumeran los tipos de devoluciones de llamada JAAS que admite el agente.
El agente utiliza esta devolución de llamada para pasar al servicio de autenticación la configuración local en que el agente se está ejecutando. Este valor puede utilizarse para la localización.
El agente utiliza esta devolución de llamada para pasar al servicio de autenticación el nombre del usuario especificado por el cliente de Message Queue cuando se solicita la conexión.
El agente utiliza esta devolución de llamada para especificar el valor de imq.authentication.type al servicio de autenticación cuando el TextInputCallback.getPrompt() sea imq.authentication.type. En este momento, el único valor posible para este campo es basic, que indica que la codificación de contraseña es Base-64.
El agente utiliza esta devolución de llamada para pasar al servicio de autenticación la contraseña especificada por el cliente de Message Queue cuando se solicita la conexión.
El agente utiliza esta devolución de llamada para proporcionar acceso al servicio de autenticación registrando la salida del texto en el archivo de registro del agente. Los tipos de mensajes de devolución de llamada ERROR, INFORMATION, WARNING se asignan a los niveles de registro del agente ERROR, INFO, y WARNING respectivamente.
Cree un archivo de configuración JAAS con entradas que hagan referencia a las clases del módulo de registro y especifique la ubicación de este archivo en el administrador de Message Queue. (El archivo puede localizarse de forma remota, y es posible especificar su ubicación con una URL.)
Tome nota del nombre de la entrada (que hace referencia a las clases de implementación de registro) en el archivo de configuración JAAS.
Archive las clases que implementan los módulos de registro en un archivo jar y coloque este archivo en el directorio de Message Queue lib/ext.
Configure las propiedades de agente relacionadas con la compatibilidad con JAAS. Éstas se describen en la Tabla 1–2.
Configure la siguiente propiedad del sistema para especificar la ubicación del archivo de configuración JAAS.
java.security.auth.login.config= JAAS_Config_File_Location
Por ejemplo, puede especificar el archivo de configuración al iniciar el agente.
imqbrokerd -Djava.security.auth.login.config=JAAS_Config_File_Location
Hay otras formas de especificar la ubicación del archivo de configuración JAAS. Para más información, consulte:
http://java.sun.com/j2se/1.5.0/docs/guide/security/jaas/tutorials/LoginConfigFile.html
La siguiente tabla enumera las propiedades de agente necesarias para configurar la compatibilidad con JAAS.
Tabla 1–2 Propiedades de agente para la compatibilidad con JAAS
Propiedad |
Descripción |
---|---|
imq.authentication.type |
Establézcala en basic para indicar que la codificación de contraseña es Base-64. Este es el único valor que se permite para la autenticación JAAS. |
imq.authentication.basic.user_repository |
Establézcala enjaas para especificar la autenticación JAAS. |
imq.accesscontrol.type |
Establézcala en file. |
imq.user_repository.jaas.name |
Indique el nombre de la entrada deseada (en el archivo de configuración JAAS) que haga referencia a los módulos de acceso que desea utilizar como mecanismo autenticación. Es el nombre que anotó en el paso 3. |
imq.user_repository.jaas.userPrincipalClass |
Esta propiedad, que utiliza el control de acceso de Message Queue, especifica la clase de implementación java.security.Principal de los módulos de acceso que el agente utiliza para extraer el nombre principal que representa la entidad del usuario en el archivo de control de acceso de Message Queue. Si no se especifica, se utilizará en su lugar el nombre de usuario que facilitó el cliente de Message Queue al solicitar la conexión. |
imq.user_repository.jaas.groupPrincipalClass |
Esta propiedad, que utiliza el control de acceso de Message Queue, especifica la clase de implementación java.security.Principal de los módulos de acceso que el agente utiliza para extraer el nombre principal que representa la entidad del grupo en el archivo de control de acceso de Message Queue. Si no se especifica, se pasarán por alto las reglas de grupo que pudiera haber en el archivo de control de acceso de Message Queue. |
La versión 4.1 de Message Queue ha cambiado el almacén JDBC para admitir la alta disponibilidad. Por esta razón, la versión de almacén de JDBC se ha aumentado a la 410. Las versiones de almacén JDBC 350, 370 y 400 cambiarán automáticamente al formato de la versión 410.
Tenga en cuenta que la versión del almacén persistente basado en archivos sigue siendo la 370 porque no se ha efectuado ningún cambio en él.
La propiedad IMQ_DEFAULT_EXT_JARS se ha añadido al archivo imqenv.conf. Puede configurar esta propiedad para especificar el nombre de las rutas de los archivos .jar que deben incluirse en CLASSPATH al iniciarse el agente. Si utiliza esta propiedad para especificar la ubicación de los archivos .jar, ya no necesitará copiar estos archivos en el directorio lib/ext. Los jars externos pueden hacer referencia a los controladores de JDBC o a módulos de registro JAAS. El siguiente comando de ejemplo especifica la ubicación de los controladores jdbc.
IMQ_DEFAULT_EXT_JARS=/opt/SUNWhadb4/lib/hadbjdbc4.jar:/opt/SUNWjavadb/derby.jar
Message Queue es es compatible con Sun Java Enterprise System (JES) Monitoring Framework, que permite controlar los componentes de Java Enterprise System con una interfaz gráfica normal. La interfaz se implementa mediante una consola basada en web llamada "Sun Java System Monitoring Console". Si ejecuta Message Queue junto con otros componentes de JES, le resultará más cómodo gestionar todos los componentes con una única interfaz.
La estructura de control JES define el modelo de datos común (CMM) que utilizarán todos los productos de componentes JES. Este modelo ofrece una vista centralizada y uniforme de todos los componentes JES. Message Queue expone los siguientes objetos a la estructura de supervisión JES:
el producto instalado
el nombre de la instancia del agente
el asignador de puertos del agente
cada uno de los servicios de conexión
cada uno de los destinos físicos
el almacén persistente
el depósito de usuarios
Cada uno de estos objetos se asigna a un objeto CMM cuyos atributos pueden controlarse desde la consola de supervisión de JES. En el tiempo de ejecución, los administradores pueden utilizar la consola para ver las estadísticas de rendimiento, crear reglas de supervisión automáticas y atender alarmas. Si necesita información más detallada sobre la asignación de objetos de Message Queue a objetos CMM, consulte la Guía de supervisión de Sun Java Enterprise System.
Para activar la supervisión JES, siga estos pasos:
Instale y configure todos los componentes de su implementación (Message Queue y otros componentes) siguiendo las instrucciones de la Guía de instalación de Sun Java Enterprise System.
Active y configure Monitoring Framework en todos los componentes supervisados, tal y como se describe en la Guía de supervisión de Sun Java Enterprise System.
Instale la consola de supervisión en un host aparte, inicie el agente maestro y después inicie el servidor web, tal y como se describe en la Guía de supervisión de Sun Java Enterprise System.
Si utiliza JES Monitoring Framework, el rendimiento del agente no se verá afectado ya que todo el trabajo de recopilación de datos corre a cargo de la estructura de supervisión, que extrae los datos de la infraestructura actual de gestión de datos del agente.
Anteriormente, los administradores sólo podían deshacer transacciones que estuvieran en estado PREPARED Es decir, si una sesión que formara parte de una transacción distribuida no terminaba correctamente, la transacción permanecía en un estado que era imposible reorganizar para el administrador del agente. En la versión 4.1 de Message Queue, es posible utilizar la utilidad imqcmd para reorganizar (deshacer) las transacciones que se encuentren en los siguientes estados: STARTED, FAILED, INCOMPLETE, COMPLETE, PREPARED.
Para ayudarle a determinar si es posible deshacer una transacción particular (sobre todo si no se encuentra en estado PREPARED), la utilidad imqcmd proporciona datos adicionales como parte de la salida imqcmd query txn: proporciona el ID de la conexión que inició la transacción y especifica la hora en la que se creó la transacción. Basándose en esta información, el administrador puede decidir si es preciso deshacer o no la transacción. Por lo general, el administrador debe evitar deshacer una transacción prematuramente.
Los clientes C pueden utilizar la propiedad de conexión MQ_SERVICE_PORT_PROPERTY para especificar el puerto fijo al que conectarse. Esto puede ser útil si está intentando atravesar un cortafuegos o si necesita evitar el servicio de asignación de puertos del agente (que asigna los puertos dinámicamente).
Recuerde que también debe configurar el puerto de servicio JMS en el lado del agente. Por ejemplo, si desea conectar a su cliente con el puerto 1756 mediante ssljms, tendría que hacer lo siguiente:
En el lado del cliente: Establezca la propiedad MQ_SERVICE_PORT_PROPERTY en 1756 y MQ_CONNECTION_TYPE_PROPERTY en SSL.
En el lado del agente: Establezca la propiedad imq.serviceNameType.protocol .port en 1756 de la siguiente manera.
imq.ssljms.ssl.port=1756
La propiedad de conexión MQ_SERVICE_PORT_PROPERTY se introdujo por pimera vez en la versión 3.7, actualización 2 de Message Queue.