2012-03-10 17 views
8

Estoy buscando un buen equilibrador de carga para usar con Tomcat. Nuestra aplicación no almacena nada en el contexto de la sesión, por lo que no es importante redireccionar al mismo servidor para el mismo usuario. Simplemente me gustaría algo que pueda poner en cola solicitudes de estilo round-robin o basado en la carga individual de cada servidor. También me gustaría poder agregar servidores de aplicaciones a aquellos disponibles para manejar solicitudes sin tener que reiniciar el equilibrador de carga. Estamos ejecutando la aplicación en Linux si eso es importante.soluciones de equilibrador de carga Tomcat

+0

¿Qué tan grande de una aplicación está hablando aquí?Si se trata simplemente de dos servidores para manejar la carga, puede hacerlo a nivel del servidor web. Si está buscando más de 5 servidores, puede consultar soluciones comerciales. – Sean

+0

Probablemente más de 5 servidores. –

Respuesta

6

Si todo lo que necesita es un equilibrador de carga de software en uso Linux Apache Webserver2, Mod-Jk y Tomcat Clustering:

En tu servidor Web:

1) Instalar apache2 y modjk:

sudo apt-get install apache2 libapache2-mod-jk 
sudo a2enmod jk 

2) Cree un archivo "workers.properties" disponible para su apache2. En algunos casos, se crea automáticamente en su directorio/etc/apache2. Este archivo es la celebración de las libras de configuración, los nombres de nodos, ips y puertos de los servidores Tomcat, es decir .:

worker.list=balancer,lbstats 

#node1 
worker.node1.type=ajp13 
worker.node1.host=NODE-IP 
worker.node1.port=NODE-AJP-PORT 
worker.node1.lbfactor=10 

#more nodes here ... (change name in between) 

#lb config 
worker.balancer.type=lb 
#turn off sticky session 
worker.balancer.sticky_session=0 

#add all defined node names to this list: 
worker.balancer.balance_workers=node1 

#lb status information (optional) 
worker.lbstats.type=status 

3) Crear una sección Mod-Jk en su archivo apache2 configuración, si no se ha creado de forma automática.

JkWorkersFile /etc/apache2/workers.properties 
JkLogFile  /var/log/apache2/mod_jk.log 
JkShmFile  /tmp/jk-runtime-status 
JkLogLevel  info 

4) Monte su aplicación al equilibrador de carga (archivo apache2 config):

JkMount /MyApp  balancer 
JkMount /MyApp/*  balancer 

JkMount /modjkstatus lbstats 

En sus servidores Tomcat:

5) Instalar Tomcat utilizando el paquete tar (mucho mejor a continuación, la versión adecuada). Cambiar server.xml:

  1. desactivar los conectores http.
  2. habilite el conector AJP/1.3 y configure el puerto que definió en workers.properties para este nodo.
  3. añadir jvmRoute con el nombre de nodo derecho al elemento "motor":

    <Engine jvmRoute="node1" ... 
    
  4. añadir un elemento de "Cluster" para la configuración más simple

    <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" /> 
    

6) Despliegue su aplicación a todos los tomcat y agrega un elemento distribuible a tu web.xml.

<distributable/> 

7) Asegúrese de que el servidor web pueda acceder a los puertos ajp en sus servidores tomcat y que nadie más pueda.

8) Inicie el servidor web y los tomcats uno tras otro y revise los registros (/var/log/apache2/mod_jk.log, también).

9) accede a tu aplicación: http://mywebserver.com/MyApp

10) Comprobar (y denegar el acceso a) la página de estado lb http://mywebserver.com/modjkstatus

+0

¿cuál es la diferencia entre modjk y modcluster? – user12458

+0

mod_cluster es una solución de equilibrio de carga diferente de JBoss] (http://mod-cluster.jboss.org/) – Stefan

Cuestiones relacionadas