Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Omówienie szablonów usługi Azure Resource Manager
Szablony usługi Azure Resource Manager umożliwiają deklaratywne określanie infrastruktury IaaS platformy Azure w języku JSON przez zdefiniowanie zależności między zasobami.
Zobacz Tworzenie szablonów rozszerzeń , aby dowiedzieć się więcej na temat tworzenia szablonów na potrzeby korzystania z rozszerzeń.
W tym artykule dowiesz się więcej o rozwiązywaniu problemów z niektórymi typowymi błędami rozszerzeń maszyn wirtualnych.
Uwaga / Notatka
Wypróbuj pomoc maszyny wirtualnej, aby uzyskać szybszą diagnostykę. Zalecamy uruchomienie asysty maszyny wirtualnej dla systemu Windows lub asystenta maszyny wirtualnej dla systemu Linux. Te narzędzia diagnostyczne oparte na skryptach ułatwiają identyfikowanie typowych problemów, które mają wpływ na agenta gościa maszyny wirtualnej platformy Azure i ogólną kondycję maszyny wirtualnej.
Jeśli występują problemy z wydajnością maszyn wirtualnych, przed skontaktowaniem się z pomocą techniczną uruchom te narzędzia.
Wyświetlanie stanu rozszerzenia
Szablony usługi Azure Resource Manager można wykonywać z poziomu programu Azure PowerShell. Po wykonaniu szablonu stan rozszerzenia można wyświetlić w Eksploratorze zasobów platformy Azure lub w narzędziach wiersza polecenia.
Oto przykład:
Azure PowerShell:
Get-AzVM -ResourceGroupName $RGName -Name $vmName -Status
Oto przykładowe dane wyjściowe:
Extensions: {
"ExtensionType": "Microsoft.Compute.CustomScriptExtension",
"Name": "myCustomScriptExtension",
"SubStatuses": [
{
"Code": "ComponentStatus/StdOut/succeeded",
"DisplayStatus": "Provisioning succeeded",
"Level": "Info",
"Message": " Directory: C:\\temp\\n\\n\\nMode LastWriteTime Length Name
\\n---- ------------- ------ ---- \\n-a--- 9/1/2015 2:03 AM 11
test.txt \\n\\n",
"Time": null
},
{
"Code": "ComponentStatus/StdErr/succeeded",
"DisplayStatus": "Provisioning succeeded",
"Level": "Info",
"Message": "",
"Time": null
}
]
}
Rozwiązywanie problemów z błędami rozszerzeń
Sprawdź, czy agent maszyny wirtualnej jest uruchomiony i gotowy
Agent maszyny wirtualnej jest wymagany do zarządzania, instalowania i wykonywania rozszerzeń. Jeśli agent maszyny wirtualnej nie jest uruchomiony lub nie zgłosi stanu Gotowe na platformę Azure, rozszerzenie nie działa poprawnie.
Następujące strony dotyczące rozwiązywania problemów z agentem maszyny wirtualnej:
- Rozwiązywanie problemów z agentem gościa platformy Windows azure dla maszyny wirtualnej z systemem Windows
- Rozwiązywanie problemów z agentem systemu Linux platformy Azure dla maszyny wirtualnej z systemem Linux
Sprawdzanie konkretnego przewodnika rozwiązywania problemów z rozszerzeniem
Niektóre rozszerzenia mają określoną stronę opisującą sposób ich rozwiązywania. Listę tych rozszerzeń i stron można znaleźć na stronie Rozwiązywanie problemów z rozszerzeniami .
Wyświetlanie stanu rozszerzenia
Jak wyjaśniono wcześniej, stan rozszerzenia można znaleźć, uruchamiając polecenie cmdlet programu PowerShell:
Get-AzVM -ResourceGroupName $RGName -Name $vmName -Status
Lub polecenie interfejsu wiersza polecenia:x
az vm extension show -g <RG Name> --vm-name <VM Name> --name <Extension Name>
Lub w witrynie Azure Portal, przechodząc do bloku maszyny wirtualnej / ustawień / rozszerzeń. Następnie możesz kliknąć rozszerzenie i sprawdzić jego stan i komunikat.
Ponowne uruchamianie rozszerzenia na maszynie wirtualnej
Jeśli uruchamiasz skrypty na maszynie wirtualnej przy użyciu rozszerzenia niestandardowego skryptu, czasami może wystąpić błąd polegający na tym, że maszyna wirtualna została utworzona pomyślnie, ale skrypt zakończy się niepowodzeniem. W tych warunkach zalecanym sposobem odzyskania po tym błędzie jest usunięcie rozszerzenia i ponowne uruchomienie szablonu.
Uwaga / Notatka
W przyszłości ta funkcja zostanie rozszerzona, aby usunąć konieczność odinstalowania rozszerzenia.
Usuwanie rozszerzenia z programu Azure PowerShell
Remove-AzVMExtension -ResourceGroupName $RGName -VMName $vmName -Name "myCustomScriptExtension"
Po usunięciu rozszerzenia można ponownie wykonać szablon w celu uruchomienia skryptów na maszynie wirtualnej.
Wyzwalanie nowego elementu GoalState na maszynie wirtualnej
Może się okazać, że rozszerzenie nie jest uruchomione, ponieważ brakuje generatora certyfikatów CRP systemu Windows Azure. Ten certyfikat pomaga chronić ustawienia rozszerzenia podczas transportu. Ten certyfikat jest automatycznie ponownie wygenerowany przez ponowne uruchomienie agenta gościa systemu Windows z poziomu maszyny wirtualnej:
- Otwórz Menedżera zadań
- Przejdź do karty Szczegóły
- Lokalizowanie procesu WindowsAzureGuestAgent.exe
- Kliknij prawym przyciskiem myszy i wybierz pozycję "Zakończ zadanie". Proces jest automatycznie uruchamiany ponownie
Możesz również wyzwolić nową wartość GoalState na maszynie wirtualnej, wykonując polecenie "Maszyna wirtualna ponownie zastosować". Ponowne zastosowania maszyny wirtualnej to interfejs API wprowadzony w 2020 r. w celu ponownego zastosowania stanu maszyny wirtualnej. Zalecamy wykonanie tej czynności w czasie, gdy można tolerować krótki przestój maszyny wirtualnej. Ponowne zastosowania zwykle nie uruchamiają ponownie maszyny wirtualnej, ale w rzadkich przypadkach może ona wyzwolić oczekującą aktualizację, która wymaga ponownego uruchomienia.
Azure Portal:
W portalu wybierz maszynę wirtualną, a następnie w okienku po lewej stronie w obszarze Pomoc techniczna i rozwiązywanie problemów wybierz pozycję Ponownie wdróż i ponownie zastosuj, a następnie wybierz pozycję Ponownie zastosuj.
Azure PowerShell (zastąp nazwę grupy zasobów i nazwę maszyny wirtualnej swoimi wartościami)::
Set-AzVM -ResourceGroupName <RG Name> -Name <VM Name> -Reapply
Interfejs wiersza polecenia platformy Azure (zastąp wartościami Nazwa grupy zasobów i Nazwa maszyny wirtualnej):
az vm reapply -g <RG Name> -n <VM Name>
Jeśli aplikacja maszyny wirtualnej nie zadziałała, możesz dodać nowy pusty dysk danych do maszyny wirtualnej z portalu zarządzania Platformy Azure, a następnie usunąć go później po dodaniu certyfikatu z powrotem.
Przyjrzyj się dziennikom rozszerzeń wewnątrz maszyny wirtualnej
Jeśli poprzednie kroki nie zadziałały i jeśli rozszerzenie jest nadal w stanie niepowodzenia, następnym krokiem jest przyjrzenie się jego dziennikom wewnątrz maszyny wirtualnej.
Na maszynie wirtualnej z systemem Windows dzienniki rozszerzenia domyślnie znajdują się w
C:\WindowsAzure\Logs\Plugins
Ustawienia rozszerzenia i pliki stanu są domyślnie włączone
C:\Packages\Plugins
Na maszynie wirtualnej z systemem Linux dzienniki rozszerzenia są domyślnie przechowywane w
/var/log/azure/
Ustawienia rozszerzenia i pliki stanu według szczegółów są dostępne
/var/lib/waagent/
Każde rozszerzenie jest inne, ale zwykle są zgodne z podobnymi zasadami:
Pakiety rozszerzeń i pliki binarne są pobierane na maszynie wirtualnej (na przykład: "/var/lib/waagent/custom-script/download/1" dla systemu Linux lub "C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\1.10.12\Downloads\0" dla systemu Windows).
Ich konfiguracja i ustawienia są przekazywane z platformy Azure do programu obsługi rozszerzeń za pośrednictwem agenta maszyny wirtualnej (na przykład: "/var/lib/waagent/Microsoft.Azure.Extensions.CustomScript-2.1.3/config" dla systemu Linux lub "C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\1.10.12\RuntimeSettings" dla systemu Windows)
Programy obsługi rozszerzeń wewnątrz maszyny wirtualnej zapisują się w pliku stanu (na przykład: "/var/lib/waagent/Microsoft.Azure.Extensions.CustomScript-2.1.3/status/1.status" dla systemu Linux lub "C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\1.10.12\Status" dla systemu Windows), który jest raportowany do platformy Azure. Ten stan jest zgłaszany za pośrednictwem programu PowerShell, interfejsu wiersza polecenia lub w bloku rozszerzenia maszyny wirtualnej w witrynie Azure Portal.
Piszą również szczegółowe dzienniki wykonywania (na przykład: "var/log/azure/Microsoft.Azure.Extensions.CustomScript/handler.log" dla cse Linux w wersji 2.1.16 lub nowszej, "/var/log/azure/custom-script/handler.log" dla starszych wersji systemu Linux CSE lub "C:\WindowsAzure\Logs\Plugins\Microsoft.Compute.CustomScriptExtension\1.10.12\CustomScriptHandler.log" dla systemu Windows).
Jeśli maszyna wirtualna zostanie ponownie utworzona z istniejącej maszyny wirtualnej
Może się zdarzyć, że tworzysz maszynę wirtualną platformy Azure na podstawie wyspecjalizowanego dysku pochodzącego z innej maszyny wirtualnej platformy Azure. W takim przypadku istnieje możliwość, że stara maszyna wirtualna zawiera rozszerzenia, pliki binarne, dzienniki i pliki stanu pozostawione w lewo. Nowy model maszyny wirtualnej nie jest świadomy stanów rozszerzeń poprzedniej maszyny wirtualnej i może zgłosić nieprawidłowy stan tych rozszerzeń. Zdecydowanie zalecamy usunięcie rozszerzeń ze starej maszyny wirtualnej przed utworzeniem nowego, a następnie ponowne zainstalowanie tych rozszerzeń po utworzeniu nowej maszyny wirtualnej. To samo może wystąpić podczas tworzenia uogólnionego obrazu na podstawie istniejącej maszyny wirtualnej platformy Azure. Zachęcamy do usunięcia rozszerzeń, aby uniknąć niespójnego stanu z rozszerzeń.
Znane problemy
Program PowerShell nie jest rozpoznawany jako wewnętrzne lub zewnętrzne polecenie
W danych wyjściowych rozszerzenia RunCommand są wyświetlane następujące wpisy o błędzie:
RunCommandExtension failed with "'powershell' isn't recognized as an internal or external command,"
Analiza
Rozszerzenia są uruchamiane na koncie systemu lokalnego, więc istnieje możliwość, że powershell.exe działa prawidłowo podczas nawiązywania połączenia RDP z maszyną wirtualną, ale kończy się niepowodzeniem po uruchomieniu z poleceniem RunCommand.
Solution
- Sprawdź, czy program PowerShell jest poprawnie wymieniony w zmiennej środowiskowej PATH:
- Otwórz panel sterowania
- System i zabezpieczenia
- System
- Karta Zaawansowane —> Zmienne środowiskowe
- W obszarze "Zmienne systemowe" kliknij pozycję Edytuj i upewnij się, że program PowerShell znajduje się w zmiennej środowiskowej PATH (zwykle: "C:\Windows\System32\WindowsPowerShell\v1.0")
- Uruchom ponownie maszynę wirtualną lub uruchom ponownie usługę WindowsAzureGuestAgent, a następnie spróbuj ponownie uruchomić polecenie.
Polecenie nie jest rozpoznawane jako wewnętrzne lub zewnętrzne polecenie
W pliku C:\WindowsAzure\Logs\Plugins<ExtensionName><Version>\CommandExecution.log zobaczysz następujące informacje:
Execution Error: '<command>' isn't recognized as an internal or external command, operable program or batch file.
Analiza
Rozszerzenia są uruchamiane na koncie systemu lokalnego, więc istnieje możliwość, że powershell.exe działa prawidłowo podczas nawiązywania połączenia RDP z maszyną wirtualną, ale kończy się niepowodzeniem po uruchomieniu z poleceniem RunCommand.
Solution
- Otwórz wiersz polecenia na maszynie wirtualnej i wykonaj polecenie w celu odtworzenia błędu. Agent maszyny wirtualnej używa cmd.exe administratora i może mieć pewne wstępnie skonfigurowane polecenie do wykonania za każdym razem, gdy polecenie cmd jest uruchamiane.
- Prawdopodobnie zmienna PATH jest nieprawidłowo skonfigurowana, ale zależy to od polecenia, które ma problem.
Agent VMAccessAgent kończy się niepowodzeniem z błędem Nie można zaktualizować ustawień połączenia pulpitu zdalnego dla konta administratora. Błąd: System.Runtime.InteropServices.COMException (0x800706D9): nie ma więcej punktów końcowych dostępnych z mapatora punktu końcowego.
W stanie rozszerzenia są widoczne następujące elementy:
Type Microsoft.Compute.VMAccessAgent
Version 2.4.8
Status Provisioning failed
Status level Error
Status message Cannot update Remote Desktop Connection settings for Administrator account. Error: System.Runtime.InteropServices.COMException (0x800706D9): There are no more endpoints available from the endpoint mapper. (Exception from HRESULT: 0x800706D9) at NetFwTypeLib.INetFwRules.GetEnumerator() at
Microsoft.WindowsAzure.GuestAgent.Plugins.JsonExtensions.VMAccess.RemoteDesktopManager.EnableRemoteDesktopFirewallRules()
at Microsoft.WindowsAzure.GuestAgent.Plugins.JsonExtensions.VMAccess.RemoteDesktopManager.EnableRemoteDesktop() at
Analiza
Ten błąd może wystąpić, gdy usługa Zapory systemu Windows nie jest uruchomiona.
Solution
Sprawdź, czy usługa Zapora systemu Windows jest włączona i uruchomiona. Jeśli tak nie jest, włącz go i uruchom — spróbuj ponownie uruchomić agenta VMAccessAgent.
Certyfikat zdalny jest nieprawidłowy zgodnie z procedurą walidacji.
W WaAppAgent.log zobaczysz następujące informacje
System.Net.WebException: The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel. ---> System.Security.
Authentication.AuthenticationException: The remote certificate is invalid according to the validation procedure.
Analiza
Prawdopodobnie brakuje certyfikatu głównego Baltimore CyberTrust w "Zaufanych głównych urzędach certyfikacji".
Solution
Otwórz konsolę certyfikatów za pomocą narzędzia certmgr.msc i sprawdź, czy istnieje certyfikat.
Narzędzie inspekcji ssl innej firmy, takie jak ZScaler, może spowodować przerwanie łańcucha certyfikatów. Należy skonfigurować takie narzędzia w celu obejścia inspekcji protokołu SSL.