Udostępnij przez


Uaktualnianie publicznych adresów IP dołączonych do maszyny wirtualnej z warstwy Podstawowa do warstwy Standardowa

Ważne

30 września 2025 r. wycofano publiczne adresy IP Basic SKU. 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 jak najszybszym uaktualnieniu do publicznych adresów IP jednostki SKU w warstwie Standardowa. 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 jakiekolwiek publiczne adresy IP dołączone do maszyn wirtualnych z Podstawowego do Standardowego SKU. Aby przeprowadzić uaktualnienie, metoda alokacji publicznego adresu IP jest ustawiona na statyczną przed odłączaniem od maszyny wirtualnej. Po usunięciu skojarzenia, publiczny adres IP zostanie uaktualniony do wersji Standard, a następnie ponownie skojarzony z maszyną wirtualną.

Ponieważ alokacja publicznego adresu IP jest ustawiona na Statyczne przed odłączeniem od maszyny wirtualnej, adres IP nie zmieni się podczas procesu uaktualniania, nawet jeśli skrypt zakończy się niepowodzeniem. 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 Load Balancerem: ponieważ Load Balancer i jednostki SKU publicznych adresów IP skojarzonych z maszyną wirtualną muszą być zgodne, nie można uaktualnić publicznych adresów IP na poziomie instancji skojarzonych z maszyną wirtualną, gdy karty sieciowe maszyny wirtualnej są również skojarzone z Load Balancerem poprzez członkostwo w puli zaplecza lub puli NAT (Network Address Translation). Użyj skryptów Uaktualnij podstawowy moduł równoważenia obciążenia do warstwy Standard SKU, aby jednocześnie uaktualnić moduł równoważenia obciążenia i publiczne adresy IP.

  • 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 adresów IP SKU bez sieciowej grupy zabezpieczeń (NSG) spowodowałoby zablokowanie przychodzącego ruchu internetowego do publicznych adresów IP, który był wcześniej dozwolony przy użyciu SKU w warstwie Podstawowa po migracji. Zobacz: Jednostki SKU publicznych adresów IP

  • Zestawy skalowania maszyn wirtualnych z publicznymi konfiguracjami 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ć. Jak pokazano tutaj, można usunąć konfigurację IP w warstwie Podstawowa i użyć właściwości SKU, aby określić, że konfiguracje adresów IP w warstwie Standardowa są wymagane dla każdego wystąpienia zestawu skalowania maszyn wirtualnych.

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

Uwaga / Notatka

Ten proces wymaga pobrania i wykonania skryptu programu PowerShell. Musisz upewnić się, że masz odpowiednie uprawnienia w środowisku, aby wykonać to zadanie. Ponieważ moduły programu PowerShell są zainstalowane, sprawdź funkcję zabezpieczeń organizacji, aby ustalić, czy użycie skryptu narusza twoje praktyki zabezpieczeń. Odpowiadasz za zapewnienie, że użycie tego skryptu jest dozwolone w organizacji.

Pobierz skrypt migracji z Galeria programu PowerShell.

PS C:\> Install-Module -Name AzureVMPublicIPUpgrade -Scope CurrentUser -Repository PSGallery -Force

Korzystanie z modułu

  1. Użyj Connect-AzAccount polecenia, aby nawiązać połączenie z wymaganą dzierżawą Microsoft Entra i subskrypcją Azure.

    PS C:\> Connect-AzAccount -Tenant <TenantId> -Subscription <SubscriptionId>
    
  2. Znajdź maszynę wirtualną z dołączonymi podstawowymi publicznymi adresami IP, które chcesz uaktualnić. Zarejestruj swoją nazwę i nazwę grupy zasobów.

  3. 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ć.
  4. Uruchom polecenie Aktualizacja.

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ć system po nieudanym uaktualnieniu, przekaż ścieżkę do pliku dziennika odzyskiwania do skryptu za pomocą parametru -recoverFromFile i zidentyfikuj maszynę wirtualną do odzyskania, używając parametrów -VMName i -ResourceGroupName lub -VMResourceID, jak pokazano w tym przykładzie.

    Start-VMPublicIPUpgrade -RecoverFromFile ./PublicIPUpgrade_Recovery_2020-01-01-00-00.csv -VMName 'myVM' -ResourceGroupName 'rgName'

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 SKU w wersji Podstawowej?

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. Ten skrypt zawiera -whatif jednak parametr, który sprawdza, czy maszyna wirtualna obsługuje uaktualnienie i przeprowadza kroki bez podejmowania akcji.

Czy skrypt obsługuje publiczne adresy IP typu Zonal Basic SKU?

Tak, proces uaktualniania publicznego adresu IP SKU w strefie Zonal Basic do SKU w strefie Zonal Standard jest identyczny i działa w skrypcie.

Jeśli określę kartę sieciową skojarzoną z publicznym adresem IP przeznaczonym do migracji w puli zaplecza usługi Application Gateway, ten skrypt usunie go z puli?

Tak, jest on usuwany. Po uruchomieniu skryptu należy ręcznie ponownie przypisać kartę sieciową do puli zaplecza usługi Application Gateway. Alternatywnie można uniknąć tego problemu, jawnie określając prywatny adres IP w konfiguracji puli zaplecza przed migracją.

Używanie usługi Resource Graph do wyświetlania listy maszyn wirtualnych z publicznymi adresami IP wymagającymi uaktualnienia

Zapytać o listę maszyn wirtualnych z publicznym adresem IP SKU Basic.

To zapytanie zwraca listę identyfikatorów maszyn wirtualnych z przypisanymi publicznymi adresami IP w wersji SKU Basic.

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"

Następne kroki