Tomcat es un servidor web con soporte de servlets y JavaServer Pages (JSP) de Sun Microsystems. Tomcat puede funcionar como servidor web por sí mismo, es usado como servidor web autónomo en entornos con alto nivel de tráfico y alta disponibilidad.
Dado que Tomcat fue escrito en Java, funciona en cualquier sistema operativo que disponga de la máquina virtual Java.
Apache
Tomcat funciona como un contenedor servlets (programa que se
ejecuta en un servidor) desarrollado bajo el proyecto Jakarta en la
Apache Software Fundation.
Mediante
estos servlets o programas podemos realizar configuraciones de alta
disponibilidad y balanceo de carga. Tomcat se suele instalar en
equipos externos al servidor web apache (balanceador de carga), y se
pueden configurar para recibir peticiones las dos al mismo tiempo o
como servidor secundario por si falla el primer tomcat.
Los pasos para configurar Apache + Tomcat 7 en Ubuntu 11.10 para conseguir que Apache realice balanceo de carga entre los distintos Tomcat son los siguientes:
- Instalamos apache:$ sudo apt-get install apache2
- Instalamos la versión libre de Java JRE:$ sudo apt-get install openjdk-7-jre
- Instalámos el módulo JK (mod_jk) de apache:$ sudo apt-get install libapache2-mod-jk
- Editamos el fichero "workers.properties" para configurar nuestros Tomcat:sudo gedit /etc/libapache2-mod-jk/workers.propertiesEl fichero debe contener lo siguiente:
workers.tomcat_home=/server/tomcat7 workers.java_home=/usr/lib/jvm/java-6-sun-1.6.0.26 ps=/ worker.list=balancer worker.worker1.port=8009 worker.worker1.host=192.168.1.250 worker.worker1.type=ajp13 worker.worker1.lbfactor=1 worker.worker2.port=8009 worker.worker2.host=192.168.1.251 worker.worker2.type=ajp13 worker.worker2.lbfactor=1 worker.balancer.type=lb worker.balancer.balance_workers=worker1,worker2 worker.balancer.method=B
En la línea 2 debemos especificar la ruta del directorio Java JRE.
En las líneas 6 y 11 se especifica el puerto de escucha del conector AJP13 (Por defécto 8009).
En las líneas 7 y 12 se especifica la dirección IP de los servidores Tomcat.
Por último en la línea 17 se especifican los nombres que se les asignarán posteriormente a los Tomcat (en este caso worker1 y worker2).
- El último paso es mapear las urls que queremos que se redirijan a Tomcat para esto necesitamos editar el fichero del Virtual Host que tengamos habilitado.
En este caso como queremos que todas las peticiones se dirigan a los distintos tomat, y no al server apache, especificamos lo siguiente en el fichero /etc/apache2/sites-enabled/000-default entre las etiquetas VirtualHost *:80y VirtualHost JkMount /* balancerEn el caso de que necesitemos usar tomcat para cargar un portal en concreto o aplicación web, y que las demas peticiones las resuelva apache, el código seria el siguiente (que no es el caso del ejemplo):JkMount /joomlaDe esta manera cualquier petición dirigida hacia la dirección http://IP/joomla la resolverán los tomcat, el resto apache./* balancer
Antes de reiniciar apache para aplicar los cambios, ejecutamos el siguiente comando en una terminal:sudo cp /etc/apache2/mods-available/jk.* /etc/apache2/mods-enabled/Con esto ya tenemos apache y el módulo mod_jk preparado para el balanceo de carga web, ahora vamos a ver como instalar los Tomcat.
sudo /etc/init.d/apache2 restart - Nos descargamos la última versión de Tomcat (7 actualmente) mediante el siguiente comando (o desde la url) y la movemos a la ubicación /server/tomcat7 (por ejemplo)
wget http://apache.rediris.es/tomcat/tomcat-7/v7.0.27/bin/apache-tomcat-7.0.27.tar.gz
tar xvzf apache-tomcat-7.0.27.tar.gz
mkdir /server/
mv apache-tomcat-7.0.27.tar.gz /server/tomcat7
Para iniciar tomcat /server/tomcat7/bin/startup.sh
Para parar tomcat /server/tomcat7/bin/shutdown.sh
El directorio de publicación de los Tomcat es /server/tomcat7/webapps/ROOT/ - Por último sólo nos queda configurar el parámetro "jvm" del fichero "server.xml" de tomcat, aunque tambien deberíamos establecer los usuarios en el fichero "tomcat-users.xml" :
sudo gedit /server/tomcat7/conf/server.xml
Tenemos que buscar la línea (que estará comentada) con el parámetro jvmroute="" y descomentarla para que quede así:
En este caso es el "worker1", en el segundo tomcat (que estará en otro equipo) habrá que configurarlo como "worker2". (El segundo tomcat, worker2, podría estar instalado sobre cualquier SO)
Con esta configuración ya tenemos funcionando nuestro apache balanceando la carga entre dos Tomcat en distintos equipos, con lo que conseguimos alta disponibilidad, además de mayor seguridad, puesto que si uno de los servidores web (Tomcat) cae, las cargas se dirigirán automáticamente al Tomcat activo.
Nota: Los directorios de publicación de los tomcat (webapps/ROOT), deben contener el mismo contenido, para así al navegar obtener el mismo resultado sin importar que las peticiones HTTP vengan de un servidor web u otro.
Nota2: En todos los equipos que instalemos Tomcat, debemos de instalar la versión de Java JRE.
Página por defecto (index.jsp) |
Buen día, el tutorial esta bien explicado, aunque el punto 5 no le entendi bien esos archivos tienen varias propuedades y no especificaste donde escribirlo, si pudieras ejemplificar como esta tu arquitectura también sería de gran ayuda.
ResponderEliminarEl parámetro JkMount /* se especifica entre las etiquetas VirtualHost *:80 y VirtualHost
EliminarDe todos modos he modificado el punto 5 para que quede más claro.
En cuanto a mi arquitectura, lo tengo montado sobre dos equipos con Ubuntu 11.10, en el primero tengo el servidor apache y uno de los tomcat y en la otra máquina el segundo tomcat.
Aunque se puede montar también con todo por separado, es decir, en una máquina instalamos apache, en otra un tomact, y en otra otro tomcat.....
Quizás con esta foto te aclaras un poco más http://www.adictosaltrabajo.com/tutoriales/apache_tomcat_balanceo/esquema.png
Buen dia, ya tengo instalado todo mysql, tomcat, apache, phpmyadmin. Tengo un problema, ya que hice mi pagina y ya subi mi proyecto.WAR a tomcat, y como en mi pagina me tengo que logear obvianmente uso mi BD en mysql el cual ya subi mi script y ya cheque tablas y todo esta perfecto, pero no puedo logearme!
ResponderEliminarAlguna sugerencia?
Estaba pensando si hay alguna manera de ver el error que me lanza, de ser asi en que parte lo veo?
PD. Mi pagina funciona correctamente en mi desarrollo! yo creo que el problema esta en mi servidor! =(
Hola Amigos les tengo una pregunta:
ResponderEliminarTengo un cluster con 2 apache en 2 servidores con oracle linux y una base de datos en oracle rac, que pasa si un proceso esta generando unos 1000 registros y pasa algo y se me cae el nodo1 de aplicaciones donde esta ejecutandose el proceso (en el caso de la base de datos el rac se encarga de hacer lo suyo y no hay problema), existe alguna forma en que ese proceso se traslade al nodo2 que si esta funcioando?. Espero que se entienda mi respuesta.