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.