Uma maneira rápida de alterar servidores da web

1

Eu tenho 2 Servidores Web CentOS com 2 hosts diferentes

  • 1 está atualmente em direto ( Server A )
  • O segundo substituirá o primeiro ( Server B )

Atualmente, nosso domínio aponta para Server A

Em um cenário normal para alternar entre servidores, basta simplesmente atualizar o DNS do domínio para alternar entre os servidores. Esta ação pode, obviamente, levar até 72 horas.

Como estamos lançando uma nova plataforma sobre o Server B , eu gostaria de um plano de contingência que me permita alternar entre os dois servidores on-the-fly em vez de esperar por um DNS para se propagar. Eu não tenho nenhuma experiência com algo como balanceadores de carga, mas isso poderia ajudar a resolver o problema usando um Config para alternar o tráfego entre o DNS e 2 servidores?

Qualquer conselho é bem-vindo para este cenário.

Editar: pergunta reformulada & Exemplo adicionado Fluxograma

    
por Craig 20.08.2018 / 11:21

2 respostas

3

Existem muitas maneiras de conseguir isso, cada um tem um nível diferente de certeza, riscos e complexidade. Alguns deles foram abordados nos comentários.

  • Reduza o TTL do registro de DNS, vários dias antes da mudança. Execute o movimento e, em seguida, você pode restaurar o TTL para seu valor anterior. Isso não garante que todos os servidores DNS do mundo tenham sido atualizados. Você ainda pode ter alguns usuários operando com um registro DNS obsoleto. Mas é isso que você obtém com o DNS. Geralmente é bom. Mas sem garantia. Você não pode realmente verificar como você teria que verificar todos os servidores DNS do mundo, muitos estarão fazendo cache, alguns não respeitarão TTLs. Mas em geral, essa é uma maneira bastante segura de fazer isso. A menos que você tenha 10 milhões de usuários ou mais, acho que o risco potencial é relativamente baixo, que um dos seus usuários estará usando um servidor DNS quebrado.
  • Atualize os dois servidores com a versão mais recente, então isso não importa. Digamos que A seja atualmente o servidor apontado pelo DNS, atualize B, altere o DNS, atualize A. Há uma pequena janela de problema possível durante a atualização de A, na qual um usuário terá um site corrompido.
  • Coloque um balanceador de carga na frente, que assume o endereço IP no qual o DNS atualmente aponta. Esta é uma mudança mais complexa na sua configuração existente, mas é mais como as coisas devem ser geralmente.
  • Troque rapidamente os endereços IP. Dê ao Servidor B o endereço IP do Servidor A e altere o Servidor A. Tempo de inatividade muito curto - alguns segundos se você estiver pronto com um script. Não há riscos de ter DNS obsoleto, pois você não altera o DNS.
  • Use a ferramenta Keepalived ou semelhante. O DNS, em seguida, aponta para um endereço IP flutuante. O servidor que atualmente tem esse IP precisaria receber um endereço IP diferente. Este é um nível de complexidade mais alto que a maioria das outras soluções, mas é uma grande melhoria para a sua configuração. Agora você está em risco. O DNS tem um TTL "longo" para o registro A apontando para o Servidor A. Se o Servidor A falhar, você precisará alterar o DNS para apontar para o Servidor B, o que levará um longo tempo para se propagar. Com um IP flutuante, você nunca precisará alterar o DNS. Se o Servidor A falhar, o Servidor B assumirá automaticamente após alguns milissegundos o IP flutuante e tudo continuará funcionando.
  • Atualize o Servidor B com o novo código. Alterne a configuração no Servidor A para que, em vez de veicular o site, o servidor Web proxy as solicitações para o Servidor B. (Fácil se for seu Apache httpd, NGINX, IIS. Muitos outros devem ser capazes de fazer isso, se não, você poderia coloque HAProxy, pare rapidamente o servidor web e inicie o HAProxy.) Nesse ponto, todas as solicitações são tratadas pelo Servidor B no novo código. Mude o seu DNS.
por 20.08.2018 / 15:43
0

Se é apenas a web que você precisa resolver, por que você não apenas faz redirecionamento 302 no seu arquivo de índice principal e, em seguida, altera seus registros DNS A / AAAA? É claro que você ainda pode alterar o TTL no início, para não esperar na alteração do registro de DNS por tanto tempo, mas o redirecionamento 302 entrará em vigor imediatamente.

A solução com um balanceador de carga também não é ruim e não é tão difícil de configurar, por exemplo, HAProxy ou NginX (ou até mesmo o IIS da Microsoft) no modo de proxy reverso. Você pode testá-lo em uma porta diferente (digamos, a porta 8080/4443) primeiro e, em seguida, ligá-lo à porta 80/443. Mas na solução LB provavelmente haverá um curto serviço de drop-out, enquanto você vai mudar suas portas, porque você teria que mudar a porta do seu servidor web para alguma outra coisa a partir de 80/443 no servidor A e usar essas portas para LB Depende de quão rápido você será.

Ou se ambos os servidores da web estiverem protegidos por um firewall, pode haver um encaminhamento de porta NAT para que você possa alterar apenas o endereço IP de destino do servidor A para o servidor B.

    
por 20.08.2018 / 14:39