Atualiza o software do servidor sem período de blecaute

2

Digamos que eu tenha um aplicativo da web em execução em uma caixa VPS do Linux. Para aplicar atualizações do kernel e algumas correções de segurança, eu preciso reinicializar o servidor. Durante esse período, o servidor não está acessível. Eu estou querendo saber se é possível exibir um aviso de manutenção para o usuário (via HTTP) neste momento. O aviso será enviado por um script PHP, que manipulará solicitações para fornecer um aviso de manutenção em formato HTML, uma imagem ou XML de serviço da Web aos clientes. Ou, se possível, forneça um serviço parcialmente em execução.

Que tipos de hardware e software eu preciso para que isso aconteça (orçamento mínimo, por favor, e espero que um típico provedor de hospedagem VPS / dedicado possa suportá-los)?

Agora eu já sabia que poderia usar software como o squid para fornecer balanceamento de carga entre 2 servidores HTTP. Mas o que eu faço se o próprio squid precisar de uma atualização ou o servidor CentOS que hospeda o squid? Além disso, eu realmente não preciso de balanceamento de carga, tudo bem se eu tiver que "alternar" para o modo de manutenção manualmente. Alguma idéia?

Obrigado antecipadamente.

    
por He Shiming 28.05.2009 / 16:13

6 respostas

2

Se for importante para você ter esse tempo de atividade (ou seja, durante uma reinicialização de servidor de < 5 minutos), recomendamos que você configure um segundo servidor virtual. Pode ser muito pequeno, rodar lighttp e uma única página estática - ou pode ser uma cópia do seu site ao vivo.

Em seguida, configure heartbeat2 nos dois servidores e forneça um endereço IP compartilhado . Enquanto a máquina principal estiver ativa, ela responderá ao endereço, mas se ficar off-line, o endereço IP será automaticamente acionado na segunda máquina dentro de segundos .

Se você decidir colocar uma versão completa do seu site em ambos os servidores, eu instalaria ldirectord além de heartbeat2 que é um aplicativo de balanceador de carga que será executado as mesmas máquinas que seus servidores web. Nesse caso, não haverá segundos de inatividade quando o servidor estiver inativo.

Em seguida, se você deseja obter a fantasia, pode montar o conteúdo e as configurações do seu site a partir de um nfs share em outro servidor (ou cluster de servidores), para que não seja necessária sincronização ou duplicação entre servidores web.

    
por 28.05.2009 / 16:25
3

O que normalmente fazemos para atualizações é construir uma nova máquina com os componentes atualizados (software, hardware, etc.). Em seguida, carregamos os dados de produção no sistema e os testamos completamente. Quando estivermos prontos, recarregaremos os dados de produção mais recentes e apontaremos o DNS para a nova máquina.

Dessa forma, há disponibilidade constante entre a caixa antiga e a nova.

    
por 28.05.2009 / 16:30
2

Se você precisar fazer uma atualização em um servidor que requer uma reinicialização, precisará de pelo menos uma máquina alternativa para hospedar o site temporário enquanto a máquina original estiver off-line. Uma opção é usar o DNS com um TTL baixo para apontar para o novo servidor enquanto o site original estiver offline.

Outra coisa que você disse é usar squid para proxy. Eu acredito que o squid também pode funcionar em uma situação DNS round-robin com vários servidores squid.

No entanto, qualquer propagação de DNS que você fizer, se optar por fazer isso, pode ser armazenada em cache pelos servidores de recebimento de dados. Você pode tentar aliviar isso com um TTL de 30 segundos ou algo ridiculamente pequeno, mas algum servidor DNS ignorará isso e ainda armazenará o valor em cache por mais tempo.

Se você está mudando para o modo de manutenção, por que não apenas os 5 minutos necessários para reinicializar e enviar um aviso aos usuários de antemão? Isso deve funcionar bem em tudo, exceto nas situações de alta disponibilidade.

    
por 28.05.2009 / 17:09
1

Alguns provedores DNS (como dnsmadeeasy.com) fornecem um serviço failover dns .

Este serviço verificará regularmente para garantir que seu endereço IP principal esteja ativo e, se não estiver, ele começará a responder com um endereço IP de backup - o que pode ser apontado para uma página "Servidor Indisponível - tente novamente mais tarde" outro host em algum lugar.

Isso provavelmente não seria adequado para reinicializações, pois o TTL em entradas de DNS impediria que as pessoas obtivessem a página de failover durante os 2 ou 3 minutos necessários para reinicializar. Funciona muito bem por períodos mais longos (ou não planejados).

    
por 28.05.2009 / 16:18
1

Confira o DNS do Zoneedit. Por um muito baixo custo, eles oferecem failover de DNS.

    
por 28.05.2009 / 16:40
0

Gostaria de sugerir que você fornecesse um aviso aos usuários no site informando-os sobre os tempos de interrupção. Então, durante o período de blecaute, eles receberiam os erros 404 ou 500.

edite: Eles não obteriam o erro 404/500, mas sim um erro de tempo limite.

    
por 28.05.2009 / 16:15