Eu não acho que é possível passar completamente de zero-downtime com uma única instância do servidor. O que você está procurando é implantação de blue-blue .
Basicamente, você precisa ter um servidor da Web na frente do seu pool de servidores. Você decide lançar a nova versão para escolher um subconjunto de servidores e drená-los. Não aceite nenhuma conexão nova nem conclua solicitações pendentes (geralmente feitas no servidor da Web / balanceador de carga, desabilitando o encaminhamento de solicitações para esses servidores). Depois de esgotado, implante a nova versão nessas instâncias ociosas, teste-a e, se tudo estiver correto, ative-as novamente e o balanceador de carga poderá enviar solicitações do usuário para a nova versão. Em seguida, você pega o restante dos servidores que ainda executam a versão antiga do seu aplicativo e repete o mesmo procedimento - drenar, atualizar, testar, ativar.