Clustering con GlassFish...del DAS. Un agente de nodo debe ser asociado a un dominio (que puede...

10
Clustering con GlassFish Índice 1 Conceptos básicos........................................................................................................ 2 1.1 Domain Administration Server (DAS).................................................................... 2 1.2 Perfiles..................................................................................................................... 2 1.3 Instancia de servidor................................................................................................ 3 1.4 Agente de nodo........................................................................................................ 3 1.5 Cluster...................................................................................................................... 4 1.6 Balanceo de carga.................................................................................................... 5 2 Creación de un cluster.................................................................................................. 6 2.1 Configuración del cluster......................................................................................... 7 Copyright © 2007-2008 Depto. CCIA All rights reserved.

Transcript of Clustering con GlassFish...del DAS. Un agente de nodo debe ser asociado a un dominio (que puede...

Page 1: Clustering con GlassFish...del DAS. Un agente de nodo debe ser asociado a un dominio (que puede estar en otro host) cuyo DAS será el encargado de controlarlo. Por ejemplo, si queremos

Clustering con GlassFish

Índice

1 Conceptos básicos........................................................................................................ 2

1.1 Domain Administration Server (DAS).................................................................... 2

1.2 Perfiles..................................................................................................................... 2

1.3 Instancia de servidor................................................................................................ 3

1.4 Agente de nodo........................................................................................................ 3

1.5 Cluster...................................................................................................................... 4

1.6 Balanceo de carga.................................................................................................... 5

2 Creación de un cluster.................................................................................................. 6

2.1 Configuración del cluster.........................................................................................7

Copyright © 2007-2008 Depto. CCIA All rights reserved.

Page 2: Clustering con GlassFish...del DAS. Un agente de nodo debe ser asociado a un dominio (que puede estar en otro host) cuyo DAS será el encargado de controlarlo. Por ejemplo, si queremos

1. Conceptos básicos

En la sesión pasada hemos visto el concepto de dominio. Un dominio es una unidadadministrativa en la que podemos configurar distintas instancias de servidoresgestionados por agentes de nodo. Estas instancias de servidores se pueden agrupar enclusters. Vamos a ver cómo implementa GlassFish estos conceptos.

1.1. Domain Administration Server (DAS)

Antes de hablar de servidores, nodos y clusters debemos dejar claro el concepto de DAS(Domain Administration Server). Cuando se crea un dominio se crea por defecto unainstancia de servidor en el que se van a poder desplegar aplicaciones y que va a estar enfuncionamiento para administrar los servicios del dominio. La consola de administraciónse conecta con ese servidor y le envía las peticiones del administrador. Podemosconsiderar el DAS como una instancia de servidor con capacidades adicionales deadministración (crear otras instancias de servidores, clusters, etc.).

Cada nuevo dominio creado tiene su propio servidor de administración de dominio, al quese le asigna un puerto de acceso distinto para conectarse desde la consola deadministración.

1.2. Perfiles

El servidor de aplicaciones Glassfish define tres posibles perfiles de dominio. Cada perfiltiene distintas capacidades. Por ejemplo, el perfil de desarrollo no permite definir clusters.El perfil por defecto (si no indicamos nada) es el de desarrollo.

Los perfiles son los siguientes:

• Desarrollador: Se trata del perfil con capacidades más bajas. No incluye capacidadesdefinición de múltiples instancias de servidor, agente de nodo, clustering o balanceode carga. Se utiliza habitualmente como dominio de desarrollo en el que probar laaplicación antes de desplegarla.

• Cluster: Perfil usado para crear clusters con distintos servidores y balanceo de carga.No da contiene las características de bases de datos de alta disponibilidad (HADB) ola configuración de seguridad avanzada con un keystore NSS.

• Enterprise: Perfil que contiene todas las capacidades anteriores junto con la base dedatos de alta disponibilidad (HADB) y el keystore NSS. Estas capacidades debeninstalarse aparte.

Clustering con GlassFish

2Copyright © 2007-2008 Depto. CCIA All rights reserved.

Page 3: Clustering con GlassFish...del DAS. Un agente de nodo debe ser asociado a un dominio (que puede estar en otro host) cuyo DAS será el encargado de controlarlo. Por ejemplo, si queremos

1.3. Instancia de servidor

Una instancia de servidor es una instancia de una Máquina Virtual Java que contiene unservidor de aplicaciones compatible Java EE. Un dominio puede contener más de unainstancia de servidor, cada una con un nombre único. Las instancias de servidor contienenaplicaciones, servicios y recursos Java EE.

Cada instancia de servidor (exceptuando la de administración del dominio) es gestionadapor un agente de nodo (node agent) administrado por el dominio.

La siguiente figura muestra los elementos que constituyen una instancia de servidor ycómo son gestionados por el servidor de administración:

1.4. Agente de nodo

Asociado a cada instancia de servidor distinta del DAS hay que definir un agente de nodo(node agent) que es un proceso nativo del sistema operativo que controla el ciclo de vidade la instancia. Su propósito principal es lanzar y parar la instancia de servidor a petición

Clustering con GlassFish

3Copyright © 2007-2008 Depto. CCIA All rights reserved.

Page 4: Clustering con GlassFish...del DAS. Un agente de nodo debe ser asociado a un dominio (que puede estar en otro host) cuyo DAS será el encargado de controlarlo. Por ejemplo, si queremos

del DAS.

Un agente de nodo debe ser asociado a un dominio (que puede estar en otro host) cuyoDAS será el encargado de controlarlo. Por ejemplo, si queremos que un dominio en elhost1 pueda lanzar servidores en las máquinas host2 y host3 debemos crear un agente denodo en cada una de esas máquinas y conectarlos con la primera máquina.

El comando de glassfish para crear agentes de nodo es: asadmin create-node-agent --host<host-que-controla-el-nodo> --port <puerto-host-controlador> <nombre-nodo>.

1.5. Cluster

Un cluster es una colección de instancias de servidor que comparten el mismo conjuntode aplicaciones, recursos y configuración. Un cluster facilita el balanceo de carga entrelas instancias mediante la distribución de las peticiones entre las distintas instanciascontenidas en el cluster. La otra característica de un cluster es que facilita la altadisponibilidad, ya que si cualquiera de los servidores cae, los otros pueden continuarsirviendo recursos, sesiones y peticiones.

Es posible añadir nuevas instancias de servidores a un cluster en marcha sin parar elservicio. Esto permite atender a picos de peticiones añadiendo servidores nuevos.Automáticamente las aplicaciones y recursos del cluster se instalan en el nuevo servidor.

La siguiente figura muestra cómo se relacionan el dominio, el administrador del dominio,el cluster y las instancias de servidor (cada una gestionada por un agente de nodo):

Clustering con GlassFish

4Copyright © 2007-2008 Depto. CCIA All rights reserved.

Page 5: Clustering con GlassFish...del DAS. Un agente de nodo debe ser asociado a un dominio (que puede estar en otro host) cuyo DAS será el encargado de controlarlo. Por ejemplo, si queremos

Para conseguir la alta disponibilidad, las distintas máquinas del cluster se organizan enforma de anillo, de forma que las sesiones de cada uno de los servidores se replican en elsiguiente servidor en el anillo:

1.6. Balanceo de carga

Cada instancia de servidor del cluster recibe las peticiones HTTP en su propia direcciónIP. En la sesión de ejercicios veremos que cuando detenemos una máquina, hay que hacerlas peticiones a la otra dirección del cluster. Para que esto sea transparente a los clientesde nuestra aplicación hay que incluir en nuestra arquitectura un balanceador de carga quereciba las peticiones en una dirección IP determinada y las distribuya a los distintoscomponentes del cluster. En las charlas de arquitectura de aplicaciones se han vistodistintas configuraciones posibles. Para los clientes es una única máquina la que estárespondiendo, pero realmente esa máquina se encarga del balanceo de carga y de larecuperación ante fallos de los servidores.

La siguiente imagen muestra un ejemplo de recuperación ante fallos en GlassFish. En lafigura izquierda el balanceador de carga realiza la petición a una máquina que contieneuna réplica de la sesión. En la figura derecha, la petición se realiza a una máquina que notiene replicada la sesión y ésta realiza una petición a todas las máquinas del cluster parasolicitar la sesión:

Clustering con GlassFish

5Copyright © 2007-2008 Depto. CCIA All rights reserved.

Page 6: Clustering con GlassFish...del DAS. Un agente de nodo debe ser asociado a un dominio (que puede estar en otro host) cuyo DAS será el encargado de controlarlo. Por ejemplo, si queremos

El balanceo de carga no está disponible por defecto en GlassFish. Hay que instalarlo deforma manual en un servidor web aparte (Sun Java System Webserver 6.1) (ver blog deArun Gupta).

2. Creación de un cluster

Sólo es posible crear un cluster en un dominio creado con el perfil cluster. Para crearlohay que usar la opción --profile cluster.

Si entramos a la consola, veremos que algunas opciones cambian. Por ejemplo, nosaparece Dominio donde antes teníamos Application Server. Los registros ahora se puedenvisualizar por servidor o de todo el cluster.

La información que antes teníamos del servidor, la tenemos un poco más abajo en el árbol(instancias independientes). Podemos ir viendo los datos específicos de ese servidor,como las aplicaciones que tiene desplegadas, sus recursos, su árbol JNDI, etc.

Clustering con GlassFish

6Copyright © 2007-2008 Depto. CCIA All rights reserved.

Page 7: Clustering con GlassFish...del DAS. Un agente de nodo debe ser asociado a un dominio (que puede estar en otro host) cuyo DAS será el encargado de controlarlo. Por ejemplo, si queremos

También podemos ir creando más servidores dentro del cluster. Para ello, tenemos quetener instalado el Agent Node. Es muy parecido al Node Manager de Weblogic. Paraarrancarlo, tenemos que realizar los siguientes pasos:

• Crear el Node Agent. Tenemos que tener el dominio funcionando. Ejecutamosasadmin create-node-agent --port puerto nombre-agente

El puerto es el puerto de administración del dominio, y el nombre simplemente espara diferenciarlo de otros. Tenemos que crear un Node Agent por cada máquina en elsistema. Existen otros parámetros, como el nombre del host donde escucha eldominio.

• Arrancar el Node Agent. Ejecutamosasadmin start-node-agent --user usuario nombre-agente

El usuario es el administrador del dominio. Si no da error, podemos entrar en laconsola de administración e ir a la opción Agentes de nodo y ver los que se estánejecutando.

2.1. Configuración del cluster

Lo primero que tenemos que hacer es crear el cluster. Pinchamos en la opción Tareascomunes y luego en Crear cluster nuevo.

Clustering con GlassFish

7Copyright © 2007-2008 Depto. CCIA All rights reserved.

Page 8: Clustering con GlassFish...del DAS. Un agente de nodo debe ser asociado a un dominio (que puede estar en otro host) cuyo DAS será el encargado de controlarlo. Por ejemplo, si queremos

Le damos nombre al cluster y le indicamos los servidores que formarán parte del cluster.Podemos ir creando tantos servidores como nos haga falta. También podemos indicar aqué Node agent estará asociado el servidor. Pinchamos en Aceptar y se crea el cluster.

En la siguiente figura podemos ver la información disponible para el cluster. Podemosmonitorizar las aplicaciones desplegadas en el cluster, o visualizar las instancias(servidores) que forman el cluster.

Si tenemos arrancado el Node agent podemos arrancar los servidores desde la consola deadministración. Podemos ir a cada servidor y arrancarlos por separado o bien ir al cluste y

Clustering con GlassFish

8Copyright © 2007-2008 Depto. CCIA All rights reserved.

Page 9: Clustering con GlassFish...del DAS. Un agente de nodo debe ser asociado a un dominio (que puede estar en otro host) cuyo DAS será el encargado de controlarlo. Por ejemplo, si queremos

arrancar todos los servidores a la vez.

Clustering con GlassFish

9Copyright © 2007-2008 Depto. CCIA All rights reserved.

Page 10: Clustering con GlassFish...del DAS. Un agente de nodo debe ser asociado a un dominio (que puede estar en otro host) cuyo DAS será el encargado de controlarlo. Por ejemplo, si queremos

Clustering con GlassFish

10Copyright © 2007-2008 Depto. CCIA All rights reserved.