Upgraden, Sichern und Wiederherstellen einer SDN-Infrastruktur

Gilt für Windows Server 2022, Windows Server 2019, Windows Server 2016, Azure Stack HCI (Version 21H2 und 20H2)

In diesem Thema erfahren Sie, wie Sie eine SDN-Infrastruktur aktualisieren, sichern und wiederherstellen.

Upgraden der SDN-Infrastruktur

Die SDN-Infrastruktur kann von Windows Server 2016 auf Windows Server 2019 aktualisiert werden. Befolgen Sie für die Upgrade-Bestellung die gleiche Abfolge von Schritten wie im Abschnitt „Aktualisieren der SDN-Infrastruktur“. Vor dem Upgrade wird empfohlen, eine Sicherungskopie der Network Controller-Datenbank zu erstellen.

Verwenden Sie für Netzwerkcontroller-Computer das Cmdlet Get-NetworkControllerNode, um den Status des Knotens zu überprüfen, nachdem das Upgrade abgeschlossen wurde. Stellen Sie sicher, dass der Knoten wieder den Status „Up“ aufweist, bevor Sie das Upgrade der anderen Knoten durchführen. Nachdem Sie ein Upgrade für alle Netzwerkcontroller-Knoten durchgeführt haben, aktualisiert der Netzwerkcontroller die Mikrodienste, die innerhalb des Netzwerkcontroller-Clusters ausgeführt werden, innerhalb einer Stunde. Mit dem Cmdlet update-networkcontroller können Sie ein sofortiges Update auslösen.

Installieren Sie die gleichen Windows-Updates auf allen Betriebssystemkomponenten des SDN-Systems (Software Defined Networking), einschließlich:

  • SDN-fähige Hyper-V-Hosts
  • Netzwerkcontroller-VMs
  • Softwarelastenausgleich Mux-VMs
  • RAS-Gateway-VMs

Wichtig

Wenn Sie System Center Virtual Manager verwenden, müssen Sie es mit den neuesten Updaterollups aktualisieren.

Beim Aktualisieren der einzelnen Komponenten können Sie eine der Standardmethoden zum Installieren von Windows-Updates verwenden. Um jedoch minimale Ausfallzeiten für Workloads und die Integrität der Netzwerkcontroller-Datenbank sicherzustellen, gehen Sie folgendermaßen vor:

  1. Aktualisieren Sie die Verwaltungskonsolen.

    Installieren Sie die Updates auf jedem Computer, auf dem Sie das PowerShell-Modul des Netzwerkcontrollers verwenden. Einschließlich überall dort, wo Sie die RSAT-NetworkController-Rolle selbst installiert haben. Ausgenommen die Netzwerkcontroller-VMs selbst; Sie aktualisieren sie im nächsten Schritt.

  2. Installieren Sie auf der ersten Netzwerkcontroller-VM alle Updates und führen Sie einen Neustart durch.

  3. Bevor Sie mit der nächsten Netzwerkcontroller-VM fortfahren, verwenden Sie das Cmdlet get-networkcontrollernode, um den Status des Knotens zu überprüfen, den Sie aktualisiert und neu gestartet haben.

  4. Warten Sie während des Neustartzyklus, bis der Netzwerkcontroller-Knoten ausfällt und dann wieder hochfährt.

    Nach dem Neustart der VM kann es einige Minuten dauern, bis sie wieder in den Status Up wechselt. Für ein Beispiel der Ausgabe siehe

  5. Installieren Sie Updates auf jeder SLB-Mux-VM einzeln, um die kontinuierliche Verfügbarkeit der Lastenausgleichsinfrastruktur sicherzustellen.

  6. Aktualisieren Sie Hyper-V-Hosts und RAS-Gateways, beginnend mit den Hosts, die die RAS-Gateways enthalten, die sich im Standbymodus befinden.

    RAS-Gateway-VMs können nicht live migriert werden, ohne dass Mandanten-Verbindungen verloren gehen. Während des Update-Zyklus müssen Sie darauf achten, die Anzahl der Failover von Mandanten-Verbindungen auf ein neues RAS-Gateway zu minimieren. Durch die Koordinierung des Updates von Hosts und RAS-Gateways wird für jeden Mandanten ein Failover höchstens einmal ausgeführt.

    a. Evakuieren Sie den Host von VMs, die für die Livemigration geeignet sind.

    RAS-Gateway-VMs sollten auf dem Host verbleiben.

    b. Installieren Sie Updates auf jeder Gateway-VM auf diesem Host.

    c. Wenn für das Update ein Neustart der Gateway-VM erforderlich ist, starten Sie die VM neu.

    d. Installieren Sie Updates auf dem Host, der die soeben aktualisierte Gateway-VM enthält.

    e. Starten Sie den Host neu, falls dies für die Updates erforderlich ist.

    f. Wiederholen Sie dies für jeden weiteren Host mit einem Standby-Gateway.

    Wenn keine Standby-Gateways verbleiben, führen Sie dieselben Schritte für alle verbleibenden Hosts aus.

Beispiel: Verwenden des Cmdlets get-networkcontrollernode

In diesem Beispiel wird die Ausgabe für das Cmdlet get-networkcontrollernode in einem der Netzwerkcontroller-VMs ausgeführt.

Der Status der Knoten, der in der Beispielausgabe angezeigt wird, lautet:

  • NCNode1.contoso.com = Down
  • NCNode2.contoso.com = Up
  • NCNode3.contoso.com = Up

Wichtig

Sie müssen einige Minuten warten, bis sich der Status für den Knoten in Up ändert, bevor Sie weitere Knoten einzeln aktualisieren.

Nachdem Sie ein Update für alle Netzwerkcontroller-Knoten durchgeführt haben, aktualisiert der Netzwerkcontroller die Mikrodienste, die innerhalb des Netzwerkcontroller-Clusters ausgeführt werden, innerhalb einer Stunde.

Tipp

Sie können ein sofortiges Update mithilfe des Cmdlets update-networkcontroller auslösen.

PS C:\> get-networkcontrollernode
Name            : NCNode1.contoso.com
Server          : NCNode1.Contoso.com
FaultDomain     : fd:/NCNode1.Contoso.com
RestInterface   : Ethernet
NodeCertificate :
Status          : Down

Name            : NCNode2.Contoso.com
Server          : NCNode2.contoso.com
FaultDomain     : fd:/ NCNode2.Contoso.com
RestInterface   : Ethernet
NodeCertificate :
Status          : Up

Name            : NCNode3.Contoso.com
Server          : NCNode3.Contoso.com
FaultDomain     : fd:/ NCNode3.Contoso.com
RestInterface   : Ethernet
NodeCertificate :
Status          : Up

Beispiel: Verwenden des Cmdlets update-networkcontroller

In diesem Beispiel sehen Sie die Ausgabe für das Cmdlet update-networkcontroller, um die Aktualisierung des Netzwerkcontrollers zu erzwingen.

Wichtig

Führen Sie dieses Cmdlet aus, wenn Sie keine Updates mehr installieren müssen.

PS C:\> update-networkcontroller
NetworkControllerClusterVersion NetworkControllerVersion
------------------------------- ------------------------
10.1.1                          10.1.15

Sicherung der SDN-Infrastruktur

Regelmäßige Sicherungen der Netzwerkcontroller-Datenbank gewährleisten die Geschäftskontinuität im Falle eines Notfalls oder Datenverlusts. Das Sichern der Netzwerkcontroller-VMs ist nicht ausreichend, da dadurch nicht sichergestellt wird, dass die Sitzung über mehrere Netzwerkcontroller-Knoten hinweg fortgesetzt wird.

Anforderungen:

  • Eine SMB-Freigabe und Anmeldeinformationen mit Lese-/Schreibberechtigungen für die Freigabe und das Dateisystem.
  • Sie können optional ein gruppenverwaltetes Dienstkonto (GMSA) verwenden, wenn der Netzwerkcontroller ebenfalls mit einer GMSA installiert wurde.

Vorgehensweise:

  1. Verwenden Sie die VM-Sicherungsmethode Ihrer Wahl, oder verwenden Sie Hyper-V, um eine Kopie jeder Netzwerkcontroller-VM zu exportieren.

    Durch das Sichern der Netzwerkcontroller-VM wird sichergestellt, dass die erforderlichen Zertifikate zum Entschlüsseln der Datenbank vorhanden sind.

  2. Wenn Sie System Center Virtual Machine Manager (SCVMM) verwenden, beenden Sie den SCVMM-Dienst und sichern Sie ihn über SQL Server.

    Das Ziel hier ist sicherzustellen, dass während dieser Zeit keine Updates an SCVMM vorgenommen werden, was zu einer Inkonsistenz zwischen der Sicherung des Netzwerkcontrollers und SCVMM führen könnte.

    Wichtig

    Starten Sie den SCVMM-Dienst nicht neu, bis die Sicherung des Netzwerkcontrollers abgeschlossen ist.

  3. Sichern Sie die Netzwerkcontroller-Datenbank mit dem Cmdlet new-networkcontrollerbackup.

  4. Überprüfen Sie den Abschluss und den Erfolg der Sicherung mit dem Cmdlet get-networkcontrollerbackup.

  5. Wenn Sie SCVMM verwenden, starten Sie den SCVMM-Dienst.

Beispiel: Sichern der Netzwerkcontroller-Datenbank

$URI = "https://NC.contoso.com"
$Credential = Get-Credential

# Get or Create Credential object for File share user

$ShareUserResourceId = "BackupUser"

$ShareCredential = Get-NetworkControllerCredential -ConnectionURI $URI -Credential $Credential | Where {$_.ResourceId -eq $ShareUserResourceId }
If ($ShareCredential -eq $null) {
    $CredentialProperties = New-Object Microsoft.Windows.NetworkController.CredentialProperties
    $CredentialProperties.Type = "usernamePassword"
    $CredentialProperties.UserName = "contoso\alyoung"
    $CredentialProperties.Value = "<Password>"

    $ShareCredential = New-NetworkControllerCredential -ConnectionURI $URI -Credential $Credential -Properties $CredentialProperties -ResourceId $ShareUserResourceId -Force
}

# Create backup

$BackupTime = (get-date).ToString("s").Replace(":", "_")

$BackupProperties = New-Object Microsoft.Windows.NetworkController.NetworkControllerBackupProperties
$BackupProperties.BackupPath = "\\fileshare\backups\NetworkController\$BackupTime"
$BackupProperties.Credential = $ShareCredential

$Backup = New-NetworkControllerBackup -ConnectionURI $URI -Credential $Credential -Properties $BackupProperties -ResourceId $BackupTime -Force

Beispiel: Überprüfen des Status eines Netzwerkcontroller-Sicherungsvorgangs

PS C:\ > Get-NetworkControllerBackup -ConnectionUri $URI -Credential $Credential -ResourceId $Backup.ResourceId
| ConvertTo-JSON -Depth 10
{
    "Tags":  null,
    "ResourceRef":  "/networkControllerBackup/2017-04-25T16_53_13",
    "InstanceId":  "c3ea75ae-2892-4e10-b26c-a2243b755dc8",
    "Etag":  "W/\"0dafea6c-39db-401b-bda5-d2885ded470e\"",
    "ResourceMetadata":  null,
    "ResourceId":  "2017-04-25T16_53_13",
    "Properties":  {
                    "BackupPath":  "\\\\fileshare\backups\NetworkController\\2017-04-25T16_53_13",
                    "ErrorMessage":  "",
                    "FailedResourcesList":  [

                                            ],
                    "SuccessfulResourcesList":  [
                                                    "/networking/v1/credentials/11ebfc10-438c-4a96-a1ee-8a048ce675be",
                                                    "/networking/v1/credentials/41229069-85d4-4352-be85-034d0c5f4658",
                                                    "/networking/v1/credentials/b2a82c93-2583-4a1f-91f8-232b801e11bb",
                                                    "/networking/v1/credentials/BackupUser",
                                                    "/networking/v1/credentials/fd5b1b96-b302-4395-b6cd-ed9703435dd1",
                                                    "/networking/v1/virtualNetworkManager/configuration",
                                                    "/networking/v1/virtualSwitchManager/configuration",
                                                    "/networking/v1/accessControlLists/f8b97a4c-4419-481d-b757-a58483512640",
                                                    "/networking/v1/logicalnetworks/24fa1af9-88d6-4cdc-aba0-66e38c1a7bb8",
                                                    "/networking/v1/logicalnetworks/48610528-f40b-4718-938e-99c2be76f1e0",
                                                    "/networking/v1/logicalnetworks/89035b49-1ee3-438a-8d7a-f93cbae40619",
                                                    "/networking/v1/logicalnetworks/a9c8eaa0-519c-4988-acd6-11723e9efae5",
                                                    "/networking/v1/logicalnetworks/d4ea002c-c926-4c57-a178-461d5768c31f",
                                                    "/networking/v1/macPools/11111111-1111-1111-1111-111111111111",
                                                    "/networking/v1/loadBalancerManager/config",
                                                    "/networking/v1/publicIPAddresses/2c502b2d-b39a-4be1-a85a-55ef6a3a9a1d",
                                                    "/networking/v1/GatewayPools/Default",
                                                    "/networking/v1/servers/4c4c4544-0058-5810-8056-b4c04f395931",
                                                    "/networking/v1/servers/4c4c4544-0058-5810-8057-b4c04f395931",
                                                    "/networking/v1/servers/4c4c4544-0058-5910-8056-b4c04f395931",
                                                    "/networking/v1/networkInterfaces/058430d3-af43-4328-a440-56540f41da50",
                                                    "/networking/v1/networkInterfaces/08756090-6d55-4dec-98d5-80c4c5a47db8",
                                                    "/networking/v1/networkInterfaces/2175d74a-aacd-44e2-80d3-03f39ea3bc5d",
                                                    "/networking/v1/networkInterfaces/2400c2c3-2291-4b0b-929c-9bb8da55851a",
                                                    "/networking/v1/networkInterfaces/4c695570-6faa-4e4d-a552-0b36ed3e0962",
                                                    "/networking/v1/networkInterfaces/7e317638-2914-42a8-a2dd-3a6d966028d6",
                                                    "/networking/v1/networkInterfaces/834e3937-f43b-4d3c-88be-d79b04e63bce",
                                                    "/networking/v1/networkInterfaces/9d668fe6-b1c6-48fc-b8b1-b3f98f47d508",
                                                    "/networking/v1/networkInterfaces/ac4650ac-c3ef-4366-96e7-d9488fb661ba",
                                                    "/networking/v1/networkInterfaces/b9f23e35-d79e-495f-a1c9-fa626b85ae13",
                                                    "/networking/v1/networkInterfaces/fdd929f1-f64f-4463-949a-77b67fe6d048",
                                                    "/networking/v1/virtualServers/15a891ee-7509-4e1d-878d-de0cb4fa35fd",
                                                    "/networking/v1/virtualServers/57416993-b410-44fd-9675-727cd4e98930",
                                                    "/networking/v1/virtualServers/5f8aebdc-ee5b-488f-ac44-dd6b57bd316a",
                                                    "/networking/v1/virtualServers/6c812217-5931-43dc-92a8-1da3238da893",
                                                    "/networking/v1/virtualServers/d78b7fa3-812d-4011-9997-aeb5ded2b431",
                                                    "/networking/v1/virtualServers/d90820a5-635b-4016-9d6f-bf3f1e18971d",
                                                    "/networking/v1/loadBalancerMuxes/5f8aebdc-ee5b-488f-ac44-dd6b57bd316a_suffix",
                                                    "/networking/v1/loadBalancerMuxes/d78b7fa3-812d-4011-9997-aeb5ded2b431_suffix",
                                                    "/networking/v1/loadBalancerMuxes/d90820a5-635b-4016-9d6f-bf3f1e18971d_suffix",
                                                    "/networking/v1/Gateways/15a891ee-7509-4e1d-878d-de0cb4fa35fd_suffix",
                                                    "/networking/v1/Gateways/57416993-b410-44fd-9675-727cd4e98930_suffix",
                                                    "/networking/v1/Gateways/6c812217-5931-43dc-92a8-1da3238da893_suffix",
                                                    "/networking/v1/virtualNetworks/b3dbafb9-2655-433d-b47d-a0e0bbac867a",
                                                    "/networking/v1/virtualNetworks/d705968e-2dc2-48f2-a263-76c7892fb143",
                                                    "/networking/v1/loadBalancers/24fa1af9-88d6-4cdc-aba0-66e38c1a7bb8_10.127.132.2",
                                                    "/networking/v1/loadBalancers/24fa1af9-88d6-4cdc-aba0-66e38c1a7bb8_10.127.132.3",
                                                    "/networking/v1/loadBalancers/24fa1af9-88d6-4cdc-aba0-66e38c1a7bb8_10.127.132.4"
                                                ],
                    "InProgressResourcesList":  [

                                                ],
                    "ProvisioningState":  "Succeeded",
                    "Credential":  {
                                        "Tags":  null,
                                        "ResourceRef":  "/credentials/BackupUser",
                                        "InstanceId":  "00000000-0000-0000-0000-000000000000",
                                        "Etag":  null,
                                        "ResourceMetadata":  null,
                                        "ResourceId":  null,
                                        "Properties":  null
                                    }
                }
}

Wiederherstellen der SDN-Infrastruktur aus einer Sicherung

Wenn Sie alle erforderlichen Komponenten aus der Sicherung wiederherstellen, kehrt die SDN-Umgebung in einen Betriebszustand zurück.

Wichtig

Die Schritte variieren je nach Anzahl der wiederhergestellten Komponenten.

  1. Stellen Sie bei Bedarf Hyper-V-Hosts und den erforderlichen Speicher erneut bereit.

  2. Stellen Sie bei Bedarf die Netzwerkcontroller-VMs, RAS-Gateway-VMs und Mux-VMs aus der Sicherung wieder her.

  3. Beenden Sie den NC-Host-Agent und den SLB-Host-Agent auf allen Hyper-V-Hosts:

    stop-service slbhostagent
    
    stop-service nchostagent
    
  4. Beenden Sie RAS-Gateway-VMs.

  5. Beenden Sie SLB-Mux-VMs.

  6. Stellen Sie den Netzwerkcontroller mit dem Cmdlet new-networkcontrollerrestore wieder her.

  7. Überprüfen Sie die Wiederherstellung ProvisioningState, um zu erfahren, wann die Wiederherstellung erfolgreich abgeschlossen wurde.

  8. Wenn Sie SCVMM verwenden, stellen Sie die SCVMM-Datenbank mithilfe der Sicherung wieder her, die gleichzeitig mit der Netzwerkcontroller-Sicherung erstellt wurde.

  9. Wenn Sie Workload-VMs aus der Sicherung wiederherstellen möchten, führen Sie dies jetzt aus.

  10. Überprüfen Sie die Integrität Ihres Systems mit dem Cmdlet debug-networkcontrollerconfigurationstate.

$cred = Get-Credential
Debug-NetworkControllerConfigurationState -NetworkController "https://NC.contoso.com" -Credential $cred

Fetching ResourceType:     accessControlLists
Fetching ResourceType:     servers
Fetching ResourceType:     virtualNetworks
Fetching ResourceType:     networkInterfaces
Fetching ResourceType:     virtualGateways
Fetching ResourceType:     loadbalancerMuxes
Fetching ResourceType:     Gateways

Beispiel: Wiederherstellen einer Netzwerkcontroller-Datenbank

$URI = "https://NC.contoso.com"
$Credential = Get-Credential

$ShareUserResourceId = "BackupUser"
$ShareCredential = Get-NetworkControllerCredential -ConnectionURI $URI -Credential $Credential | Where {$_.ResourceId -eq $ShareUserResourceId }

$RestoreProperties = New-Object Microsoft.Windows.NetworkController.NetworkControllerRestoreProperties
$RestoreProperties.RestorePath = "\\fileshare\backups\NetworkController\2017-04-25T16_53_13"
$RestoreProperties.Credential = $ShareCredential

$RestoreTime = (Get-Date).ToString("s").Replace(":", "_")
New-NetworkControllerRestore -ConnectionURI $URI -Credential $Credential -Properties $RestoreProperties -ResourceId $RestoreTime -Force

Beispiel: Überprüfen des Status einer Netzwerkcontroller-Datenbankwiederherstellung

PS C:\ > get-networkcontrollerrestore -connectionuri $uri -credential $cred -ResourceId $restoreTime | convertto-json -depth 10
{
    "Tags":  null,
    "ResourceRef":  "/networkControllerRestore/2017-04-26T15_04_44",
    "InstanceId":  "22edecc8-a613-48ce-a74f-0418789f04f6",
    "Etag":  "W/\"f14f6b84-80a7-4b73-93b5-59a9c4b5d98e\"",
    "ResourceMetadata":  null,
    "ResourceId":  "2017-04-26T15_04_44",
    "Properties":  {
                    "RestorePath":  "\\\\sa18fs\\sa18n22\\NetworkController\\2017-04-25T16_53_13",
                    "ErrorMessage":  null,
                    "FailedResourcesList":  null,
                    "SuccessfulResourcesList":  null,
                    "ProvisioningState":  "Succeeded",
                    "Credential":  null
                }
}

Informationen zu möglicherweise angezeigten Konfigurationsstatusmeldungen finden Sie unter Problembehandlung für den softwaredefinierten Netzwerkstapel von Windows Server 2016.