Uaktualnianie publicznych adresów IP dołączonych do maszyny wirtualnej z warstwy Podstawowa do warstwy Standardowa
Ważne
30 września 2025 r. publiczne adresy IP jednostek SKU w warstwie Podstawowa zostaną wycofane. Więcej informacji znajdziesz w oficjalnym ogłoszeniu. Jeśli obecnie używasz publicznych adresów IP jednostki SKU w warstwie Podstawowa, pamiętaj o uaktualnieniu do publicznych adresów IP jednostki SKU w warstwie Standardowa przed datą wycofania. Ten artykuł pomoże Ci przejść przez proces uaktualniania.
Aby uzyskać więcej informacji na temat wycofywania publicznych adresów IP jednostki SKU w warstwie Podstawowa i korzyści z publicznych adresów IP jednostki SKU w warstwie Standardowa, zobacz tutaj
Omówienie uaktualnienia
Ten skrypt uaktualnia wszystkie publiczne adresy IP dołączone do maszyny wirtualnej z jednostki SKU w warstwie Podstawowa do Standardowa. Aby przeprowadzić uaktualnienie, metoda alokacji publicznego adresu IP jest ustawiona na statyczną przed odłączaniem od maszyny wirtualnej. Po usunięciu skojarzenia jednostka SKU publicznego adresu IP zostanie uaktualniona do warstwy Standardowa, a następnie adres IP zostanie ponownie skojarzony z maszyną wirtualną.
Ponieważ alokacja publicznego adresu IP jest ustawiona na "Statyczny" przed odłączeniem od maszyny wirtualnej, adres IP nie zmieni się podczas procesu uaktualniania, nawet w przypadku niepowodzenia skryptu. Moduł sprawdza dwukrotnie, czy metoda alokacji publicznego adresu IP jest "Statyczna" przed odłączenie publicznego adresu IP z maszyny wirtualnej.
Moduł rejestruje wszystkie działania uaktualniania do pliku o nazwie PublicIPUpgrade.log
, utworzonego w tej samej lokalizacji, w której moduł został wykonany (domyślnie).
Ograniczenia/ nieobsługiwane scenariusze
Maszyny wirtualne z kartami sieciowymi skojarzonymi z modułem równoważenia obciążenia: ponieważ moduł równoważenia obciążenia i jednostki SKU publicznych adresów IP skojarzonych z maszyną wirtualną muszą być zgodne, nie można uaktualnić publicznych adresów IP na poziomie wystąpienia skojarzonych z maszyną wirtualną, gdy karty sieciowe maszyny wirtualnej są również skojarzone z modułem równoważenia obciążenia za pośrednictwem członkostwa w puli zaplecza lub puli translatora adresów sieciowych. Użyj skryptów Uaktualnij podstawowy moduł równoważenia obciążenia do jednostki SKU w warstwie Standardowa, aby uaktualnić zarówno usługę Load Balancer, jak i publiczne adresy IP w tym samym czasie.
Maszyny wirtualne bez sieciowej grupy zabezpieczeń: maszyny wirtualne z adresami IP do uaktualnienia muszą mieć sieciową grupę zabezpieczeń skojarzona z podsiecią każdej konfiguracji adresu IP z publicznym adresem IP lub bezpośrednio z kartą sieciową. Dzieje się tak, ponieważ publiczne adresy IP jednostki SKU w warstwie Standardowa są domyślnie bezpieczne, co oznacza, że każdy ruch do publicznego adresu IP musi być jawnie dozwolony w sieciowej grupie zabezpieczeń, aby uzyskać dostęp do maszyny wirtualnej. Publiczne adresy IP jednostek SKU w warstwie Podstawowa domyślnie zezwalają na ruch. Uaktualnienie publicznych jednostek SKU adresów IP bez sieciowej grupy zabezpieczeń spowodowałoby przychodzący ruch internetowy do publicznego adresu IP, który był wcześniej dozwolony z zablokowaną jednostką SKU w warstwie Podstawowa po migracji. Zobacz: Jednostki SKU publicznych adresów IP
Zestawy skalowania maszyn wirtualnych z konfiguracjami publicznych adresów IP: jeśli masz zestaw skalowania maszyn wirtualnych (jednolity model) z konfiguracjami publicznych adresów IP na wystąpienie, pamiętaj, że te konfiguracje nie są zasobami publicznego adresu IP i jako takie nie można uaktualnić. Zamiast tego można usunąć konfigurację podstawowego adresu IP i użyć właściwości jednostki SKU, aby określić, że konfiguracje adresów IP w warstwie Standardowa są wymagane dla każdego wystąpienia zestawu skalowania maszyn wirtualnych, jak pokazano tutaj.
Wymagania wstępne
- Instalowanie najnowszej wersji programu PowerShell
- Upewnij się, że masz zainstalowany najnowszy moduł Az programu PowerShell (i zainstaluj najnowszy moduł Az programu PowerShell, jeśli nie)
Pobieranie skryptu
Pobierz skrypt migracji z Galeria programu PowerShell.
PS C:\> Install-Module -Name AzureVMPublicIPUpgrade -Scope CurrentUser -Repository PSGallery -Force
Korzystanie z modułu
Użyj
Connect-AzAccount
polecenia , aby nawiązać połączenie z wymaganą dzierżawą firmy Microsoft Entra i subskrypcją platformy AzurePS C:\> Connect-AzAccount -Tenant <TenantId> -Subscription <SubscriptionId>
Znajdź maszynę wirtualną z dołączonymi podstawowymi publicznymi adresami IP, które chcesz uaktualnić. Zarejestruj swoją nazwę i nazwę grupy zasobów.
Sprawdź parametry modułu:
- VmName [ciąg] Wymagane — ten parametr jest nazwą maszyny wirtualnej.
- Wymagany parametr ResourceGroupName [ciąg] — ten parametr jest grupą zasobów maszyny wirtualnej z dołączonymi podstawowymi publicznymi adresami IP, które chcesz uaktualnić.
Uruchom polecenie Uaktualnij.
Przykładowe zastosowania skryptu
Aby uaktualnić pojedynczą maszynę wirtualną, przekaż nazwę maszyny wirtualnej i nazwę grupy zasobów jako parametry.
Start-VMPublicIPUpgrade -VMName 'myVM' -ResourceGroupName 'myRG'
Aby ocenić uaktualnienie pojedynczej maszyny wirtualnej, bez wprowadzania żadnych zmian dodaj parametr -WhatIf.
Start-VMPublicIPUpgrade -VMName 'myVM' -ResourceGroupName 'myRG' -WhatIf
Aby uaktualnić wszystkie maszyny wirtualne w grupie zasobów, pomiń maszyny wirtualne, które nie mają sieciowych grup zabezpieczeń.
Get-AzVM -ResourceGroupName 'myRG' | Start-VMPublicIPUpgrade -skipVMMissingNSG
Odzyskiwanie po nieudanej migracji
Jeśli migracja nie powiedzie się z powodu przejściowego problemu, takiego jak awaria sieci lub problem z systemem klienta, migracja może zostać ponownie uruchomiona, aby skonfigurować maszynę wirtualną i publiczne adresy IP w stanie celu. Podczas wykonywania skrypt generuje plik dziennika odzyskiwania, który jest używany do zapewnienia prawidłowego ponownego skonfigurowania maszyny wirtualnej. Przejrzyj plik PublicIPUpgrade.log
dziennika utworzony w lokalizacji, w której został wykonany skrypt.
Aby odzyskać dane po nieudanym uaktualnieniu, przekaż ścieżkę pliku dziennika odzyskiwania do skryptu za pomocą -recoverFromFile
parametru i i i zidentyfikuj maszynę wirtualną do odzyskania -VMName
przy użyciu parametrów i -VMResourceGroup
lub -VMResourceID
, jak pokazano w tym przykładzie.
Start-VMPublicIPUpgrade -RecoverFromFile ./PublicIPUpgrade_Recovery_2020-01-01-00-00.csv -VMName myVM -VMResourceGroup -rg-myrg
Często zadawane pytania
Jak długo będzie trwać migracja i jak długo moja maszyna wirtualna będzie niedostępna w publicznym adresie IP?
Czas potrzebny na uaktualnienie publicznych adresów IP maszyny wirtualnej zależy od liczby publicznych adresów IP i interfejsów sieciowych skojarzonych z maszyną wirtualną. Podczas testowania uaktualnienie maszyny wirtualnej z pojedynczą kartą sieciową i publicznym adresem IP trwa od 1 do 2 minut. Każda karta sieciowa na maszynie wirtualnej dodaje około kolejnej minuty, a każdy publiczny adres IP dodaje kilka sekund.
Czy mogę przywrócić publiczny adres IP jednostki SKU w warstwie Podstawowa?
Nie można obniżyć poziomu publicznego adresu IP z warstwy Standardowa na Podstawowa.
Czy mogę przetestować migrację przed wykonaniem?
Nie ma możliwości oceny uaktualnienia publicznego adresu IP bez ukończenia akcji. Jednak ten skrypt zawiera -whatif
parametr, który sprawdza, czy maszyna wirtualna będzie obsługiwać uaktualnienie i przechodzi przez kroki bez podejmowania akcji.
Czy skrypt obsługuje publiczne adresy IP jednostek SKU strefowych w warstwie Podstawowa?
Tak, proces uaktualniania publicznego adresu IP jednostki SKU strefowej w warstwie Zonal do publicznego adresu IP jednostki SKU w warstwie Standardowa jest identyczny i działa w skrypcie.
Używanie usługi Resource Graph do wyświetlania listy maszyn wirtualnych z publicznymi adresami IP wymagającymi uaktualnienia
Wykonywanie zapytań dotyczących wyświetlania listy maszyn wirtualnych z publicznymi adresami IP jednostki SKU w warstwie Podstawowa
To zapytanie zwraca listę identyfikatorów maszyn wirtualnych z dołączonymi publicznymi adresami IP jednostki SKU w warstwie Podstawowa.
Resources
| where type =~ 'microsoft.compute/virtualmachines'
| project vmId = tolower(id), vmNics = properties.networkProfile.networkInterfaces
| join (
Resources |
where type =~ 'microsoft.network/networkinterfaces' |
project nicVMId = tolower(tostring(properties.virtualMachine.id)), allVMNicID = tolower(id), nicIPConfigs = properties.ipConfigurations)
on $left.vmId == $right.nicVMId
| join (
Resources
| where type =~ 'microsoft.network/publicipaddresses' and isnotnull(properties.ipConfiguration.id)
| where sku.name == 'Basic' // exclude to find all VMs with Public IPs
| project pipId = id, pipSku = sku.name, pipAssociatedNicId = tolower(tostring(split(properties.ipConfiguration.id, '/ipConfigurations/')[0])))
on $left.allVMNicID == $right.pipAssociatedNicId
| project vmId, pipId, pipSku
az graph query -q "Resources | where type =~ 'microsoft.compute/virtualmachines' | project vmId = tolower(id), vmNics = properties.networkProfile.networkInterfaces | join (Resources | where type =~ 'microsoft.network/networkinterfaces' | project nicVMId = tolower(tostring(properties.virtualMachine.id)), allVMNicID = tolower(id), nicIPConfigs = properties.ipConfigurations) on \$left.vmId == \$right.nicVMId | join ( Resources | where type =~ 'microsoft.network/publicipaddresses' and isnotnull(properties.ipConfiguration.id) | where sku.name == 'Basic' | project pipId = id, pipSku = sku.name, pipAssociatedNicId = tolower(tostring(split(properties.ipConfiguration.id, '/ipConfigurations/')[0]))) on \$left.allVMNicID == \$right.pipAssociatedNicId | project vmId, pipId, pipSku"