2012-03-10 25 views
8

Sto cercando un buon bilanciamento del carico da utilizzare con Tomcat. La nostra applicazione non memorizza nulla nel contesto della sessione, quindi non è importante reindirizzare allo stesso server per lo stesso utente. Mi piacerebbe semplicemente qualcosa che possa accodare richieste round-robin style o basate sul carico inidividuale di ogni server. Mi piacerebbe anche essere in grado di aggiungere server di applicazioni a quelli disponibili per gestire le richieste senza dover riavviare il bilanciamento del carico. Stiamo eseguendo l'applicazione su Linux se questo è importante.Soluzioni di bilanciamento del carico Tomcat

+0

Quanto è grande di un'applicazione stai parlando qui?Se sono solo due server a gestire il carico, è possibile farlo a livello di server Web. Se stai guardando più di 5 server potresti voler guardare a soluzioni commerciali. – Sean

+0

Probabilmente 5+ server. –

risposta

6

Se tutto ciò che serve è un bilanciatore di carico software su uso Linux Apache WEBSERVER2, Mod-Jk e Tomcat Clustering:

Al vostro web server:

1) Installare apache2 e modjk:

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

2) Creare un file "workers.properties" disponibile per apache2. In alcuni casi viene automaticamente creato nella directory/etc/apache2. Questo file tiene le lb config, i nomi dei nodi, IPS e le porte dei server Tomcat, cioè .:

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) Creare una sezione Mod-Jk nel file di apache2 di configurazione, se non è stato creato automaticamente.

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

4) Montare l'applicazione per il bilanciamento del carico (file apache2 config):

JkMount /MyApp  balancer 
JkMount /MyApp/*  balancer 

JkMount /modjkstatus lbstats 

AI server Tomcat:

5) Installare Tomcat utilizzando il pacchetto tarball (meglio allora la verison apt). Cambia server.xml:

  1. disabilitare i connettori http.
  2. abilitare il connettore AJP/1.3 e impostare la porta definita in workers.properties per questo nodo.
  3. aggiungere jvmRoute con il nome del nodo destra all'elemento "Motore":

    <Engine jvmRoute="node1" ... 
    
  4. aggiungere un elemento di "cluster" per semplice configurazione

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

6) distribuire l'applicazione a tutti i tomcats e aggiungi un elemento distribuibile al tuo web.xml.

<distributable/> 

7) Assicurarsi che il server web in grado di accedere alle porte AJP sui server Tomcat e nessun altro può.

8) Avviare il server Web ei tomc uno dopo l'altro e controllare i registri (/var/log/apache2/mod_jk.log, anche).

9) Accesso vostra applicazione: http://mywebserver.com/MyApp

10) Controllare (e negare l'accesso alla) nella pagina di stato lb http://mywebserver.com/modjkstatus

+0

Qual è la differenza tra modjk e modcluster? – user12458

+0

mod_cluster è una diversa [soluzione di bilanciamento del carico di JBoss] (http://mod-cluster.jboss.org/) – Stefan

Problemi correlati