mod_proxy mudar sem reiniciar

3

Como posso configurar um servidor proxy-mod apache para o conteúdo do servidor a partir de um servidor designado separado, de forma que eu possa mudar de qual servidor exibir o conteúdo sem reiniciar o apache?

O servidor de conteúdo será alterado periodicamente, seja para manutenção ou por falha.

Eu tenho um aplicativo que não precisa estar em um cluster, mas quero ter uma versão estática da exibição da página da Web no caso de o servidor de aplicativos principal travar.

Eu também quero a opção para atualizar a base de código no servidor testá-lo e, em seguida, mudar o servidor antigo ao vivo.

Eu configurei o mod_proxy usando

ProxyPass / http://appserver.com
ProxyPassReverse / http://appserver.com

isso funciona, mas as costuras exigem reinicialização com configurações diferentes para alterar a direção. que derrota o propósito de usá-lo em um servidor ao vivo.

Eu também tentei o mod_balencer, que funciona muito bem para o failover, mas requer uma reinicialização do apache para configurá-lo de volta para servir o servidor de aplicativos principal quando for o backup.

     ProxyPass / balancer://hotcluster/
     <Proxy balancer://hotcluster>
            BalancerMember http://dyn:80 loadfactor=1
            BalancerMember http://basic:80 status=+H
            ProxySet lbmethod=bytraffic
     </Proxy>

Existe uma maneira de definir o servidor de aplicativos atual sem reiniciar o apache?

    
por Fire Crow 05.10.2009 / 20:04

4 respostas

7

Você poderia usar um mod_rewrite usando um RewriteMap com um único valor:

RewriteMap server txt:/path/to/file/map.txt
RewriteRule ^/(.*) http://${server:production}/$1 [P,L]

Em seguida, crie /path/to/file/map.txt com este conteúdo

# To use a different server, change appserver.com 
# to e.g. maintenance.appserver.com

production appserver.com

Assim que o mod_rewrite detectar que você alterou esse valor, ele automaticamente enviará as solicitações para o novo servidor.

Você pode usar um dos vários tipos de RewriteMap com diferentes impactos no desempenho: arquivos de banco de dados, mapas de arquivos de texto aleatórios, até mesmo programas externos - em suma, você pode executar todos os tipos de magias arcanas com eles. Leia tudo sobre isso em os documentos mod_rewrite e decida por si mesmo qual seria a melhor opção .

    
por 05.10.2009 / 20:50
1

Isso deve ser possível usando o mod_rewrite.

Algo parecido com isto:

RewriteEngine on
RewriteCond /some/path/dynamic-server-is-down !-f
RewriteRule ^/(.*) http://dyn:80/$1 [P]
RewriteCond /some/path/dynamic-server-is-down -f
RewriteRule ^/(.*) http://static:80/$1 [P]

Em seguida, basta tocar no arquivo servidor dinâmico para baixo para alternar para o servidor estático.

    
por 05.10.2009 / 20:51
0

Eu não acho que haja uma maneira fácil de fazer isso. No entanto, se você espera que o servidor proxy altere por que não o proxy para um IP virtual ou um alias de DNS. Dessa forma, se você precisar alternar o servidor que está sendo intermediado por proxy, poderá reatribuir o IP virtual ou alterar o alias para apontar para o novo servidor.

    
por 05.10.2009 / 20:07
0

Você pode tentar "recarregar" em vez de reiniciar. Reiniciar irá parar e iniciar o servidor, recarregar apenas recarrega a configuração.

    
por 05.10.2009 / 20:36