lunes, 17 de septiembre de 2012

Alta Disponibilidad de Sesiones con Managed Servers en Cluster en WebLogic 12c


Las sesiones que crean nuestras aplicaciones son muy importantes, perderlas no es una opción y más cuando se están manejando compras o alguna otra transacción que implique algún monto monetario. Es necesario tener alta disponibilidad de estas sesiones. Oracle WebLogic posee una característica cuyo concepto ya es muy conocido: Un Cluster.

Cada aplicación dentro de WebLogic Server está alojada en un contenedor llamado Managed Server el cual es una analogía con el ya descontinuado OC4J del antiguo OAS. Si el Managed Server se caé, la aplicación dejaria de ser accesible para nuestros clientes o usuarios, lo cual en muchas empresas no puede suceder, siempre hay aplicaciones críticas, que deben estar disponibles. En WebLogic tambien se maneja el concepto "Machine", el cual no es más que la representación lógica de un servidor físico. Un Managed Server es asignado a un "Machine" y finalmente un "Cluster" es compuesto por uno o más Managed Servers alojados en uno o más "Machines".

A continuación la definición que oracle dá a cada uno de estos conceptos:

Administration Server: The Administration Server operates as the central control entity for the configuration of the entire domain. It maintains the domain's configuration documents and distributes changes in the configuration documents to Managed Servers. You can also use the Administration Server as a central location from which to monitor all resources in a domain.


Managed Server: Managed Servers host business applications, application components, Web services, and their associated resources. To optimize performance, Managed Servers maintain a read-only copy of the domain's configuration document. When a Managed Server starts up, it connects to the domain's Administration Server to synchronize its configuration document with the document that the Administration Server maintains.


Cluster: A cluster is a collection of multiple Oracle WebLogic Server instances running simultaneously and working together to provide increased scalability and reliability.


Por lo tanto si tenemos una aplicación desplegada en nuestro cluster, automaticamente se alojará en cada uno de los Managed Servers que componen ese cluster logrando así Alta Disponibilidad, de tal manera que si un Managed Server se caé, los demás Managed Servers involucrados en el mismo cluster tomarán las sesiones y las seguiran manteniendo disponibles.


En este ejemplo crearemos un Dominio con un cluster compuesto de dos Managed Servers.

Las variables de entorno que debemos definir antes de iniciar el ejemplo son las siguientes:

JAVA_HOME= /usr/jrockit/jrockit-jdk1.6.0_33-R28.2.4-4.1.0
MW_HOME= /u02/Middleware
WLS_HOME= /u02/Middleware/wlserver_12.1/

Primero debemos ejecutar el Asistente de Configuración de Dominios, "config.sh" el cual se encuentra en el $WLS_HOME/common/bin

$cd $WLS_HOME/common/bin
$./config.sh

En la pantalla de bienvenida seleccionar la opcion "Create a new WebLogic domain".


En la pantalla de "Select Domain Source", seleccionar la opcion "Generate a domain configured automatically to support the following products". Luego dar clic en el boton Next.


Escribir el nombre del dominio, y la ruta en donde se crearán todos los archivos necesarios. Luego dar clic en el boton Next.


Especificar el usuario Administrador de nuestro dominio, su contraseña y una pequeña descripción del rol que desempeña. Luego dar clic en el boton Next.




Para nuestro ejemplo seleccionaremos la opcion "Development Mode" y Seleccionamos nuestro JDK, que en este ejemplo es Un Jrockit 1.6.0_33. Clic en el boton Next.


Seleccionamos las opciones "Administration Server" y "Managed Servers, Clusters and Machines". Pues vamos a configurar la "machine", el cluster y sus respectivos Managed Servers. Clic en el boton Next.


Ingresamos el Nombre de nuestro "Administration Server", la direccion en la que escuchará, el puerto y si usará algun puerto seguro. Para nuestro ejemplo unicamente especificamos los primeros tres campos: Name, Listen Address y Listen Port. Clic en el boton Next.


Creamos dos Managed Servers, uno con nombre "myserver_1" y el otro con nombre "myserver_2", escuchando el puerto 8001 y el 8002 respectivamente. No usan conexion segura. Clic en el boton Next.


Cree un Cluster de nombre "mycluster" con modo de mensajes "unicast". Clic en Next.




Agregar nuestros dos Managed Servers (myserver_1, myserver_2) al cluster "mycluster".  Clic en el boton Next.




Crear una "Machine" de nombre "mymachine" que escuche todas las direcciones y que use el puerto 5556. Clic en el boton Next.


Agregar todos nuestros Managed Server incluido el Administration Server a nuestra Machine "mymachine". Clic en el boton Next.


Confirmar todos los datos y finalmente clic en el boton "Create" para que la creacion de nuestro dominio sea creado con una machine, un cluster con dos managed servers y un administration server.


Cuando la creación del dominio finalice, verificar que no haya terminado con errores y finalmente clic en el boton "done".


Una vez creado el dominio, levantamos nuestro Administration Server, para realizar esto debemos  realizar lo siguiente:

$cd $MW_HOME/user_projects/domains/test_domain
$./startWebLogic.sh &


Cuando nuestro Administration Server esté arriba, debemos levantar nuestro Node Manager, el cual es el encargado de comunicarse a los Managed Server y así poderlos subir desde la consola de administración web. Para levantar el Node Manager debemos ejecutar los siguientes pasos:

$cd $MW_HOME/wlserver_12.1/server/bin
$./startNodeManager.sh &


Una vez hecho esto, entramos a la consola de administración web mediante la url:

http://hostname:7001/console

Ingresamos el usuario y la contraseña de nuestro usuario administrador del dominio, tal como se muestra en la siguiente imagen:


Despues de registrarnos correctamente, iremos al panel de “Estructura de Dominio” que queda en la parte izquierda y seguiremos los siguientes pasos:
  1. Clic en Entorno
  2. Clic en Servidores
  3. Clic en la pestaña Control
  4. Seleccionar los Managed Servers myserver_1 y myserver_2.
  5. Clic en el botón “Iniciar”.

Para poder demostrar la alta disponibilidad que brinda un cluster, usaremos una aplicación ya precreada cuyo objetivo es almacenar “productos” dentro de un “carrito” e irlo guardando en una nueva sesión. Esta aplicación ya está empaquetada como un archivo “.ear” y está situado en el directorio /home/oracle de mi maquina.


Procedemos a realizar “deploy” de esta aplicación.

Dentro de la consola de administración web seguimos los siguientes pasos:

1.  Clic en Desplieges 
2.  Clic en “Instalar”


3.  Ingresamos el directorio “/home/oracle” en el campo “ruta de acceso” y elegimos la          aplicación “shoppingcart.ear”. Luego clic en el botón Siguiente.


4.  Clic en “Instalar Despliegue como Aplicación”. Clic en el botón Siguiente.


5.  Clic en “mycluster” para que la aplicación sea desplegada en “Todos los servidores del Cluster”. Clic en el botón Siguiente.


6.  Clic en “Copiar aplicación en cada uno de mis destinos” del menú “Accesibilidad de Origen”. Clic en el botón Siguiente.


7.  Clic en “No, revisaré la configuración más tarde” del menú “Configuracion adicional”. Clic en el botón Finalizar.


8.  Activar los cambios de la sesión y luego Iniciar la aplicación “Sirviendo todas las solicitudes”.


Ahora entramos a nuestra aplicación web por medio del primer managed server (myserver_1) mediante la siguiente dirección:

http://hostname:8001/shoppingcart/

Al entrar a la aplicación empezaremos a comprar productos:



Estos productos van guardándose en nuestro “Carrito” por medio de la creación de una “sesión”.

Si entramos a ver nuestro carrito aparecen los productos que hemos agregado:


Ahora Bajamos un Managed Server “myserver_1” para simular que hubo una caída del mismo, para eso entramos nuevamente a la consola de administración Web y seguimos los siguientes pasos:
  1. Clic en Entorno
  2. Clic en Servidores
  3. Clic en la pestaña Control.
  4. Seleccionamos el Managed Server “myserver_1”.
  5. Clic en el botón “Cerrar” y luego en la opción “Forzar Cierre Ahora”.

Y como vemos el Managed Server “myserver_1” ya esta apagado:


Ahora la sesión tendría que ser retomada por el Managed Server “myserver_2”  por lo cual la sesión no se perdería y también la aplicación seguiría estando disponible para todos mis usuarios o clientes.

Volvemos a entrar a nuestra aplicación web por medio del segundo Managed Server (myserver_2):

http://hostname:8002/shoppingcart/

Vuelvo a entrar a ver los productos que mi carrito lleva recaudado y vemos que los productos que ya había comprado aún siguen en el carrito, y con esto confirmamos que la sesión no se perdió y que la aplicación sigue estando disponible gracias al Cluster de Managed Servers que hemos creado.




No hay comentarios:

Publicar un comentario

Oracle ACE Director Award - Deiby Gómez

Thanks #OracleACE Program for this awesome certificate recognizing the work I have done in the community for the last year. Looking forwa...