Apache failover para JBoss

Estoy ejecutando una aplicación web JBoss (AS 6 Final) alojada en linux (Debian). Me gustaría implementar una solución de conmutación por error para que cuando JBoss está inactivo, una página web estática se sirve en su lugar.

Mi solución actual es ejecutar Apache como un proxy inverso (descrito aquí ), que me permite servir files .php desde apache y reenviar todas las otras requestes a JBoss. Pero no estoy seguro de cómo hacer Apache paso cuando JBoss está abajo?

Nota. tanto apache y jboss se ejecutará en la misma caja, esto es (failover de la aplicación en lugar de conmutación por error del server) para cubrir los times cuando JBoss está re-desplegando etc Así que estoy buscando la solución más simple realmente

Muchas gracias

Si desea una simple página estática para la conmutación por error, utilice un post de error personalizado para su host virtual de apache.

<VirtualHost *:80> ServerName www.yourdomain.tld ServerAlias yourdomain.tld #Most Common errors for proxy ErrorDocument 500 /demoWeb/errorpage.php ErrorDocument 502 /demoWeb/errorpage.php ErrorDocument 503 /demoWeb/errorpage.php DocumentRoot /var/www/demoWeb ProxyPassMatch ^/(.*)+\.php ! ProxyRequests Off <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPass / http://yourdomain.tld:8080/helloworld/ ProxyPassReverse / http://yourdomain.tld:8080/helloworld/ <Location /> Order allow,deny Allow from all </Location> </VirtualHost> 

Este es el método más sencillo para manejar una página de conmutación por error estática. Pero también tener en count para implementar la misma página para otros códigos de error (404?), Porque su JBOSS puede ejecutarse, pero su aplicación JBOSS puede ser desplegados, o se estrelló.

Probablemente puede crear dos sitios para apache y almacenarlos en / etc / apache2 / sites-available. Uno de ellos es el que ya tienes configurado. El otro (vamos a llamarlo "sitio de copy de security") tendrá sus páginas php y un sitio estático para las URL del server jboss que faltan.

Luego, crea un cronjob o lo que sea. Debe comprobar si jboss está todavía disponible. Para ello, crear una página en jboss, y llamar desde el cronjob. Si jboss es detectado como ausente, entonces llame al command "a2ensite" con su "sitio de copy de security" y "a2dissite" con su sitio normal.

El mismo cronjob debería funcionar al revés: cuando jboss vuelva a estar en línea, cambie de nuevo sus sitios en apache.

La solución más sencilla aquí será utilizar Varnish como proxy inverso para apache y Jboss. No sólo le dará esta funcionalidad, además de ser el mejor server de caching disponible, mejorará el performance de su sitio dramáticamente (a less que su sitio sea totalmente dynamic y no haya nada que almacenar en caching).

Aunque usted puede encontrar muchos detalles sobre el barniz en Internet, pero la funcionalidad específica que usted está buscando se puede configurar de esta manera:

backend jboss {.host = "127.0.0.1"; .port = "8080"; .probe = {.url = "/"; .timeout = 3s; .interval = 5s; .window = 1; .threshold = 1; }}

backend apache {.host = "127.0.0.1"; .port = "8010"; .probe = {.url = "/"; .timeout = 3s; .interval = 5s; .window = 2; .threshold = 2; }}

sub vcl_recv {set req.backend = Jboss;

if (req.restarts == 1 ||! req.backend.healthy) {set req.backend = Apache; }}

Por estas configuraciones, si Jboss está inactivo, verniz enviará el tráfico al server apache y servirá la página que ha configurado.

Espero que esto ayudó.