Não tenho certeza se essa é a maneira correta de fazer essa pergunta, mas aqui está basicamente o que eu gostaria de fazer:
1.) Envie um conjunto de alterações para um site no IIS.
2.) Não interrompa os usuários.
3.) Ser capaz de reverter sem esforço.
Então, há algumas coisas que eu sei que precisam acontecer:
1.) Sessão Out of Proc - manipulada
2.) Cache Out of Proc - manipulada
Portanto, as questões que permanecem:
1.) Como evito interromper os usuários? Se eu apenas carregar os arquivos na lixeira, o aplicativo recicla e leva mais de 10 segundos para voltar a ficar on-line
2.) Como faço a reversão sem esforço?
Eu estava pensando que uma solução possível seria ter dois sites configurados no IIS, um público e um privado. Os envios vão para particulares e são aquecidos. Após o aquecimento, os sites são trocados. Uma reversão envolve apenas a troca para privado sem um upload.
Isso parece bom em teoria, mas não tenho certeza da mecânica. Alguma ideia?
Respostas:
Aqui está como eu abordaria esse problema - lembre-se de que não fiz isso antes, são apenas conceitos que testei um pouco no meu ambiente de desenvolvimento. Você poderá configurar uma estrutura bastante robusta usando esse e alguns scripts no idioma de sua escolha. Basicamente, vamos configurar um ambiente de balanceamento de carga no gueto e usá-lo para alternar entre o novo site e o site antigo.
Para configurá-lo, você precisará de:
Instale o ARR para começar.
Configure os 3 sites no IIS:
http://192.168.1.1/
. Este também é o site do ARR. Basta configurar um diretório vazio para apontar e colocá-lo em seu próprio pool de aplicativos. Configure o pool de aplicativos para não atingir o tempo limite, de acordo com estas instruções .http://192.168.1.2:8080
ehttp://192.168.1.3:8080
. Eles também devem estar em seus próprios pools de aplicativos e apontar para diretórios diferentes no sistema de arquivos (mas ambos os diretórios normalmente têm o mesmo conteúdo)Após a instalação do ARR, haverá uma nova categoria no Gerenciador do IIS chamada "Farms de Servidores" - clique com o botão direito do mouse e crie um novo farm.
{SERVER_PORT}
não corresponde a 8080Neste ponto, você tem o básico do que precisamos para realizar sua solicitação. Se você for acessar
http://192.168.1.1/
o site, poderá acessar o site 1 ou o site 2, mas será perfeitamente claro que existem outros sites.Agora, o que você pode fazer quando desejar implantar uma nova versão do seu aplicativo é:
A ferramenta de implantação da Web entra em ação quando você fala sobre querer criar um script de tudo isso. Torna super fácil criar um pacote para seu aplicativo e implantá-lo na linha de comando. Você também pode reverter esse pacote facilmente se houver problemas. O ARR também é programável usando as
Microsoft.Web.Administration
DLLs.Outra coisa - se você estiver realmente no Windows 2008 R2 (que é o IIS 7.5), dê uma olhada no módulo Application Warmup - deve facilitar a parte de aquecimento disso também.
fonte
MattB bateu fora da água. +1 Eu responderei com mais detalhes, mas não pretendo aceitar os pontos dele. Vou acrescentar ao que ele disse.
Eu tenho uma configuração semelhante à que ele descreveu, e funciona muito bem. O ARR é o caminho a seguir, mesmo em um único servidor.
No entanto, gostaria de acrescentar algumas coisas.
Crie os 2 sites, conforme recomendado por Matt. Chame-os de algo como yoursite.com01 e yoursite.com02.
Crie 2 regras de reescrita de URL. Um para www.seudominio.com e outro para estadiamento.seudominio.com. Para produção, use {HTTP_HOST} com um valor de (^ www.seudominio.com.br $) | (seuIP). (ou qualquer ligação que você preferir) Para teste, use {HTTP_HOST} com um valor de (^ staging.yourdomain.com $). Ligue para as regras yoursite.com e staging.yoursite.com.
Regra de associação = yoursite.com ao site = yoursite.com01 e regra = staging.yoursite.com ao site = yoursite.com02.
Configure o FTP em staging.yoursite.com.
O tráfego de produção agora vai para Rule = staging.yoursite.com e Site = yoursite.com01. Stagging para o oposto.
Você pode implantar na preparação a qualquer momento, teste, pré-spin-up, teste de outras pessoas, etc. Faça-o durante o dia, não importa. Implante na mesma conta FTP sempre. Funciona muito bem com servidores de compilação.
Então, quando estiver pronto para entrar no ar, faça apenas três alterações: - mova a ligação FTP de yoursite.com02 para yoursite.com01 - altere a regra de regravação de URL yoursite.com para apontar para yoursite.com02 - altere o estadiamento da regra de regravação de URL. yoursite.com para apontar para yoursite.com01
Agora você tem tempo de inatividade zero, comutação instantânea e funcionalidade de reversão imediata!
Seu único objetivo a considerar é o estado da sessão fora de processo. Verifique se o servidor de estado aceita os dois IDs do site para que você não perca o estado da sessão durante a troca.
Observe também que este é apenas para a Web e não para o banco de dados.
Para scripts, use o Editor de Configuração. Faça as alterações desejadas e clique em "Gerar script". Ele fornecerá o código C #, appcmd ou AHAdmin.
Eu tenho isso em vigor há alguns meses com um front end de página da Web para trocar instâncias e nunca mais olho para trás. Torna as implantações tão atualizadoras em comparação às implantações tradicionais.
fonte