Udostępnij za pośrednictwem


Ponowne uruchomienie wystąpienia roli spowodowane uaktualnieniami systemu operacyjnego maszyny wirtualnej platformy Azure

W tym artykule omówiono wpływ uaktualnień systemu operacyjnego (OS) maszyny wirtualnej platformy Microsoft Azure na ponowne uruchamianie wystąpień ról. Zawiera szczegółowe informacje na temat harmonogramów uaktualniania systemu operacyjnego i agenta gościa, wpływu usługi i wymagań, powiadomień, wykrywania i rozwiązywania typowych problemów.

Harmonogramy uaktualniania

W przybliżeniu co miesiąc firma Microsoft publikuje nową wersję systemu operacyjnego gościa dla maszyn wirtualnych platformy Azure jako usługi (PaaS). Dokładny harmonogram jest różny, a trend historyczny można zobaczyć w macierzy zgodności systemu operacyjnego gościa platformy Azure i zestawu SDK. Podczas tego wdrożenia kontroler usługi Azure Fabric wykonuje dwie operacje (przekazywanie systemu operacyjnego hosta i przekazywanie systemu operacyjnego gościa) przez wszystkie centra danych. Okresowa aktualizacja agenta gościa platformy Azure jest również uruchamiana wewnątrz maszyny wirtualnej.

Poniższe sekcje zawierają więcej szczegółów na temat dwóch przebiegów uaktualniania i uaktualniania agenta gościa.

Przekazywanie 1: system operacyjny hosta

Pierwsza passa uaktualnia system operacyjny hosta. System operacyjny hosta ponownie uruchamia wystąpienia roli, a kontroler sieci szkieletowej zapewnia ponowne uruchomienie tylko wystąpień z jednej domeny uaktualnienia. Podczas tego ponownego uruchamiania wystąpienia ról przechodzą przez standardowy proces zamykania. Następnie zdarzenie jest uruchamiane, RoleEnvironment.OnStop aby zapewnić możliwość bezpiecznego zamknięcia wystąpienia.

Aktualizacja systemu operacyjnego hosta może potrwać kilka dni, aby sieć szkieletowa koordynowała uaktualnienia we wszystkich różnych hostowanych usługach i domenach uaktualniania w centrum danych. Zazwyczaj różne wystąpienia wdrożenia są aktualizowane kilka godzin.

Aby uzyskać więcej informacji na temat procesu uaktualniania systemu operacyjnego hosta, zobacz artykuł Aktualizacje hosta platformy Azure: Dlaczego, kiedy i jak działa blog platformy Azure.

Pass 2: system operacyjny gościa

Po zakończeniu uaktualniania systemu operacyjnego hosta w centrum danych system operacyjny gościa jest uaktualniany dla usług skonfigurowanych do korzystania z automatycznych wersji systemu operacyjnego gościa. To uaktualnienie jest kontynuowane przy użyciu standardowych reguł domeny uaktualniania dla usługi. Maszyna wirtualna jest ponownie uruchamiana, a partycja systemu Windows (dysk D) jest odtwarzana przy użyciu uaktualnionego systemu operacyjnego.

Proces aktualizacji systemu operacyjnego gościa jest znacznie szybszy niż aktualizacja systemu operacyjnego hosta. Dzieje się tak, ponieważ sieć szkieletowa musi koordynować tylko aktualizację w ramach usługi hostowanej i domen uaktualnienia. Czas trwania procesu aktualizacji systemu operacyjnego gościa dla usługi zależy w dużej mierze od następujących czynników:

  • Liczba wystąpień ról
  • Liczba domen uaktualniania
  • Ile czasu trwa zamykanie usługi (Stopping i OnStop zdarzenia)
  • Ile czasu zajmuje uruchomienie usługi (zadania uruchamiania OnStart i zdarzenie)

Agent gościa

Agent gościa platformy Azure jest aktualizowany w przybliżeniu co miesiąc. Po zaktualizowaniu agenta gościa są wykonywane następujące akcje:

  • Proces hosta, który uruchamia twoją rolę (zazwyczaj WaWorkerHost lub WaWebHost), jest bezpiecznie zamknięty.
  • Agent gościa aktualizuje się.
  • Proces hosta zostanie uruchomiony ponownie.

Aby uzyskać więcej informacji na temat procesu agenta gościa i sposobu interakcji z usługą, zobacz Workflow of Windows Azure classic VM architecture (Przepływ pracy klasycznej architektury maszyny wirtualnej platformy Windows Azure).

Wpływ na usługę i wymagania

Poniższa lista zawiera opis wpływu na usługę w chmurze i jej wymagań:

  • Jeśli którakolwiek z ról ma tylko jedno wystąpienie, może wystąpić przestój usługi. Powinno istnieć co najmniej dwa wystąpienia każdej roli, ponieważ umowa dotycząca poziomu usług (SLA) wymaga czasu pracy na poziomie 99,95%.

  • Spodziewaj się ponownego uruchomienia wystąpień ról dla aktualizacji systemu operacyjnego hosta około raz w miesiącu. Jeśli masz automatyczne aktualizacje systemu operacyjnego gościa, należy oczekiwać ponownego uruchomienia wystąpień. Zazwyczaj ponowne uruchomienia są od siebie kilka godzin. Jednak ten przedział czasu może ulec zmianie w zależności od makijażu różnych usług, które istnieją w centrum danych.

  • Twoja rola musi być zgodna z regułami, które zarządzają aktualizacjami systemu operacyjnego hosta. W szczególności wystąpienia ról powinny osiągnąć Ready stan w ciągu 30 minut od uruchomienia zadań uruchamiania. Aby uzyskać więcej informacji na temat tego ograniczenia, zobacz Jak przebiega uaktualnianie.

  • Uaktualnienie systemu operacyjnego hosta powoduje ponowne uruchomienie wystąpienia roli, a uaktualnienie systemu operacyjnego gościa powoduje odpowiednik obrazu wystąpienia. Ze względu na te zdarzenia wystąpienia ról muszą być w stanie obsłużyć następujące procedury:

    • Uruchom ponownie
    • Reimage
    • Recyklingu

Powiadomienie

Obecnie platforma Azure nie oferuje proaktywnych powiadomień podczas uaktualniania systemu operacyjnego. Wystąpienia ról otrzymają zdarzenie przed ich zamknięciem RoleEnvironment.Stopping . Możesz użyć tego zdarzenia, aby bezpiecznie zakończyć każdą pracę, którą wykonuje wystąpienie roli, lub powiadomić administratora o zamknięciu wystąpienia.

Możesz subskrybować kanał informacyjny RSS aktualizacji systemu operacyjnego Platformy Azure. Ten kanał informacyjny powinien zostać zaktualizowany tego samego dnia, w których aktualizacje systemu operacyjnego zaczynają być wdrażane w centrum danych. Kanał informacyjny zazwyczaj nie zapewnia zaawansowanego proaktywnego powiadomienia, ale pomaga określić, kiedy są wykonywane aktualizacje. Ukończenie procesu aktualizacji może potrwać kilka dni. W związku z tym może być konieczne odczekenie co najmniej jednego dnia od momentu zaktualizowania kanału informacyjnego RSS i rozpoczęcia aktualizacji hostowanej usługi.

Lista wersji systemu operacyjnego gościa platformy Azure oraz lista wersji systemu operacyjnego, które są dostępne do wyboru w witrynie Azure Portal, są zwykle aktualizowane po zakończeniu wdrażania systemu operacyjnego gościa. Nie należy używać najnowszego wpisu na tych listach jako wskazania, kiedy aktualizacje systemu operacyjnego są w toku.

Detection

Obecnie nie ma bezpośredniego sposobu wykrywania uaktualnienia systemu operacyjnego hosta. Można jednak zobaczyć dowody ponownego uruchomienia w dziennikach na maszynie wirtualnej. Aby to zrobić, wykonaj jedną z następujących czynności:

Typowe problemy i rozwiązania

W poniższych sekcjach omówiono niektóre typowe problemy, które obejmują ponowne uruchamianie wystąpienia roli i sposób ich rozwiązywania. Aby uzyskać więcej informacji na temat uruchomionych procesów i lokalizacji plików dziennika, których można użyć do rozwiązywania problemów, zobacz Przepływ pracy klasycznej architektury maszyny wirtualnej platformy Windows Azure.

Problem 1: Uruchamianie zadań lub kodu nie powiodło się po raz drugi po ponownym uruchomieniu systemu operacyjnego hosta

Zadania uruchamiania lub kod w OnStart funkcji or Run mogą zakończyć się niepowodzeniem po raz drugi po ponownym uruchomieniu systemu operacyjnego hosta. Ponowne uruchomienie ma wywołać zadania uruchamiania do ponownego uruchomienia. Ten błąd uniemożliwia wystąpieniu roli dotarcie do Ready stanu.

Co zrobić, jeśli wykonujesz coś w zadaniu uruchamiania, a następnie uruchamiasz polecenie, które zwraca błąd po drugim uruchomieniu? W takim przypadku zadanie uruchamiania zakończy się niepowodzeniem i spowoduje, że wystąpienie roli rozpocznie odtwarzanie. Jeśli na przykład użyjesz polecenia konfiguracji zestawu APPCMD, aby dodać sekcję konfiguracji w usługach Internet Information Services (IIS), polecenie zakończy się niepowodzeniem w drugim uruchomieniu. Polecenie generuje komunikat o błędzie "New add object missing required attributes . Nie można dodać zduplikowanego wpisu kolekcji typu..." Następnie wystąpienie roli rozpoczyna odtwarzanie.

Rozwiązanie 1. Zdalne nawiązywanie połączenia z maszyną wirtualną i debugowanie błędu uruchamiania lub kodu

Aby rozwiązać ten rodzaj błędu, użyj protokołu RDP (Remote Desktop Protocol), aby zdalnie nawiązać połączenie z maszyną wirtualną. Sprawdź dzienniki zdarzeń pod kątem błędów i sprawdź plik WaHostBootstrapper.log pod kątem błędów zadań uruchamiania. Podczas typowego procesu programowania i testowania należy aktywnie zainicjować ponowne uruchomienie wystąpień ról w witrynie Azure Portal. Ten krok pomaga przetestować usługę, aby upewnić się, że działa ona poprawnie w tym scenariuszu.

Typowym rozwiązaniem błędów zadań uruchamiania jest dodanie exit /b 0 polecenia na końcu skryptu zadania uruchamiania. To polecenie zakończenia kończy skrypt przy użyciu kodu zakończenia, który wskazuje powodzenie. Aby uzyskać więcej informacji o tym, dlaczego to polecenie jest konieczne, zobacz Jak skonfigurować i uruchomić zadania uruchamiania dla usługi Azure Cloud Service (klasycznej).

Problem 2: Uruchamianie zadania lub kodu nie jest uruchamiane po ponownym obrazie partycji systemu Windows

Partycja systemu Windows (dysk D) jest zwykle miejscem przechowywania instalacji programów i zmian rejestru. Podczas części aktualizacji systemu operacyjnego gościa partycja systemu Windows jest odtwarzana. Może to spowodować utratę tych instalacji i zmian. Jeśli kod uruchamiania błędnie zakłada, że niektóre zmiany rejestru nadal istnieją po ponownym obrazie partycji systemu Windows, wystąpienie roli może nie działać poprawnie. Ten błąd uniemożliwia wystąpieniu roli dotarcie do Ready stanu.

Na przykład zadanie uruchamiania może spowodować zmianę rejestru. Następnie przechowuje rekord tej zmiany na dysku C lub E, aby upewnić się, że zmiana rejestru nie zostanie uruchomiona po raz drugi. Jednak zmiana rejestru na dysku D zostanie utracona z powodu ponownego utworzenia obrazu, a zadanie uruchamiania nie przywróci tej zmiany rejestru, ponieważ zadanie nie uważa, że jest to konieczne. Brak zmiany rejestru może ostatecznie spowodować niepowodzenie pozostałej części zadania uruchamiania.

Rozwiązanie 2. Testowanie ponownego tworzenia wystąpień ról w witrynie Azure Portal

Podczas typowego procesu programowania i testowania należy aktywnie zainicjować ponowne tworzenie obrazu wystąpień ról w witrynie Azure Portal. Ten krok pomaga przetestować usługę i upewnić się, że działa ona poprawnie w tym scenariuszu.

Problem 3. Kod uruchamiania trwa dłużej niż 30 minut

Jeśli kod uruchamiania trwa dłużej niż 30 minut, może istnieć więcej niż jedno wystąpienie roli, które jest w tym samym czasie poza usługą. Ten scenariusz najczęściej występuje, gdy zadanie uruchamiania wykonuje jedną z następujących akcji:

  • Instaluje program lub funkcję
  • Pobieranie danych pamięci podręcznej
  • Pobieranie informacji o witrynie sieci Web

Rozwiązanie 3. Przegląd wpływu i wymagań dotyczących usługi

Zapoznaj się z sekcją Service impacts and requirements (Wpływ na usługę i wymagania ), aby dowiedzieć się, czego się spodziewać i jak można zapobiec opóźnieniom uruchamiania lub temu zapobiec.

Problem 4: Platforma Azure nie uruchamia ponownie hosta ani systemu operacyjnego gościa po aktualizacji

W rzadkich przypadkach platforma Azure może nie ponownie uruchomić hosta lub systemu operacyjnego gościa po aktualizacji. W tym scenariuszu prawdopodobnie w portalu zostanie wyświetlony komunikat "Oczekiwanie na hosta", który nie zmienia się po upływie 30 minut lub więcej.

Rozwiązanie 4a: naprawianie kodu uruchamiania

Jeśli możesz użyć protokołu RDP (Remote Desktop Protocol) do nawiązania połączenia z wystąpieniem roli, może wystąpić błąd w kodzie uruchamiania, który można naprawić. Aby uzyskać więcej informacji na temat naprawiania kodu uruchamiania, zobacz Rozwiązanie 1: Nawiązywanie połączenia z maszyną wirtualną i zdalne debugowanie błędu uruchamiania lub błędu kodu.

Rozwiązanie 4b: usuwanie wdrożenia

Jeśli nie możesz użyć protokołu RDP do nawiązania połączenia z wystąpieniem roli, prawdopodobnie jedynym sposobem odzyskania wystąpienia jest usunięcie wdrożenia.

Problem 5. Co najmniej jedno wystąpienie roli jest niedostępne podczas uaktualniania systemu operacyjnego

Jeśli jakiekolwiek wystąpienia ról są niedostępne podczas uaktualniania systemu operacyjnego, może to spowodować zmniejszenie pojemności usługi. Załóżmy na przykład, że masz dwa wystąpienia roli internetowej, a oba wystąpienia zwykle działają przy użyciu procesora CPU 75%. Jeśli jedno wystąpienie zostanie uruchomione ponownie podczas uaktualniania, ruch zostanie przekierowany do pozostałego wystąpienia. To wystąpienie nie może obsłużyć dodatkowego obciążenia. Powoduje to zmniejszenie dostępności usługi.

Rozwiązanie 5. Utrzymywanie wystarczającej nadmiarowej pojemności w usłudze

Upewnij się, że usługa ma wystarczającą nadmiarową pojemność, aby wychwycić określony procent niedostępności wystąpień ról. Aby obliczyć ilość nadmiarowej pojemności, którą trzeba udostępnić, podziel liczbę jedną przez liczbę domen uaktualnienia. Jeśli na przykład masz dwie domeny uaktualnienia, potrzebujesz 1/2 = 50 procent nadmiarowej pojemności, aby obsłużyć domenę uaktualnienia staje się niedostępna. Jeśli masz pięć domen uaktualnienia, potrzebujesz 1/5 = 20 procent nadmiarowej pojemności, aby obsłużyć utratę dostępności w jednej z pięciu domen uaktualnienia.

Problem 6: Klienci doświadczają przestojów lub przekroczenia limitu czasu, ponieważ twoja witryna internetowa zajmuje zbyt dużo czasu, aby się rozgrzać

Czy twoja witryna zajmuje kilka minut, aby się rozgrzać? (Na przykład rozgrzewanie witryny internetowej może składać się ze standardowych usług IIS lub ASP.NET prekompilacji i ładowania modułu lub może to być rozgrzewanie pamięci podręcznej lub innych zadań specyficznych dla aplikacji). W takim przypadku klienci mogą napotkać awarię lub losowe przekroczenia limitu czasu.

Po ponownym uruchomieniu wystąpienia roli i OnStart zakończeniu jego działania wystąpienie roli zostanie przywrócone do rotacji modułu równoważenia obciążenia. Wystąpienie roli rozpocznie odbieranie żądań przychodzących. Jeśli twoja witryna nadal się rozgrzewa, wszystkie te żądania przychodzące będą kolejki i przekraczają limit czasu. Załóżmy, że masz tylko dwa wystąpienia roli internetowej. W takim przypadku IN_0 wystąpienie otrzyma 100 procent żądań przychodzących podczas IN_1 ponownego uruchamiania wystąpienia dla aktualizacji systemu operacyjnego gościa. Jednak IN_0 wystąpienie nadal się rozgrzewa. Ten scenariusz może spowodować całkowitą awarię usługi do momentu zakończenia rozgrzewania witryny internetowej w obu wystąpieniach.

Rozwiązanie 6. Zatrzymanie wystąpienia roli przed odebraniem żądań przychodzących do momentu zakończenia rozgrzewki

Zalecamy zachowanie OnStart kodu obsługi zdarzeń dla wystąpienia roli przed zakończeniem, aż witryna internetowa zakończy rozgrzewkę. Aby zaimplementować ten proces zdarzeń, możesz użyć następującego przykładowego kodu:

public class WebRole : RoleEntryPoint {
    public override bool OnStart () {
        // For information about handling configuration changes, see the article
        // "Customize the Lifecycle of a Web or Worker role in .NET" at
        // https://learn.microsoft.com/azure/cloud-services/cloud-services-role-lifecycle-dotnet.
        IPHostEntry ipEntry = Dns.GetHostEntry (Dns.GetHostName ());
        string ip = null;
        foreach (IPAddress ipaddress in ipEntry.AddressList) {
            if (ipaddress.AddressFamily.ToString () == "InterNetwork") {
                ip = ipaddress.ToString ();
            }
        }
        string urlToPing = "https://" + ip;
        HttpWebRequest req = HttpWebRequest.Create (urlToPing) as HttpWebRequest;
        WebResponse resp = req.GetResponse ();
        return base.OnStart ();
    }
}

Więcej informacji

Skontaktuj się z nami, aby uzyskać pomoc

Jeśli masz pytania lub potrzebujesz pomocy, utwórz wniosek o pomoc techniczną lub zadaj pytanie w społeczności wsparcia dla platformy Azure. Możesz również przesłać opinię o produkcie do społeczności opinii na temat platformy Azure.