Eu executo o apache / mod_perl como instâncias do EC2 com balanceamento de carga, e faço atualizações de código regularmente como você diz. Meu processo é:
- tire uma ou duas instâncias de rotação
- encerre o apache nessa instância
- atualizar a (s) instância (s)
- retornar à rotação e remover os outros
A documentação da AWS explica como adicionar e remover a instância da rotação usando a API ou o console, sua escolha. Você notará que, com a minha abordagem, os servidores da Web ficam fora de rotação normalmente, por isso não me preocupo se uma determinada solicitação do usuário é eliminada. Como mencionado em @ cyberx86, você pode usar o comando apachectl -k graceful
para desligar seu servidor apache depois que cada solicitação for processada.