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.