Como migrar um site de um servidor para outro com o mínimo de tempo de inatividade?

6

Eu tenho um servidor que hospeda um site e outros serviços que precisam ser reinstalados. Eu gostaria de realocar esses serviços para outro servidor temporariamente, com o menor tempo de inatividade possível. Ambos os servidores estão no mesmo centro de dados e podem estar no mesmo comutador de rede.

Qual é a melhor técnica para mover esses serviços com o mínimo de tempo de inatividade? O site é orientado a banco de dados, então idealmente eu quero um evento "switch de ferrovia", onde eu possa garantir que todo o tráfego seja movido para o novo servidor de uma só vez. Não quero ter uma situação em que o banco de dados antigo receba atualizações depois que eu migrar os dados para o novo.

Duas coisas que considerei:

Altere o DNS para apontar para o serviço temporário. O principal problema aqui é que eu não controle o tempo de propagação do DNS, e outros servidores podem manter os resultados em cache por um tempo , deixando o site "para baixo" para os usuários que recebem o endereço antigo.

Existe uma maneira de corrigir esse problema com redirecionamentos do Apache +? Eu suspeito que não, já que a hospedagem virtual baseada em nome quebra sem o nome de domínio, o que eu não posso usar porque é obsoleto.

Vincule o endereço IP antigo ao novo servidor e (temporariamente) atribua ao servidor antigo um IP diferente durante a reinstalação. Eu posso deixar o DNS sozinho neste caso.

Existem outras soluções simples que estou negligenciando?

    
por Steve Madsen 01.06.2009 / 21:44

10 respostas

4

Parece que você pode ser melhor servido com uma solução relativamente simples ... porque você pode tolerar um pouco de tempo de inatividade. Eu evitaria me enganar com o DNS, porque você tem pouco controle sobre os atrasos de propagação / armazenamento em cache.

1- Construa um servidor temporário
2- derrubar serviços no servidor principal
3- mover / copiar dados-chave do servidor primário para o servidor temporário 4- mudar servidor principal para outro endereço IP
5- altere o servidor temporário para o endereço IP principal, exiba 6- consertar servidor primário (em IPs diferentes)
7- derrubar serviços no servidor temporário
8- mover / copiar dados-chave do servidor temporário para o servidor principal
9- desligar servidor temporário
10- alterar o servidor principal de volta para o endereço IP primário, abrir

O único tempo de inatividade é quando os dados são movidos entre os servidores e variam dependendo de como os dados são movidos.

Observação: se você tiver um firewall e estiver fazendo NAT, a alteração do NAT entre primário e temporário será uma boa alternativa para trocar endereços IP e reduzir o tempo de inatividade.

    
por 01.06.2009 / 22:30
2

Desde que não haja outros serviços vinculados ao IP, vá com a mudança. Não demora muito e você pode ter certeza absoluta de que o tráfego está indo para o destino correto.

Esteja ciente dos caches ARP da máquina vizinha. É uma boa prática usar o arping -s após a alteração.

    
por 01.06.2009 / 22:01
1

Se você tiver conectividade de velocidade Lan entre os dois sistemas e acesso total, o uso de drbd (drbd.org) pode ser uma boa opção para obter os dados sincronizados entre os sistemas antes de uma transição e voltar.

Configure o DRBD e deixe-o sincronizar
Desligue db & servidor web
Mudar drbd na máquina original para o secundário Mudar drbd na segunda máquina para o primário Alterar o IP original do servidor
Adicionar IP antigo ao novo servidor
Trazer o db e o servidor da web no sistema secundário

Acione-os quando o sistema original for recriado

A opção de usar a replicação de banco de dados também é boa se seus "dados" estiverem principalmente no banco de dados

Esperar pela propagação de DNS, mesmo com um TTL baixo, fornecerá resultados 'inconsistentes'

    
por 01.06.2009 / 21:59
1

Eu escrevi sobre como mover o servidor da web para outro no meu blog. Inclui muito, incluindo problemas de banco de dados.

link

    
por 01.06.2009 / 22:53
1

Migrando um servidor .. Que dor.

Felizmente, você tem tudo no mesmo data center.

Realmente, no entanto, depende de quais apps você tem e de ter configurado todos eles na nova caixa.

Geralmente, no meu local de trabalho, não usamos endereços IP nas configurações, usamos nomes DNS. Mas esses nomes DNS só são mencionados em / etc / hosts

Isso significa que, se precisarmos alterar um endereço IP para algo, basta alterar o arquivo hosts e tudo aponta para o novo local.

Novamente, no entanto, depende de como você deseja fazer a transição - gradual ou não. Você precisa pelo menos certificar-se de que as fontes de dados, etc, são exatamente as mesmas em ambas as máquinas, então, crie um escravo replicado para um banco de dados, etc etc. Basicamente, quando você puxa o plugue em uma máquina, a outra deve ser capaz de assumir instantaneamente, e no mesmo estado. Esta é uma boa razão para manter os servidores separados. Portanto, não tenha um servidor executando todos os seus e-mails, bancos de dados, aplicativos da Web etc. Certifique-se de não ter um único ponto de falha.

Veja como fizemos uma mudança recente no servidor (de um datacenter para outro)

  1. Semanas antes, altere o TTL no DNS para o (s) domínio (s)
  2. Configure o novo servidor, verifique se ele exatamente o mesmo código
  3. Configurar mestre < - > Mestre replicado escravo em novo datacenter
  4. Apontar tudo para um datacenter antigo durante o teste (os túneis SSH são o seu amigo!)
  5. "Virar o interruptor" - executar um script que muda tudo no tudo os servidores (antigos e novos) para apontar nos novos servidores (certifique-se de que você faz isso tudo ao mesmo tempo, ou você pode ter problemas de replicação!)
  6. Migrar registros de DNS - aponte o DNS no novo servidor
  7. Monitor - observe os servidores antigos até que o tráfego caia.
  8. Decomission old servers

Enquanto isso não é exatamente um completo "golpe a golpe" de tudo que fizemos. Dá uma boa visão geral.

    
por 01.06.2009 / 22:12
0

Se você é o proprietário do domínio em questão, pode fazer com que o TTL dessa entrada de DNS seja alterado para um valor mais baixo pelo seu administrador de DNS (digamos de 3 a 5 minutos). Deixe essa nova configuração se propagar pela internet por alguns dias antes de fazer a alteração real do IP do DNS. Isso deve garantir que todas as entradas de DNS armazenadas em cache sejam atualizadas rapidamente após a alteração.

    
por 01.06.2009 / 21:49
0

Você está certo que a transição do DNS não é totalmente confiável. O que eu prefiro fazer é, ao mesmo tempo em que o DNS é alterado, alternar a configuração do banco de dados do site antigo para que ele se conecte ao novo banco de dados do servidor. Ta-da, todas as suas atualizações vão para um lugar.

O site provavelmente irá rodar mais devagar para as pessoas que se conectarem ao servidor antigo, é claro, mas isso só vai durar até que elas entrem em sincronia.

    
por 01.06.2009 / 21:55
0

O seu servidor tem um IP público no próprio servidor. Se houver um mapeamento NAT, você pode apenas alterar o mapeamento NAT para ter o mesmo ponto IP público para o novo IP interno do novo servidor.

Eu penso que muitas vezes é melhor ter uma página de manutenção curta e testar do que zero tempo de inatividade eu mesmo.

    
por 01.06.2009 / 21:58
-1

Use a replicação em seus servidores de banco de dados. Isso resolverá seu problema com atualizações de banco de dados em ambos os servidores no meio do tempo.

    
por 01.06.2009 / 21:52
-1

O ideal é que você defina o TTL do registro do host DNS alguns dias antes do horário agendado, mas se você não tiver controle sobre isso (ou não puder trabalhar com alguém sobre isso), então isso ocorrerá.

Se não, a única coisa é realmente construir o novo servidor até que esteja pronto para produção e, em seguida, agendar alguns minutos de inatividade enquanto você troca as caixas ...

    
por 01.06.2009 / 21:54