A veces no nos basta con un servidor para poder responder a todas las peticiones que nos llegan y necesitamos tener varios servidores. Pero esto tiene que ser invisible para los usuarios y por eso el punto de entrada es el mismo. Para ello podemos usar un balanceador que según le vayan llegando peticiones de los usaurios les ira redireccionando a un servidor u otro.
Para tener varios servidores con Tomctas instalados y un Apache que redireccione las peticiones a estos, tendremos que seguir los siguientes pasos:
- Descargamos el instalador del apache (http://httpd.apache.org/).
- Instalamos el apache.
- Nos bajamos el conector jk de aqui (http://tomcat.apache.org/download-connectors.cgi): Vamos a Binary Releases, luego a win32 (si tenemos un windows de 32 bits) y por último entramos en jk-1.2.28. Hay una versión para los apache 2.0.x y otra para los apache 2.2.x, bajad la correspondiente al vuestro (para el apache 2.2.x sería mod_jk-1.2.28-httpd-2.2.3.so).
- Paramos el apache.
- Movemos el fichero del conector jk a la carpeta de modulos del apache (por defecto es C:\Archivos de programa\Apache Software Fundation\Apache2.2\modules) y lo renombramos como mod_jk.so.
- Ahora tendremos que editar el fichero de configuración httpd.conf (por defecto estará en C:\Archivos de programa\Apache Software Fundation\Apache2.2\conf\) y añadir la siguiente línea en la zona donde se cargan los demás módulos:
LoadModule jk_module modules/mod_jk.so
- Crearemos el fichero workers.properies con la definición de los tomcats y del tipo de balanceador. Por ejmplo, imaginemos que tenemos dos tomcats en la misma máquina (localhost), uno con el conector de AJP/1.3 en el puerto 8009 y otro en el puerto 8019 y que queremos usar un balanceador lb. Entonces tendremos el siguiente fichero de configuración:
workers.tomcat_home=C:/tomcat-5.5.20 workers.java_home=C:/jdk1.5.0_03 worker.list=balancer worker.worker1.port=8009 worker.worker1.host=localhost worker.worker1.type=ajp13 worker.worker1.lbfactor=1 worker.worker2.port=8019 worker.worker2.host=localhost worker.worker2.type=ajp13 worker.worker2.lbfactor=1 worker.balancer.type=lb worker.balancer.balance_workers=worker1,worker2 worker.balancer.method=B
- En el archivo httpd.conf (por defecto estará en C:\Archivos de programa\Apache Software Fundation\Apache2.2\conf\) tendremos que configurar unos parametros del conector jk y pondremos las siguientes líneas en las que indicaremos donde escribir los logs, donde esta el fichero que define los workers y alguna cosa mas:
# Path to workers.properties JkWorkersFile C:/Archivos de programa/Apache Software Fundation/Apache2.2/conf/workers.properties # Path to jk logs JkLogFile C:/Archivos de programa/Apache Software Fundation/Apache2.2/mod_jk.log # Jk log level [debug/error/info] JkLogLevel info # Jk log format JkLogStampFormat "[%a %b %d %H:%M:%S %Y] " # JkOptions for forwarding JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories # JkRequestLogFormat set the request format JkRequestLogFormat "%w %V %T"
- Después de las líneas anteriores, en el fichero httpd.conf (por defecto estará en C:\Archivos de programa\Apache Software Fundation\Apache2.2\conf\) tendremos que indicar los path que queremos que se redireccionen a los tomcats y a cuales queremos que se redireccionen. Solo podremos direccionar explícitamente a los que esten puestos en la línea worker.list del workers.properties. Si queremos redireccionar a alguno que este dentro del balanceador, tendremos que ponerlos en esta línea también: worker.list=worker1,worker2,balancer. Por ejemplo, para que la url http://www.prueba.es/aplicacion sea redireccionada a algunos tomcats definidos en el archivo workers.properties, tendremos que poner alguna de las siguientes líneas dependiendo de a que lo queremos redireccionar (pondremos tantas líneas como sean necesarias):
# Para que envie al tomcat definido como worker1 JkMount /aplicacion worker1 # Para que envie a los tomcats definidos como worker1 y worker2 JkMount /aplicacion worker1 worker2 # Si queremos que lo envíe a los tomcats definidos en el balanceador JkMount /aplicacion balancer
Comentarios
como deberia de probar el
como deberia de probar el balanceador para verificar que este funcionando todo bien ?
Hola Danilo, Creo que en el
Hola Danilo,
Creo que en el log del modjk pone cada petición a que servidor la envía. Con esto podrías comprobar si funciona.
Saludos
Impecable, es verdad alli
Impecable, es verdad alli encontre registro de los worker que estan dentro del balanceo, en mi caso son 2 .
cha gracias
Cuantas conexiones activas me
Cuantas conexiones activas me aguanta???
Tendras Idea????
Voy a tener unas 2000 conexiones activas, funcionara el balanceo???
Pues eso ya no te se decir.
Pues eso ya no te se decir. No llevo un control de accesos en estos casos. Pero actualmente si que estoy buscando alguna forma de controlar las peticiones a cada parte (apache, tomcats, ...) y generar gráficas para tener una idea más clara de toda estructura.
Saludos
Añadir nuevo comentario