martes, noviembre 11, 2008
Pound load balancer + OWA front end
Estos de micro$oft... Siempre mandandose de las suyas....

Segun estuve leyendo, muchas de las personas que implementan un proxy reverso en el medio
del OWA y el cliente se encuentra con problemas. La razon? La cultura anti-estandar de microsft.

La implementacion de URLs que no cumplen estandares hacen que, segun lei, ni ellos mismos
puedan hacer que su proxy funcione bien con OWA.

Implementé Pound como Front end de OWA, y al principio funcionó bien... Mientras, lo usaba con Firefox....

Al probar con IExplorer, empezaron los problemas... Las paginas del OWA nunca cargan, y se
vuelve inusable :P

Pero, como no me canso de las soluciones sucias, desprolijas, y eventualmente futuristicamente
catastroficas, implemente la siguiente SOLUCION!

Hacer que a TODO lo que vaya hacia el IIS, pidiendo por /exchange le sea removido del encabezado HTTP la variable User-Agent. Esto hace que siempre IIS devuelva las paginas
en formato estandar.... Lo sé, demasiado sucio.... pero, funciona.

El archivo de configuracion (pound.cfg) quedó asi:

User "www-data"
Group "www-data"
LogLevel 1
Alive 30
ListenHTTP
Address [ip_pulica]
HeadRemove "User-Agent"
MaxRequest 1024
Port 80
xHTTP 0

Err414 "/var/www/CustomError/error.html"
Err500 "/var/www/CustomError/error.html"
Err501 "/var/www/CustomError/error.html"
Err503 "/var/www/CustomError/error.html"

Service
Url "/exchange/*"
BackEnd
Address ip_interna_owa
Port puerto_owa
End
End

Service
Url "/exchweb/*"
BackEnd
Address ip_interna_owa
Port puerto_owa
End
End

Service
Url "/public/*"
BackEnd
Address ip_interna_owa
Port puerto_owa
End
End

Service
Url "/*"
BackEnd
Address ip_interna_owa
Port puerto_owa
End
End
End

Se puede mejorar, pero como en principio funciona y me prenden fuego...asi quedará.



Séxitos.
[DevNull]

Etiquetas: ,

 
posted by [DevNull] at 2:40 p. m. | Permalink | 0 comments
viernes, noviembre 07, 2008
Apache 2 + OWA Front end [Proxy ERROR]
Esta entrada no habla sobre como configurar un Apache haciendo de front end para una OWA [de eso se encarga muy bien esta entrada > http://www.debian-administration.org/articles/411 ], sino de como solucionar un problema "aleatorio" que se genera al consultar las paginas del OWA.

Si te pasa que despues de un rato de estar usando el OWA, en el browser te aparece "Proxy error" o "Gateway error" o una pagina de "Error 502", llegaste al lugar indicado :P

Lo que sucede tecnicamente, es que cada vez que el mod_proxy del Apache, establece una conexion con el servidor interno (en este caso IIS), no corta las conexiones que generó con el fin de poder utilizarla de nuevo en otra peticion. Lamentablemente, IIS noopina lo mismo :P

IIS corta la conexion, y debido a una "race-condition"...cuando mod_proxy intenta usar la conexion "pooleada", se encuentra con que esta "murio" y se genera un error.

Para solucionar esto los tipos de Apache, incluyeron un parametro que debe colocarse en httpd.conf o en el archivo de tu host virtual; y es:

proxy-initial-not-pooled 1

Esta variable de entorno solo esta disponible a partir de la version 2.2.10 de
Apache.


Con esa linea magica, lo que se hace es NO poolear conexiones; Soluciona el
problema, pero trae consigo un tema de performance ya que se debe de establecer
una conexion nueva por cada Request al Proxy.


[Editado]
Otra opcion, es modificar el timeout de conexion del IIS que hostea al OWA y
ponerlo en 86400 (1 dia), este es un hack sucio, asqueroso, y desprolijo por
demás...
pero, quien esté libre de parches, que tire la primera piedra! :P


Otra opcion más? Usar 'Pound' para realizar esta tarea. Pound es un Reverse Proxy
y Load Balancer pequeño pero muy versátil. Vale la pena mirar lo que hace y
leer sobre el.

Séxitos

[DevNull]

Etiquetas: , , , , , , ,

 
posted by [DevNull] at 1:14 a. m. | Permalink | 0 comments