Przyspieszenie uruchamiania instancji Windows Amazon EC2

16

Pracuję nad usługą internetową, która jest hostowana na EC2 i musi mieć uruchomioną różną liczbę instancji, w zależności od obciążenia. Mamy podstawową usługę uruchomioną i działającą, ale jedną z rzeczy, z którymi zmagamy się, jest czas potrzebny na zapewnienie i uruchomienie instancji Windows (używamy niektórych narzędzi trzeciej generacji, które działają tylko w systemie Windows). Widziałem, że zajmuje to od 10 minut do dość oszałamiających 45 minut.

Czy ktoś ma jakieś wskazówki, jak przyspieszyć uruchomienie instancji EC2? Ponieważ AMI dla serwerów Windows są duże w porównaniu do AMI dla Linuksa, zastanawiam się, czy jedną rzeczą może być upewnienie się, że segment S3 zawierający AMI znajduje się w tej samej strefie, w której instancja jest uruchamiana, co prawdopodobnie przyspieszenie udostępniania nowej instancji.

gareth_bowles
źródło

Odpowiedzi:

8

Zainstalowałem 3 wystąpienia ostatniej nocy waniliowego serwera Windows 2003. Pierwsze dwa zajęły około 45 minut, trzecie, około godziny później, zajęły pełne 2 godziny, zanim było gotowe!

Nie miały w nich nic, bez użycia S3. Wątpię, czy istnieje sposób na przyspieszenie tego podstawowego kroku oprócz czekania, aż Amazon z czasem poprawi szybkość wdrażania. Doszedłem zatem do wniosku, że należy się spodziewać pewnego opóźnienia i dobra rada Kurta, która polega na utrzymaniu 1 lub 2 w rezerwie już przygotowanych.

Inną rzeczą, którą możesz zrobić, to kilka razy utworzyć nową instancję typu AMI. Następnie spróbuj kilka razy z pamięcią S3 i sprawdź, ile czasu to dodaje. Zakładam, że strefa dostępności powinna pasować między obrazem a S3, chociaż nie wiem, ile to spowoduje różnicę czasu.

Po określeniu maksymalnego czasu na dostarczenie, wyprzedzaj obciążenie / zużycie o tyle minut.

Scott Forsyth - MVP
źródło
Dzięki za sugestie - 2 godziny są dość ekstremalne. Jedną z rzeczy, które zauważyłem, odkąd zadałem to pytanie, jest to, że EC2 czasami ponownie uruchamia instancje Windows natychmiast po uruchomieniu. Nie wiem, dlaczego tak jest (nie ustaliłem, dlaczego niektóre instancje są uruchamiane ponownie, a inne nie), ale może to dodać kolejne 5 lub 10 minut do czasu uruchamiania.
gareth_bowles
2
@gareth - dzieje się tak, ponieważ maszyna ma taką samą nazwę jak inna w sieci (tzn. jest to obraz). EC2ConfigService wykrywa to, przypisuje nową nazwę i uruchamia ją ponownie. Możesz to wyłączyć za pomocą zainstalowanego narzędzia do konfiguracji ec2config.
Kieren Johnstone
20

Instancje Windows Amazon uruchamiają się ponownie przy starcie, ponieważ domyślną konfiguracją usługi Windows „EC2 Config” jest zmiana nazwy hosta na wewnętrzną nazwę DNS instancji. Zmiana nazwy hostów wymaga ponownego uruchomienia systemu Windows. Jeśli nie musisz używać wewnętrznej nazwy DNS swojego wystąpienia, możesz skorzystać z wyłączenia funkcji SetComputerName. Instancje Windows mają również tę zaletę, że nie muszą inicjować dysków startowych, na których być może już została spakowana konfiguracja, co pozwala zaoszczędzić trochę więcej czasu na przykładowe uruchomienie. Wszystko to jest możliwe za pośrednictwem usługi konfiguracji systemu Windows EC2.

Usługa konfiguracji systemu Windows: http://docs.amazonwebservices.com/AWSEC2/latest/UserGuide/appendix-windows-config.html

Uruchamianie moich małych instancji Windows zwykle zajmuje 15-18 minut (większe są szybsze). W zależności od wymagań możesz być w stanie spakować całe swoje oprogramowanie w AMI i mieć możliwość uruchomienia i uruchomienia wszystkich elementów w tym okresie. Rozumiem zastrzeżenia, że ​​nie łączę wszystkiego w AMI, ale może być warto poprawić czas uruchamiania, aby mieć AMI produkcyjne ze wszystkim, co jest w nich zawarte. Zachowaj osobne skrypty budowania, jeśli chcesz w swoich środowiskach kompilacji.

Ponadto teraz, gdy Amazon wydał woluminy główne EBS, w przeciwieństwie do woluminów głównych w sklepie instancji. Małe obrazy systemu Windows uruchomione na woluminie EBS uruchamiają się w ciągu prawie 5 minut w porównaniu do prawie 20 minut, które zajęły wcześniej. Nie musisz także kończyć - możesz je zatrzymać / uruchomić - w zależności od konfiguracji potencjalnie zabiera to kilka minut w niektórych skryptach startowych.

Zasadniczo dostosowując usługę Windows EC2 Config, AMI i potencjalnie używając woluminu rozruchowego EBS powinny skrócić czas uruchamiania do prawie 5 minut. Możesz uniknąć sysprep, który uruchamia się podczas uruchamiania instancji ec2, w zależności od aplikacji, zwłaszcza do celów programistycznych. Nieskompresowany obraz m1.large, który unika zmiany nazwy hosta podczas uruchamiania, może uruchomić się w ciągu około 2 minut, co wcale nie jest takie złe.

W tej chwili, o ile rozumiem, jest to najlepsze, co możesz zrobić z systemem Windows na Amazon EC2, ale to naprawdę nie jest tak źle. Jeśli jesteś w stanie prognozować w ciągu najbliższych 10 minut w oparciu o średnie wzorce użytkowania, powinieneś być w stanie rozdzielić dodatkowe wystąpienia i obsłużyć dodatkowe obciążenie.

Ameer Deen
źródło
Zmiana nazwy hosta wewnętrznego to świetna wskazówka - dzięki! Chcę również wypróbować woluminy główne EBS, zwłaszcza dlatego, że znacznie ułatwi tworzenie kopii zapasowych. Chyba będę musiał przewidzieć średni czas uruchamiania 10 minut; sam w sobie nie jest to taki problem, ale duża zmienność czasów uruchamiania wciąż stanowi prawdziwy ból.
gareth_bowles
Należy o tym wspomnieć w dokumentach AWS.
Peter Mounce
4

Masz minimalny system, zachowaj jak najwięcej w EBS może pomóc? A może zastosujesz podejście Apache i uruchomisz jeden lub dwa w rezerwie?

Kurt
źródło
4

Natrafiliśmy na ten problem, ale w bardzo poważny sposób - nasz nowy start rozszerza Amazon EC2 na środowisko Virtual Lab (wielu użytkowników, zasady, udostępnianie itp.), Dlatego musieliśmy przyspieszyć czas rozpoczęcia Maszyny z systemem Windows. Naszą największą decyzją było wsparcie tylko woluminów opartych na EBS w naszej aplikacji, ponieważ tylko one mogą uruchomić się w ciągu 5-10 minut. W naszych testach stwierdziliśmy, że czasy uruchamiania w sklepie instancji różnią się znacznie i czasami zajmują zbyt dużo czasu, co czyniło je bezużytecznymi dla nas.

Simon @ LabSlice Virtual Lab Management na EC2

Simon w LabSlice-com
źródło