Migração do servidor da web em tempo real

5

Eu preciso substituir um servidor da Web antigo que administra um site ocupado. Eu tenho o novo hardware instalado e funcionando, todo o software está instalado. Só resta um problema em que estou procurando uma solução:

Quando eu mudo o registro para o    domínio no DNS, leva um tempo para    a mudança para se propagar através do    Internet devido ao cache do DNS. Durante esse    tempo, alguns usuários vão bater o novo    servidor, e alguns vão bater o velho    um, levando a inconsistências de dados, porque agora existem dois bancos de dados.    Como posso mudar todo mundo    imediatamente? Eu não executo o servidor DNS e não posso alterar nada, exceto os registros A e CNAME, mas posso configurar o meu, se isso ajudar.

Eu provavelmente posso ter uma ou duas horas de inatividade quando me mudo para a noite.

Obrigado, Simon

edit : Obrigado por todas as suas respostas. Estou aceitando a resposta da SmallClanger porque é uma solução viável, e estou avaliando Brian porque sua resposta me deu uma nova idéia: Siga a solução da SmallClanger até a migração do banco de dados e substitua o antigo apache por um proxy HTTP que envia todas as solicitações para o novo servidor. Eu configuraria o proxy para endereçar o novo servidor pelo endereço IP e não envolveria um subdomínio temporário que poderia (apesar do código 302) acabar em algum diretório de favoritos, rede social ou cache do navegador.

    
por Simon 01.12.2010 / 15:08

7 respostas

2

O problema fundamental que você tem é manter a consistência do banco de dados durante o switch. Para ter tempo de inatividade zero , você não terá escolha a não ser configurar os dois servidores em um cluster ativo / ativo. (mesmo assumindo, no momento, que a configuração do cluster não envolveria tempo de inatividade, o que é um pouco complicado).

Como você não pode alterar o TTL, o melhor passo é minimizar o tempo de inatividade:

  • Defina o novo site em um segundo nome de domínio (por exemplo: www2.example.com ), mas também responda a www.example.com . Aponte o DNS para www2 apenas no novo servidor.
  • Os arquivos do site são replicados e bloqueados nas edições dos dois lados.
  • Em seguida, em uma janela de manutenção anunciada, substitua o site ativo por um aviso de "down for upgrades".
  • Sincronize ou copie o banco de dados conforme necessário e inicie o novo servidor.
  • Então (e somente então) faça suas alterações de DNS no registro www .
  • Substitua a configuração antiga do site por um redirecionamento 302 simples para www2.example.com
  • Aguarde até que o TTL completo expire (e depois um pouco) antes de desativar o servidor antigo.

Isso garantirá que todo o tráfego vá para o novo site durante a propagação de DNS, independentemente de para qual servidor eles vão inicialmente, embora ele pressuponha que seu site seja capaz de ser exibido a partir de vários nomes de domínio ao mesmo tempo.

Para uma pilha LAMP de servidor único (se é isso que você tem), essa é a sua rota para o tempo de inatividade mínimo (mas não zero).

    
por 01.12.2010 / 15:58
3

Você pode configurar o servidor da web antigo para redirecionar todas as solicitações para o novo IP. Isso pode ser feito com o mod_rewrite no apache.

    
por 01.12.2010 / 15:21
0

Você pode diminuir o TTL da sua zona um ou dois dias antes da migração para um valor pequeno. Depois de alterar o registro de recurso A, você pode aumentar o TTL novamente para seu valor antigo.

    
por 01.12.2010 / 15:13
0

Você tem que migrar primeiro todos os arquivos de dados no novo servidor (arquivos apache e mysql). Depois disso, quando você tiver 2 horas para parar o servidor, poderá sincronizar todos os arquivos de dados com o rsync. Como o rsync -avz / var / www / sites (servidor antigo) user @ hosts2: / var / www / sites (novos servidores). E exportar importar todos os arquivos de dados no servidor sql do servidor 1 para o novo servidor. Então swich server 2

e pare o servidor antigo se tiver algum problema, inicie novamente o servidor 1 e repare erros no servidor de notícias.

Mas antes de iniciar o novo servidor, verifique se há erros e faça o próprio teste.

    
por 01.12.2010 / 15:19
0

abaixe o TTL, e coloque em sinal de manutenção na página antiga?

    
por 01.12.2010 / 15:21
0

Eu acho que o TTL é uma má ideia. Becouse se o servidor antigo está vivo, algum usuário meybe irá se conectar no servidor antigo e outro usuário meybe usará o novo servidor. Se você realmente tem 2 horas usar syn e exportar inport tudo de sql para sql, em seguida, swich no novo servidor Tenho certeza que tudo vai ficar bem com mu soluções

    
por 01.12.2010 / 15:22
0

Você pode usar o IP do servidor antigo para o novo servidor.

    
por 01.12.2010 / 16:17