Alterando Servidores - Redirecionar para novo IP = Sem tempo de inatividade?

13

Estou mudando os servidores do meu site. O IP do servidor antigo não pode ser movido para o novo. Para não ter tempo de inatividade, estou planejando fazer o seguinte, por favor, alguém confirme que funcionará:

  1. Configure o novo servidor e ouça o novo IP
  2. O servidor antigo redireciona todo o tráfego para o novo IP
  3. Alterar registros DNS para apontar para o novo IP

Minha lógica me diz que quando eu redirecionar para o novo IP da minha caixa antiga, o usuário não verá o nome do domínio no navegador, mas verá o novo IP. Existe uma maneira de redirecionar para o novo IP e enviar junto o HOSTNAME para que o usuário veja o nome do domínio no navegador?

Estou fazendo isso porque o site está em uso constante e a simples alteração das configurações de DNS não funcionará, pois o banco de dados não será sincronizado entre os servidores novo e antigo durante a propagação.

    
por Denis Pshenov 21.03.2012 / 07:37

7 respostas

19

Aqui está o método que funcionou para mim:

  1. Sincronize os arquivos e bancos de dados com o novo servidor.
  2. Realize uma nova sincronização antes do corte.
  3. Altere o DNS para apontar para o novo servidor.
  4. Encaminhar a solicitação ao ip antigo para o novo servidor até que a propagação do DNS seja concluída.

Veja como eu faria o passo 4:

Nós configuraremos o IPTables em um servidor Linux para redirecionar todo o tráfego vindo na porta 80, (que é a porta padrão do servidor da web), para um servidor com o IP 122.164.34.240 . O primeiro passo é configurar sua caixa do Linux para permitir que esse tipo de encaminhamento ocorra. Abra uma janela de terminal, efetue login como usuário root e execute o seguinte comando:

# echo 1 >/proc/sys/net/ipv4/ip_forward

O próximo passo é dizer ao IPTables para redirecionar o tráfego para o novo servidor:

# iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 122.164.34.240

Veja onde a mágica do IPTables acontece. Com a terceira e última etapa, dizemos ao IPTables para reescrever a origem das conexões com a nova porta 80 do servidor para parecer que vem do servidor antigo.

# iptables -t nat -A POSTROUTING -p tcp -d 122.164.34.240 --dport 80 -j MASQUERADE

A etapa final é necessária porque, se não dissermos ao servidor da Web do novo servidor que as conexões estão vindo das máquinas clientes, elas serão originadas do servidor antigo.

Você pode repetir isso também para os bancos de dados e a porta do servidor de e-mail.

    
por 21.03.2012 / 09:54
5

Você também pode procurar adicionar vários registros A. Por exemplo, o Google usa isso, verifique a saída do nslookup:

Name:       google.com
Addresses:  209.85.148.101
            209.85.148.102
            209.85.148.113
            209.85.148.138
            209.85.148.100
            209.85.148.139

Se você adicionar vários registros A a um domínio, os visitantes receberão vários IPs e os tentarão nessa ordem. Se um falhar, o cliente passa para o próximo para tentar.

Configure o novo IP como um registro A extra de 24 horas, inicie um novo servidor, desligue o antigo, remova o IP.

    
por 21.03.2012 / 09:38
1

Outra opção é usar um VIP (IP virtual). Então, seus passos serão:

  1. Configure o novo servidor e ouça o novo IP.
  2. Adicione um VIP ao servidor antigo.
  3. Altere os registros DNS para apontar para o IP VIP. Até agora todo o tráfego ainda será enviado para o servidor antigo, mas usando o VIP.
  4. Quando estiver pronto para ir, mova o VIP para o novo servidor.
  5. Opcionalmente, você pode alterar o DNS para o novo IP do servidor e remover o VIP (após algum tempo) do DNS.
por 21.03.2012 / 09:08
0

Ok, desde que você mencionou a replicação do banco de dados, é necessário fazer o seguinte.

  1. Configurar replicação entre bancos de dados nos dois servidores.
  2. Durante a transição, torne o banco de dados do novo servidor como o servidor principal e o antigo como somente leitura.
  3. Aponte a string de conexão do banco de dados do aplicativo para o novo servidor no servidor antigo e no novo. Se o seu site usa Sessões, certifique-se de que a sessão permaneça no banco de dados.
  4. Altere o endereço IP no DNS para o novo servidor.
  5. Continue executando os servidores por pelo menos 48 horas.
por 21.03.2012 / 09:21
0
  1. Configure o novo servidor e ouça o novo IP
  2. Em seguida, configure o redirecionamento transparente. No servidor antigo, instale o rinetd.

No arquivo rinetd.conf:

OLD_SERVER_IP 80 NEW_SERVER_IP 80
  1. Alterar registros DNS para apontar para o novo IP
por 21.03.2012 / 10:51
0

você pode usar o HA-Proxy na frente de seus servidores web, quando um deles estiver no modo de manutenção, o servidor secundário assumirá.

    
por 13.12.2016 / 17:07
-1

Sua lista do que fazer parece bastante sensata.

Como exemplo, supondo que você use o apache, quando você faz algo parecido com isto no apache no servidor antigo:

redirect permanent / http://newserver.example.com

O usuário verá o novo domínio no navegador quando navegar para o site antigo. Nesse caso, o redirecionamento também é permanente enquanto o navegador estiver em execução.

Portanto, contanto que você implemente algum tipo de redirecionamento em seu servidor da Web além de suas outras alterações, tudo bem.

    
por 21.03.2012 / 07:53