“fallback” servidor http

2

Eu tenho um aplicativo da web, que é servido por um aplicativo independente. Às vezes, a JVM está sendo executada em falhas, mas, na maioria das vezes, preciso desativá-la para implantar uma nova versão ou atualizar o sistema. Por vários motivos, ele precisa atender solicitações HTTP / HTTPS diretamente, por isso não posso usar um proxy na frente dele.

Existe alguma maneira de o próprio sistema (Ubuntu Linux) responder a solicitações HTTP quando o aplicativo está inativo? Ou, em outras palavras, existe alguma maneira de configurar o servidor para que, sempre que a resposta normal fosse "conexão recusada", ele servisse alguma página estática (503)? Se possível, seria ótimo se ele pudesse lidar com HTTPS também.

    
por xs0 09.05.2011 / 19:18

2 respostas

4

Você pode usar haproxy no modo tcp para fazer a proxy transparente dos pedidos. Seu servidor de aplicativos não saberá a diferença, exceto que o ip remoto será o localhost. Ele retornará um erro para o cliente se não puder contatar o servidor de backend por padrão. Você também pode especificar um servidor de backup para o qual as solicitações serão roteadas quando o back-end for desativado.

Se você realmente quer evitar qualquer "proxy", você pode usar o iptables para redirecionar as portas. Você executaria um servidor como o nginx para servir os arquivos de erro em uma porta não utilizada. Com um script de monitoramento (ou um daemon como Monit ), você poderia redirecionar a porta do aplicativo para o seu servidor de erro com uma regra como:

iptables -t nat -A PREROUTING -i eth0 -p tcp \
--dport $SVC_PORT -j REDIRECT --to-port $ERROR_PORT

Seu sistema de monitoramento precisaria inserir ou excluir dinamicamente as regras à medida que a disponibilidade de serviços mudasse.

    
por 09.05.2011 / 20:06
0

Não há como fazer isso diretamente (por exemplo, se o aplicativo estiver inativo, o aplicativo está inativo e não retornará nada, nem mesmo um erro)
Você pode, no entanto, executar algo como o NGINX, que pode enviar erros personalizados se o servidor principal estiver inativo ou se retornar um erro.

    
por 09.05.2011 / 19:46