Aktualisieren öffentlicher IP-Adressen, die an eine VM angefügt sind, von Basic zu Standard
Wichtig
Am 30. September 2025 werden öffentliche IP-Adressen für Basic-SKUs eingestellt. Weitere Informationen finden Sie in der offiziellen Ankündigung. Wenn Sie derzeit öffentliche IP-Adressen für Basic-SKUs verwenden, stellen Sie sicher, dass Sie vor dem Einstellungsdatum ein Upgrade auf öffentliche IP-Adressen für Standard-SKUs durchführen. In diesem Artikel wird der Upgradeprozess erläutert.
Weitere Informationen zur Einstellung öffentlicher Basic-SKU-IP-Adressen und zu den Vorteilen öffentlicher IP-Adressen der Standard-SKU finden Sie hier.
Upgradeübersicht
Dieses Skript aktualisiert alle öffentlichen IP-Adressen, die an eine VM angefügt sind, von Basic- auf Standard-SKU. Um das Upgrade durchzuführen, wird die Methode für die Zuordnung von öffentlichen IP-Adressen auf statisch festgelegt, bevor die Zuordnung zur VM aufgehoben wird. Nachdem die Zuordnung aufgehoben wurde, wird die öffentliche IP-SKU auf Standard aktualisiert, und die IP-Adresse wird erneut dem virtuellen Computer zugeordnet.
Da die öffentliche IP-Zuordnung vor dem Trennen von der VM auf „Statisch“ festgelegt wird, ändert sich die IP-Adresse während des Upgradevorgangs nicht, auch nicht im Falle eines Skriptfehlers. Das Modul überprüft, ob die Methode der öffentlichen IP-Zuordnung „Statisch“ ist, bevor die öffentliche IP-Adresse von der VM getrennt wird.
Das Modul protokolliert alle Upgradeaktivitäten in einer Datei mit dem Namen PublicIPUpgrade.log
, die am gleichen Speicherort erstellt wird, an dem das Modul (standardmäßig) ausgeführt wurde.
Einschränkungen/nicht unterstützte Szenarien
VMs mit NICs, die einem Load Balancer zugeordnet sind: Da die Load Balancer- und öffentlichen IP-SKUs, die einem virtuellen Computer zugeordnet sind, übereinstimmen müssen, ist es nicht möglich, die einem virtuellen Computer zugeordneten öffentlichen IP-Adressen auf Instanzebene zu aktualisieren, wenn die NICs des virtuellen Computers auch einem Load Balancer zugeordnet sind, entweder über back-End-Pool- oder NAT-Poolmitgliedschaft. Verwenden Sie die Skripts Upgraden eines Load Balancer Basic auf Standard SKU, um sowohl den Lastenausgleich als auch die öffentlichen IPs gleichzeitig zu aktualisieren.
VMs ohne Netzwerksicherheitsgruppe: VMs mit zu aktualisierenden IP-Adressen müssen eine Netzwerksicherheitsgruppe (Network Security Group, NSG) aufweisen, die entweder dem Subnetz jeder IP-Konfiguration mit einer öffentlichen IP-Adresse oder direkt der NIC zugeordnet ist. Dies liegt daran, dass öffentliche IP-Adressen der Standard-SKU standardmäßig sicher sind, was bedeutet, dass jeglicher Datenverkehr an die öffentliche IP-Adresse in einer NSG explizit zugelassen werden muss, um den virtuellen Computer zu erreichen. Öffentliche IP-Adressen der Basic-SKU lassen standardmäßig jeglichen Datenverkehr zu. Ein Upgrade öffentlicher IP-SKUs ohne NSG würde dazu führen, dass eingehender Internetdatenverkehr an die öffentliche IP-Adresse, der zuvor mit der Basic-SKU zulässig war, nach der Migration blockiert wird. Siehe: SKUs für öffentliche IP-Adressen
VM-Skalierungsgruppen mit öffentlichen IP-Konfigurationen: Wenn Sie über eine VM-Skalierungsgruppe (einheitliches Modell) mit öffentlichen IP-Konfigurationen pro Instanz verfügen, beachten Sie, dass diese Konfigurationen keine öffentlichen IP-Ressourcen sind und daher nicht aktualisiert werden können. Stattdessen können Sie die Basic-IP-Konfiguration entfernen und die SKU-Eigenschaft verwenden, um festzulegen, dass Standard-IP-Konfigurationen für jede Instanz der VM-Skalierungsgruppe erforderlich sind, wie hier gezeigt.
Voraussetzungen
- Installieren Sie die neuesten Version von PowerShell.
- Stellen Sie sicher, dass Sie das neueste Az PowerShell-Modul installiert haben (und installieren Sie ggf. das neueste Az PowerShell-Modul).
Herunterladen des Skripts
Laden Sie das Migrationsskript aus dem PowerShell-Katalog herunter.
PS C:\> Install-Module -Name AzureVMPublicIPUpgrade -Scope CurrentUser -Repository PSGallery -Force
Verwenden des Moduls
Verwenden Sie
Connect-AzAccount
, um eine Verbindung mit dem erforderlichen Microsoft Entra-Mandanten und dem Azure-Abonnement herzustellenPS C:\> Connect-AzAccount -Tenant <TenantId> -Subscription <SubscriptionId>
Suchen Sie den virtuellen Computer mit den angefügten öffentlichen Basic-IP-Adressen, die Sie aktualisieren möchten. Notieren Sie sich den Namen und den Namen der Ressourcengruppe.
Untersuchen Sie die Modulparameter:
- VMName [Zeichenfolge] Erforderlich: Dieser Parameter ist der Name Ihres virtuellen Computers.
- ResourceGroupName [string] Erforderlich: Dieser Parameter ist die Ressourcengruppe für Ihren virtuellen Computer mit den öffentlichen Basic-IP-Adressen, die Sie aktualisieren möchten.
Führen Sie den Upgrade-Befehl aus.
Beispielverwendungen des Skripts
Um ein Upgrade für einen einzelnen virtuellen Computer durchzuführen, übergeben Sie den VM-Namen und den Ressourcengruppennamen als Parameter.
Start-VMPublicIPUpgrade -VMName 'myVM' -ResourceGroupName 'myRG'
Um das Upgrade eines einzelnen virtuellen Computers auszuwerten, ohne Änderungen vorzunehmen, fügen Sie den -WhatIf-Parameter hinzu.
Start-VMPublicIPUpgrade -VMName 'myVM' -ResourceGroupName 'myRG' -WhatIf
Um alle VMs in einer Ressourcengruppe zu aktualisieren, überspringen Sie VMs ohne Netzwerksicherheitsgruppen.
Get-AzVM -ResourceGroupName 'myRG' | Start-VMPublicIPUpgrade -skipVMMissingNSG
Wiederherstellung nach fehlgeschlagener Migration
Wenn eine Migration aufgrund eines vorübergehenden Problems fehlschlägt, z. B. ein Netzwerkausfall oder ein Clientsystemproblem, kann die Migration erneut ausgeführt werden, um die VM und öffentliche IP-Adressen im Zielzustand zu konfigurieren. Bei der Ausführung gibt das Skript eine Wiederherstellungsprotokolldatei aus, die verwendet wird, um sicherzustellen, dass der virtuelle Computer ordnungsgemäß neu konfiguriert ist. Überprüfen Sie die Protokolldatei PublicIPUpgrade.log
, die an dem Speicherort erstellt wurde, an dem das Skript ausgeführt wurde.
Um nach einem fehlgeschlagenen Upgrade wiederherzustellen, übergeben Sie den Pfad der Wiederherstellungsprotokolldatei mit dem Parameter -recoverFromFile
an das Skript, und identifizieren Sie den virtuellen Computer, der wiederhergestellt werden soll, mit den Parametern -VMName
und -VMResourceGroup
oder -VMResourceID
, wie in diesem Beispiel gezeigt.
Start-VMPublicIPUpgrade -RecoverFromFile ./PublicIPUpgrade_Recovery_2020-01-01-00-00.csv -VMName myVM -VMResourceGroup -rg-myrg
Häufig gestellte Fragen
Wie lange dauert die Migration, und wie lange kann auf meine VM nicht über die öffentliche IP-Adresse zugegriffen werden?
Die Zeit, die zum Upgrade der öffentlichen IP-Adressen einer VM benötigt wird, hängt von der Anzahl der öffentlichen IP-Adressen und Netzwerkschnittstellen ab, die dem virtuellen Computer zugeordnet sind. Beim Testen dauert das Upgrade eines virtuellen Computers mit einer einzelnen NIC und einer öffentlichen IP-Adresse zwischen 1 und 2 Minuten. Jede NIC auf dem virtuellen Computer fügt etwa eine Minute hinzu, und jede öffentliche IP-Adresse fügt jeweils einige Sekunden hinzu.
Kann ich ein Rollback zu einer öffentlichen IP-Adresse der Basic-SKU durchführen?
Es ist nicht möglich, eine öffentliche IP-Adresse von Standard auf Basic herabzustufen.
Kann ich eine Migration vor der Ausführung testen?
Es gibt keine Möglichkeit, das Upgrade einer öffentlichen IP-Adresse auszuwerten, ohne die Aktion abzuschließen. Dieses Skript enthält jedoch einen -whatif
-Parameter, der überprüft, ob Ihre VM das Upgrade unterstützt, und führt die Schritte durch, ohne Maßnahmen zu ergreifen.
Unterstützt das Skript öffentliche IP-Adressen der Zonal Basic-SKU?
Ja, das Upgrade einer öffentlichen IP-Adresse einer Zonal Basic-SKU auf eine öffentliche IP-Adresse der Zonal Standard-SKU ist identisch und funktioniert im Skript.
Verwenden von Resource Graph zum Auflisten von VMs mit öffentlichen IP-Adressen, die ein Upgrade erfordern
Abfragen, um virtueller Computer (VMs) mit öffentlichen IP-Adressen der Basic-SKU aufzulisten
Diese Abfrage gibt eine Liste der VM-IDs zurück, an die die öffentlichen IP-Adressen der Basic-SKU angefügt sind.
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"