iNotes con Reverse Proxy Apache – Parte III

Continuamos con la serie para configurar nuestro Inotes.

inotes

Inotes con Reverse Proxy – Parte I

Inotes con Reverse Proxy – Parte II

Hoy toca meterle mano a nuestro servidor Apache colocado en la DMZ para que haga el trabajo de director de trafico en las peticiones , o sea de Reverse Proxy.

Sin entrar mucho en este tema (ya que aqui no somos expertos), podríamos decir que tal y como hemos definido nuestro objetivo, le vamos a pedir al Reverse Proxy que lleve a uno u otro servidor las peticiones en función de algunos parámetros.

La logica que queremos es la siguiente.

  • Primera conexión (usuario Anonimo)—>La queremos llevar a uno de los servidores de Login
  • Una vez logado, e identificado tu servidor y ruta destino—-> Llevar la comunicación a este servidor final (al cluster) y mantener la conexión persistente hasta que finalice.

Si fuéramos a lo facil, podríamos configurar un “contexto” en apache para que todas las conexiones a ese contexto acaben en un servidor final.

Por ejemplo, las peticiones a /mail1 que vayan al servidor 1, las peticiones a /mail2 que vayana a servidor 2, etc. Pero esto en mi opinion tiene muchos inconvenientes, por ejemplo ya damos pistas de que tenemos x servidores tantos como contextos tenga, tambien damos la facilidad de agregar a favoritos la url de mi buzón y cuando abriría la url host/mail1/buzon.nsf iria directamente a este buzón en este servidor, saltándonos al servidor de login. Así que en este ejercicio nos olvidamos de lo facil y haremos algo distinto (aunque nos lleve mas curre).

Configurando Apache con Inotes

Primero nos aseguramos de cargar los módulos necesarios

LoadModule rewrite_module modules/mod_rewrite.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so

Activaremos el modulo rewrite

rewriteEngine on

Ahora definiremos nuestros CLUSTER de servidores en el apache.

<Proxy balancer://CLUSTERSL1>
BalancerMember http://srv1.internal.local:80/ route=SRV1
BalancerMember http://srv2.internal.local:80/ route=SRV2
ProxySet lbmethod=byrequests
</Proxy>

<Proxy balancer://CLUSTERSL2>
BalancerMember http://srv3.internal.local:80/ route=SRV3
BalancerMember http://srv4.internal.local:80/ route=SRV4
ProxySet lbmethod=byrequests
</Proxy>

<Proxy balancer://CLUSTERSL3>
BalancerMember http://srv5.internal.local:80/ route=SRV5
BalancerMember http://srv6.internal.local:80/ route=SRV6
ProxySet lbmethod=byrequests
</Proxy>

Ahora nos ayudaremos de la propiedad stickysession para que las conexiones sean persistentes y no vayan balanceando de un nodo a otro, salvo caída de un nodo. Como vereis lee la configuración de la cookie inotesses (que tendremos que trabajar luego)

ProxyPass / balancer://CLUSTERSL1 stickysession=inotesses 
nofailover=Off 
ProxyPassReverse / http://srv1.internal.local/ 
ProxyPassReverse / http://srv2.internal.local/ 

ProxyPass / balancer://CLUSTERSL2 stickysession=inotesses 
nofailover=Off 
ProxyPassReverse / http://srv3.internal.local/ 
ProxyPassReverse / http://srv4.internal.local/ 

ProxyPass / balancer://CLUSTERSL3 stickysession=inotesses 
nofailover=Off 
ProxyPassReverse / http://srv5.internal.local/ 
ProxyPassReverse / http://srv6.internal.local/

Sera necesario establecer reescrituras de las peticiones para informar al proxy a que servidor debe llevar las conexiones. Esta información se establece en una cookie que hemos llamado “_clusterses”  (que tendremos que trabajar luego)  cuyo valor será el CLUSTER en el que está incluido el servidor de correo del usuario.

RewriteCond %{HTTP_COOKIE} _clusterses=CLUSTERSL1 [NC]
RewriteRule ^/((mail|iNotes|icons|domjava)/.*)$ balancer://CLUSTERSL1/$1 [P]

RewriteCond %{HTTP_COOKIE} _clusterses=CLUSTERSL2 [NC]
RewriteRule ^/((mail|iNotes|icons|domjava)/.*)$ balancer://CLUSTERSL2/$1 [P]

RewriteCond %{HTTP_COOKIE} _clusterses=CLUSTERSL3 [NC]
RewriteRule ^/((mail|iNotes|icons|domjava)/.*)$ balancer://CLUSTERSL3/$1 [P]

De momento lo dejamos aqui, para no aburriros. En proximos articulos empezaremos a trabajar las cookies y veremos como transformar la cookie de Sesion de un dominio a otro con el apache.

  3 comments for “iNotes con Reverse Proxy Apache – Parte III

  1. Vikas Tiwari
    marzo 7, 2013 at 12:11 pm

    Hello Daniel,

    It’s wonderful to read this article series.. !! We are working on iNotes implementation using Apache Reverse Proxy and stuck with similar scenario.. Please could you help us with the missing piece here (that you might publish in future release).. even if you can guide us with relevant changes required in iNotes Redirect or how to modify cookie, that would be really helpful !

    Many thanks in advance !

  2. Daniel Recio
    marzo 9, 2013 at 1:05 am

    Thanks for comment Vikas. I posted missing part.

  3. Sumit S Narkhede
    julio 19, 2016 at 10:02 am

    Hi
    Mr. Daniel,
    Could u please share me the complete procedure on configuring the apache reverse proxy for inotes.
    I.e. on Windows server Step-by-Step
    I.e. on SUSE Linux server Step-by-Step

    As i m new for configuring this from the above i m not able to get it right configuration in my enviroment.
    Will be very glad for the same.
    Awating for your reply.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *