Apache_Tomcat_logo.png

¿Que es un balanceandor? (Wikipedia)

Un balanceador de carga fundamentalmente es un dispositivo de hardware o software que se pone al frente de un conjunto de servidores que atienden una aplicación y, tal como su nombre lo indica, asigna o balancea las solicitudes que llegan de los clientes a los servidores usando algún algoritmo (desde un simple Round Robin hasta algoritmos más sofisticados).

Funcionamiento:

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.

Esquema de arquitectura

balanceador.png

Instalación balanceador:

apt-get install apache2  openjdk-7-jre libapache2-mod-jk

Configuramos el fichero workers.properties

vi /etc/libapache2-mod-jk/workers.properties

Añadimos la siguiente configuración:

# Propiedades del entorno necesarias de configurar
workers.tomcat_home=/usr/local/tomcat
workers.java_home=/usr/lib/jvm/java-7-openjdk-amd64

# Los servidores a balancear estarán definidos más abajo en “balancer”
worker.list=balancer

#Configuramos tomcat 1

worker.worker1.port=8009
worker.worker1.host=192.168.1.80
worker.worker1.type=ajp13
worker.worker1.lbfactor=1

#Configuramos tomcat2

worker.worker2.port=8009
worker.worker2.host=192.168.1.81
worker.worker2.type=ajp13
worker.worker2.lbfactor=1

#Configuracion del balanceador

worker.balancer.type=lb
worker.balancer.balance_workers=worker1,worker2
worker.balancer.method=B

# El siguiente parámetro indica al balanceador que todas las peticiones de una misma
# sesión (usuario) vayan al mismo servidor
worker.balancer.sticky_session=true

A continuación configuramos JkMount para que todas las peticiones se dirijan a los distintos servidores tomcat, para ello debemos configurar el fichero  /etc/apache2/sites-enabled/000-default entre las etiquetas VirtualHost *:80 y VirtualHost

VirtualHost *:80>
ServerAdmin webmaster@localhost>

DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory “/usr/lib/cgi-bin”>
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
JkMount /node/* balancer

JkMount /* balancer
ErrorLog ${APACHE_LOG_DIR}/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Habilitamos la configuración de los modulos jk y procedemos a iniciar el apache

cp /etc/apache2/mods-available/jk.* /etc/apache2/mods-enabled/
/etc/init.d/apache2 restart

Una vez ya hayamos configurado el balanceador pasamos a instalar nuestros dos servidores apache tomcat. Dejo un tutorial detallado de su instalación:

Instalar tomcat:

http://red-orbita.com/?p=5833

Por ultimo en el archivo server.xml de cada servidor tomcat (<TOMCAT_HOME>/conf/servers.xml), modificamos el parámetro jvmRoute del elemento Engine.

 clustomcat01

<Engine name=”Catalina” defaultHost=”localhost” jvmRoute=”worker1?>

clustomcat02

<Engine name=”Catalina” defaultHost=”localhost” jvmRoute=”worker2?>

Pruebas:

- Añadimos dos paginas diferentes en cada nodo de los servidores tomcat

- Iniciamos los tomcat y mediante nuestro navegador accedemos a la IP del balanceador y comprobamos por cual nodo resuelve. (En mi caso resuelve por el nodo01) como podemos ver en la siguiente imagen:

- Paramos en nodo01, volvemos a refrescar la URL y debería resolver por el nodo02

 

Fuente: red-orbita

¿Quién está en línea?

Hay 23295 invitados y ningún miembro en línea