![]() | |
Sun Java System Application Server Enterprise Edition 8.1 2005Q1 |
Configuración de alta disponibilidad mediante recuperación ante fallos
Con la configuración utilizada en el capítulo anterior, si una instancia de servidor se desactiva, los usuarios pierden el estado de la sesión. Esta sección, la segunda de dos temas avanzados, proporciona los pasos necesarios para instalar la base de datos de alta disponibilidad (HADB), crear un clúster de alta disponibilidad y probar la persistencia de una sesión HTTP.
Application Server admite la persistencia de sesión HTTP y la persistencia de Stateful Session Beans.Los procedimientos de este capítulo cubren la persistencia de la sesión HTTP.
Estos pasos asumen que ya ha realizado los pasos de las secciones anteriores de esta Guía rápida. Los procedimientos se presentan en el orden en el que se deben llevar a cabo.
Información acerca de clústeres de alta disponibilidad y HADBUn clúster de alta disponibilidad en Sun Java System Application Server Enterprise Edition integra un servicio de replicación de estado con los clústeres y el equilibrador de carga creados anteriormente, lo que permite recuperar sesiones HTTP tras un error.
Los objetos HttpSession y el estado de Stateful Session Bean se guardan en la HADB, una base de datos de alta disponibilidad para guardar el estado de la sesión. Este servicio de administración de estado escalable horizontalmente se puede gestionar independientemente del nivel del servidor de aplicaciones. Se ha diseñado para admitir hasta el 99,999% de la disponibilidad de datos y del servicio con capacidades de equilibrado de carga, recuperación tras error y recuperación de estado.
El hecho de mantener las responsabilidades de gestión separadas de Application Server reporta considerables ventajas. Las instancias de Application Server emplean sus ciclos actuando como contenedores escalables y de alto rendimiento de Java 2 Platform, Enterprise Edition (plataforma J2EE) delegando la replicación del estado a un servicio de estado de alta disponibilidad externo. Debido a esta arquitectura libre, las instancias del servidor de aplicaciones se pueden agregar o eliminar fácilmente de un clúster. El servicio de replicación de estado de HADB se puede escalar independientemente para obtener un nivel óptimo de rendimiento y disponibilidad. Cuando una instancia del servidor de aplicaciones también realiza la replicación, el rendimiento de las aplicaciones de J2EE puede resentirse y puede estar sujeto a mayores pausas de recogida de basura.
Debido a que cada nodo HADB requiere 512 MB de memoria, debe contar con un 1 GB de memoria para ejecutar dos nodos HADB en la misma máquina. Si dispone de menos memoria, configure cada nodo en una máquina distinta. La utilización de una base de datos de dos nodos en un único host no se recomienda para la implementación ya que no es una configuración que sea tolerante con los fallos.
Pasos de instalación previa de HADBEste procedimiento cubre las tareas de instalación previa más comunes. Para obtener más información acerca de otros temas de instalación previa, incluidos los requisitos previos para instalar HADB, configurar la redundancia de red y la compatibilidad del sistema de archivos, consulte la High Availability Administration Guide (Guía de administración de alta disponibilidad).
- Obtenga un acceso raíz.
- Defina las variables relacionadas con la memoria compartida.
En Solaris:
- Agregue estas líneas al archivo /etc/system (o si estas líneas se encuentran en el archivo como comentarios, haga que dejen de ser comentarios y asegúrese de que los valores coincidan con los que se proporcionan aquí):
set shmsys:shminfo_shmmax=0x80000000
set shmsys:shminfo_shmseg=20
set semsys:seminfo_semmni=16
set semsys:seminfo_semmns=128
set semsys:seminfo_semmnu=1000
Defina shminfo_shmmax como la memoria total del sistema (en notación hexadecimal el valor 0x80000000 que se muestra es para 2 GB de memoria).
Si las variables seminfo_* ya se han definido, increméntelas por las cantidades que se muestran.
- Reinicie utilizando este comando:
sync; sync; reboot
En Linux:
- Agregue estas líneas al archivo /etc/sysctl.conf (o si se encuentran en el archivo como comentarios, haga que dejen de ser comentarios). Defina el valor en la cantidad de memoria física del equipo. Especifique el valor como un número decimal de bytes. Por ejemplo, para un equipo que tenga 512 MB de memoria física:
kernel.shmmax=536870912
kernel.shmall=536870912
- Reinicie utilizando este comando:
sync; sync; reboot
- Si ha utilizado el software de JDK existente al instalar un Application Server independiente, HADB requiere Sun JDK 1.4.1_03 o superior (para obtener la última información acerca de las versiones JDK, consulte las Notas de la versión). Compruebe la versión instalada y si esta acción no se ha realizado, defina la variable de entorno JAVA_HOME como el directorio donde se haya instalado JDK.
- Si es necesario tras reiniciar el equipo, reinicie el dominio, Web Server y el agente de nodos.
Para reiniciar el dominio, utilice el comando asadmin start-domain domain1.
Para reiniciar Web Server, utilice el comando dir_instalación_Web_Server/https-nombre_host/start.
Para reiniciar el agente de nodos, utilice el comando asadmin start-node-agent nombre_host. Sustituya la variable nombre_host por el nombre del host en el que se está ejecutando Application Server.
Instalación de HADBEsta sección proporciona los pasos para instalar la base de datos de alta disponibilidad (HADB).
Nota
Si tiene previsto ejecutar la base de datos de alta disponibilidad en el equipo que contiene Application Server, y si instaló HADB en el momento de instalar Application Server, vaya a Inicio de HADB.
Puede instalar el componente HADB en el mismo equipo que el sistema Application Server si dispone de 2 GB de memoria y 1 o 2 CPU. Si este no es el caso, utilice hardware adicional. Por ejemplo:
Para instalar HADB:
Inicio de HADBEsta sección describe el cómo se inicia del agente de administración de HADB ejecutando la secuencia de comandos ma-initd. En el caso de una implementación en producción, inicie el agente de administración como un servicio para asegurar su disponibilidad. Para obtener más información, consulte la High Availability Administration Guide (Guía de administración de alta disponibilidad).
Si se inicia una base de datos con nodos HADB en varios hosts, inicie el agente de administración en cada host.
En una instalación de Java Enterprise System:
En una instalación de Application Server independiente:
Configuración de un clúster y una aplicación para conseguir una alta disponibilidad
- En la máquina en la que se está ejecutando Domain Administration Server, configure FirsCluster para utilizar HADB con este comando:
asadmin configure-ha-cluster --hosts nombre_host_hadb,nombre_host_hadb --devicesize 256 FirstCluster
Sustituya la variable nombre_host_hadb por el nombre de host de la máquina donde se va a ejecutar la HADB. Si está utilizando una única máquina, deberá indicar su nombre dos veces.
Este ejemplo simplificado ejecuta dos nodos de la HADB en la misma máquina. En las configuraciones de producción, se recomienda la utilización de más de una máquina.
Nota
Para reducir la huella de memoria de HADB con fines de demostración, ejecute el siguiente comando hadbm. Se le solicitará la contraseña de administración.
- Configure la aplicación clusterjsp para la persistencia de la sesión HTTP habilitando la alta disponibilidad:
- En la consola de administración, expanda el nodo Applications (Aplicaciones)
- Expanda Enterprise Applications (Aplicaciones de Enterprise).
- Haga clic en clusterjsp.
- En el panel derecho, en la ficha General, haga clic en la casilla de verificación Availability Enabled (Disponibilidad habilitada).
- Haga clic en “Guardar”.
La disponibilidad está habilitada en el nivel de instancia de servidor y contenedor de forma predeterminada.
Reinicio del clústerPara reiniciar el clúster:
Comprobación de la recuperación tras error de la sesión HTTPLos pasos para comprobar la recuperación tras error de los datos de la sesión son parecidos a los de la comprobación de equilibrado de carga, tal y como se describe en el tema Verificación del equilibrado de carga. En esta ocasión, los datos de la sesión se mantienen después del error. La recuperación tras error se muestra claramente al usuario porque la aplicación de ejemplo se configura para un reintento automático tras el fallo.
- Para mostrar la primera página de la aplicación clusterjsp, escriba esta dirección URL en el navegador:
http://host_local:puerto_Web_Server/clusterjsp
Sustituya la variable host_local por el nombre del sistema en el que se esté ejecutando Web Server.
Sustituya la variable puerto_Web_Server por el valor del atributo del puerto del elemento LS de dir_instalación_Web_Server/https-nombre_host/config/server.xml. Para este ejemplo, el puerto que se usa es 38000.
Aparece una página similar a la que se muestra en el apartado Verificación de la aplicación en clúster.
- Compruebe la información que se muestra acerca de la sesión y del host. Por ejemplo:
- Executed From Server: host_local
- Server Port Number: 38000
- Executed Server IP Address: 192.18.145.133
- Session ID: 41880f618e4593e14fb5d0ac434b1
- Session Created: Wed Feb 23 15:23:18 PST 2005
Acceda a los archivos de registro de acceso al servidor para determinar la instancia del servidor de aplicaciones que está sirviendo la aplicación. Los archivos de registro están ubicados en:
- Instalación de Solaris Java Enterprise System:
/var/opt/SUNWappserver/nodeagents/nombre_nodo_agente/i1/logs/access/server_access_log
/var/opt/SUNWappserver/nodeagents/nombre_nodo_agente/i2/logs/access/server_access_log- Instalación de Linux Java Enterprise System:
/var/opt/sun/appserver/nodeagents/nombre_nodo_agente/i1/logs/access/server_access_log
/var/opt/sun/appserver/nodeagents/nombre_nodo_agente/i2/logs/access/server_access_log- Instalaciones independientes de Application Server:
dir_instalación/nodeagents/nombre_nodo_agente/i1/logs/access/server_access_log
dir_instalación/nodeagents/nombre_nodo_agente/i2/logs/access/server_access_log- Detenga la instancia de Application Server que sirve la página.
- En la consola de administración, en el panel izquierdo, expanda Clusters (Clústeres).
- Haga clic en FirstCluster.
- En el panel derecho, haga clic en Instances (Instancias).
- Haga clic en la casilla de verificación situada al lado de la instancia del servidor que sirvió la solicitud y haga clic en el botón Stop (Detener).
- Vuelva a cargar la página de la aplicación de ejemplo clusterjsp.
Los datos del ID de la sesión y de atributos de la sesión se mantienen.
- Compruebe el registro de acceso de la otra instancia de Application Server y tenga en cuenta que ahora está sirviendo la solicitud.
Las funciones de recuperación de estado tras error funcionan porque la sesión HTTP se almacenó persistentemente en la HADB. Además del estado de sesión HTTP, Application Server también puede almacenar el estado de los Enterprise Beans EJB en la HADB.
LimpiezaPara limpiar el sistema, debe desinstalar Application Server realizando los pasos que figuran en Opción 1: Desinstalación, o bien eliminar el clúster de ejemplo que acaba de crear llevando a cabo el procedimiento Opción 2: Eliminación del clúster de ejemplo.
Opción 1: Desinstalación
Para llevar a cabo una desinstalación completa:
- Detenga los procesos de Application Server usando estos comandos:
asadmin stop-cluster FirstCluster
asadmin remove-ha-cluster --hosts nombre_host_hadb,nombre_host_hadb FirstCluster
Sustituya la variable nombre_host_hadb por el nombre de host de la máquina donde se va a ejecutar la HADB. Si está utilizando una única máquina, deberá indicar su nombre dos veces.
asadmin stop-node-agent hostname
asadmin stop-domain domain1
- Detenga el agente de administración de HADB utilizando uno de los siguientes métodos:
En una instalación de Java Enterprise System:
- Cambie al directorio /etc/init.d:
cd /etc/init.d
- Ejecute el siguiente comando para detener el agente:
./ma-initd stop
En una instalación de Application Server independiente:
- Acceda al directorio bin de HADB en la instalación de Application Server:
cd dir_instalación/hadb/4/bin
- Ejecute el siguiente comando para detener el agente:
./ma-initd stop
En este momento, todos los procesos relacionados con Sun Java System Application Server deben estar detenidos.
- Desinstale Application Server.
En una instalación de Java Enterprise System, ejecute var/sadm/prod/entsys/uninstall y siga los pasos indicados en el asistente para la desinstalación.
En una instalación de Application Server independiente, ejecute dir_instalación/uninstall y siga los pasos indicados en el asistente para la desinstalación.
- Si ha creado una nueva instancia de Web Server para este ejercicio, elimínela:
- Para desinstalar Web Server, ejecute el programa de desinstalación desde dir_instalación_Web_Server.
Opción 2: Eliminación del clúster de ejemplo
Para eliminar sólo FirstCluster (el clúster de ejemplo de alta disponibilidad) y la aplicación de ejemplo usada durante este ejercicio:
- Detenga los procesos de Application Server y limpie la configuración:
asadmin stop-cluster FirstCluster
asadmin remove-ha-cluster --hosts nombre_host_hadb,nombre_host_hadb FirstCluster
Sustituya la variable nombre_host_hadb por el nombre de host de la máquina donde se va a ejecutar la HADB. Si está utilizando una única máquina, deberá indicar su nombre dos veces.
asadmin disable-http-lb-server FirstCluster
asadmin delete-http-lb-ref --config MyLbConfig FirstCluster
asadmin delete-http-lb-config MyLbConfig
asadmin delete-instance i1
asadmin delete-instance i2
asadmin delete-cluster FirstCluster
asadmin undeploy clusterjsp
- Detenga la instancia de Web Server que actúa como equilibrador de carga:
dir_instalación_Web_Server/https-nombre_host/stop
- Cambie el nombre del archivo loadbalancer.xml ubicado en dir_instalación_Web_Server/https-nombre_host/config a loadbalancer.xml.sav
- Detenga el agente de administración de HADB utilizando uno de los siguientes métodos:
En una instalación de Java Enterprise System:
- Cambie al directorio /etc/init.d:
cd /etc/init.d
- Ejecute el siguiente comando para detener el agente:
./ma-initd stop
En una instalación de Application Server independiente:
- Acceda al directorio bin de HADB en la instalación de Application Server:
cd dir_instalación/hadb/4/bin
- Ejecute el siguiente comando para detener el agente:
./ma-initd stop
En esta sección se ha instalado, configurado e iniciado la HADB y se ha configurado un clúster y una aplicación para utilizar la alta disponibilidad. También ha realizado la limpieza de forma que el equipo esté preparado para otro trabajo.
¡Enhorabuena! Ha finalizado la Guía de inicio rápido de Application Server.
Más informaciónHay disponibles más recursos para aprender y utilizar el software Application Server. Por ejemplo: