Acelerando o lançamento de instâncias do Amazon EC2 Windows

16

Estou trabalhando em um serviço da Web hospedado no EC2 e precisa ter um número variável de instâncias em execução, dependendo da carga. Temos o serviço básico em funcionamento, mas uma das coisas com as quais estamos lutando é o tempo necessário para provisionar e iniciar uma instância do Windows (estamos usando algumas ferramentas terceirizadas que são executadas apenas no Windows). Eu já vi isso levar de 10 minutos a uns 45 minutos impressionantes.

Alguém tem alguma dica sobre como acelerar o lançamento de uma instância do EC2? Como as AMIs para servidores Windows são grandes em comparação às AMIs do Linux, por exemplo, pergunto-me se uma coisa pode ser garantir que o bucket S3 que contém a AMI esteja localizado na mesma zona em que a instância é iniciada, o que provavelmente seria tornar o provisionamento da nova instância mais rápido.

gareth_bowles
fonte

Respostas:

8

Eu instalei 3 instâncias ontem à noite de um servidor Windows 2003 baunilha. Os dois primeiros levaram cerca de 45 minutos, o terceiro, cerca de uma hora depois, levou duas horas completas antes de estar pronto!

Aqueles não tinham nada, sem nenhum uso do S3. Duvido que exista uma maneira de acelerar esse passo fundamental, além de esperar que a Amazon faça melhorias na velocidade de implantação ao longo do tempo. Portanto, concluo que se espera um certo atraso e que o conselho de Kurt é bom: manter 1 ou 2 em reserva já preparado.

Outra coisa que você pode fazer é criar uma nova instância do seu tipo de AMI algumas vezes e cronometrá-la. Em seguida, tente algumas vezes com o armazenamento S3 e veja quanto tempo isso adiciona a ele. Suponho que a zona de disponibilidade deve corresponder entre a imagem e o S3, embora eu não saiba quanta diferença de horário isso fará.

Depois de determinar o tempo máximo de provisionamento, mantenha-se à frente da carga / uso por muitos minutos.

Scott Forsyth - MVP
fonte
Obrigado pelas sugestões - 2 horas é bastante extrema. Uma coisa que notei desde que fiz essa pergunta é que o EC2 às vezes reinicia instâncias do Windows imediatamente após a inicialização. Não sei por que isso ocorre (não descobri um padrão para o motivo de algumas instâncias serem reinicializadas, enquanto outras não), mas isso pode adicionar mais 5 ou 10 minutos ao tempo de inicialização.
gareth_bowles
2
@gareth - isso ocorre porque a máquina tem o mesmo nome que outro na rede (ou seja, é uma imagem). O EC2ConfigService detecta isso, atribui um novo nome e o reinicia. Você pode desativar isso com o utilitário de configuração ec2config instalado.
Kieren Johnstone
20

As instâncias do Amazon windows são reiniciadas no início porque a configuração padrão do serviço do Windows "EC2 Config" é renomear seu host para o nome DNS interno da instância. Renomear hosts requer uma reinicialização no Windows. Se você não precisar usar o nome DNS interno da sua instância, poderá se beneficiar ao desativar o recurso SetComputerName. As instâncias do Windows também têm a vantagem de não precisar inicializar as unidades de inicialização nas quais você já pode ter empacotado sua configuração novamente, economizando mais tempo na inicialização da instância. Tudo isso é possível através do Serviço de Configuração do Windows EC2.

Serviço de configuração do Windows: http://docs.amazonwebservices.com/AWSEC2/latest/UserGuide/appendix-windows-config.html

Minhas instâncias pequenas do Windows normalmente levam de 15 a 18 minutos para inicializar (as maiores são mais rápidas). Dependendo dos seus requisitos, você poderá agrupar todo o seu software na AMI e poderá ter tudo inicializado e em execução nesse período. Entendo as reservas para não agrupar tudo em uma AMI, mas pode valer a pena melhorar o tempo de inicialização para ter AMIs de produção com tudo agrupado. Mantenha os scripts de construção separados, se desejar, em seus ambientes de construção.

Além disso, agora que a Amazon havia lançado os volumes raiz do EBS, em oposição aos volumes raiz do armazenamento de instância. As pequenas imagens do Windows executadas em um volume EBS são inicializadas em quase 5 minutos, contra os quase 20 minutos anteriores. Além disso, você não precisa finalizar - você pode parar / iniciá-los - dependendo da sua configuração, isso potencialmente raspa mais alguns minutos em alguns scripts de inicialização.

A personalização essencial do serviço de configuração do Windows EC2, a AMI e o uso potencial de um volume de inicialização do EBS devem reduzir o tempo de inicialização para quase 5 minutos. Você pode evitar o sysprep que é executado em uma inicialização da instância ec2, dependendo do seu aplicativo, especialmente para fins de desenvolvimento. Uma imagem m1.large não sysprepped que evita uma alteração no nome do host na inicialização pode ser iniciada em cerca de 2 minutos, o que não é nada ruim.

No momento, pelo que entendi, é o melhor que você pode fazer com o Windows no Amazon EC2, mas isso realmente não é tão ruim. Se você conseguir prever um futuro próximo de 10 minutos com base nos padrões médios de uso, poderá gerar instâncias extras e lidar com a carga adicional.

Ameer Deen
fonte
A renomeação do host interno é uma ótima dica - obrigado! Também quero testar os volumes raiz do EBS, principalmente porque isso tornará os backups muito mais fáceis. Acho que vou ter que prever um tempo médio de inicialização de 10 minutos; isso não é um problema em si, mas a alta variabilidade dos tempos de inicialização ainda é uma dor real.
Gareth_bowles
Isso deve ser mencionado nos documentos da AWS.
Peter Mounce 27/05
4

Ter um sistema mínimo, manter o máximo possível no EBS pode ajudar? Ou talvez adote uma abordagem no estilo Apache e execute uma ou duas na reserva?

Kurt
fonte
4

Nós encontramos esse problema exato, mas de uma maneira muito séria - nossa nova inicialização estende o Amazon EC2 para um ambiente de laboratório virtual (multiusuário, políticas, compartilhamento etc.) e, portanto, precisávamos acelerar o horário de início do Máquinas Windows. Nossa maior decisão foi oferecer suporte apenas a volumes baseados em EBS em nosso aplicativo, porque eles são os únicos que podem iniciar em 5 a 10 minutos. Em nossos testes, descobrimos que os tempos de inicialização da loja da instância variam amplamente e às vezes levam quantidades excessivas de tempo, o que os torna inúteis para nós.

Simon @ LabSlice Gerenciamento de laboratório virtual no EC2

Simon na LabSlice-com
fonte