Lastenausgleich für Netzwerkdatenverkehr in einem SDN-Fabric mit VMM

Wichtig

Diese Version von Virtual Machine Manager (VMM) hat das Ende des Supports erreicht. Es wird empfohlen, ein Upgrade auf VMM 2022 durchzuführen.

Sie können mithilfe des Software Load Balancers (SLB) den Netzwerkdatenverkehr gleichmäßig auf die Workloads in SDN (Software Defined Networking) verteilen, die von den Cloud-Dienstanbietern und Mandanten verwaltet werden. Weitere Informationen finden Sie unter Software Load Balancer (SLB).

System Center Virtual Machine Manager (VMM) unterstützt die folgenden beiden Szenarien für den Lastenausgleich:

  • Lastenausgleich des externen Netzwerkdatenverkehrs: In diesem Szenario wird der Lastenausgleich für den Netzwerkdatenverkehr aus einem externen Netzwerk durchgeführt. Der Lastenausgleich erfolgt über eine öffentliche virtuelle IP-Adresse (VIP). Die Arbeitsauslastungs-VMs können mit einem VM-Netzwerk ohne Isolation oder mit einem VM-Netzwerk mit aktivierter Netzwerkvirtualisierung verbunden werden.

  • Lastenausgleich des internen Netzwerkdatenverkehrs: In diesem Szenario wird der Lastenausgleich für den Netzwerkdatenverkehr von Arbeitsauslastungen im VM-Netzwerk mit aktivierter Netzwerkvirtualisierung durchgeführt. Der Lastenausgleich erfolgt über eine VIP.

    Hinweis

    VMM 2016 unterstützt die Konfiguration des Lastenausgleichs mithilfe von PowerShell. Die Konfiguration mit Dienstvorlagen wird derzeit nicht unterstützt.

In diesem Artikel wird erläutert, wie der Lastenausgleich von Arbeitsauslastungs-VMs mithilfe von PowerShell durchgeführt wird.

Hinweis

  • Ab VMM 2019 UR1 wird der Typ von Ein verbundenes Netzwerk in Verbundenes Netzwerk geändert.
  • Ab VMM 2019 UR2 wird IPv6 unterstützt.

Vorbereitung

Stellen Sie Folgendes sicher:

Erstellen einer VIP-Vorlage

Gehen Sie wie folgt vor, um die VIPs für den Lastenausgleich der Arbeitsauslastungs-VMs (DIPs) zu konfigurieren.

  1. Wählen Sie in der VMM-KonsoleFabric-VIP-Vorlagen> aus. Klicken Sie mit der rechten Maustaste, und wählen Sie VIP-Vorlage erstellen aus.

    Screenshot: Name der VIP-Vorlage.

  2. Geben Sie auf der Seite Name den Namen und optional eine Beschreibung an. Geben Sie den virtuellen IP-Port an, der als Front-End-Port für den Netzwerkdatenverkehr verwendet wird. Geben Sie im Back-End-Port den Port an, an dem die Back-End-Workloads gehostet werden. Wählen Sie Weiter aus.

    Screenshot des VIP-Vorlagentyps.

  3. Wählen Sie unter Vorlagentyp festlegen die Option „Spezifisch“ aus. Wählen Sie als Hersteller „Microsoft“ aus. Wählen Sie als Modell „Microsoft-Netzwerkcontroller“ aus. Wählen Sie Weiter aus.

    Screenshot der VIP-Protokolloptionen.

  4. Wählen Sie unter Protokolloptionen festlegen die Option „Benutzerdefiniert“ aus, und geben Sie als Protokollnamen „TCP/UDP“ ein. Wählen Sie Weiter aus.

    Hinweis

    SLB unterstützt nur Layer-4-Lastenausgleich von TCP/UDP-Datenverkehr. HTTP/HTTPS-Protokolle werden nicht unterstützt.

  5. Verwenden Sie für Persistenz und Lastenausgleich die Standardwerte. Wählen Sie Weiter aus.

    Screenshot des Integritätsmonitors.

    Hinweis

    SLB unterstützt keine Persistenz und verschiedene Lastenausgleichsmethoden. In der Standardeinstellung verwendet SLB für den Lastenausgleich den Roundrobin-Algorithmus.

  6. Fügen Sie unter Integritätsmonitore optional entsprechende Werte ein. Wählen Sie Weiter aus.

    Optionen: TCP und HTTP werden als Integritätsmonitorprotokolle unterstützt, wenn SLB verwendet wird.

  7. Überprüfen Sie die Einstellungen, und wählen Sie Fertig stellen aus.

Wenn die Vorlage erstellt wurde, finden Sie diese unter FabricVIP-Vorlagen.

Erstellen einer VIP mithilfe von PowerShell

Erstellen Sie eine VIP anhand der folgenden Beispielskripts. Wählen Sie das Skript je nach Art des Netzwerkdatenverkehrs aus, für den Sie den Lastenausgleich durchführen möchten:

Skript für das Erstellen einer VIP für den Lastenausgleich des externen Netzwerkdatenverkehrs

Skript für das Erstellen einer VIP für den Lastenausgleich des internen Netzwerkdatenverkehrs

Skript für das Erstellen einer VIP für den Lastenausgleich des externen Netzwerkdatenverkehrs

Im folgenden Beispielskript wird die VIP aus einem öffentlichen IP-Netzwerk erstellt, um den Lastenausgleich für die Arbeitsauslastungs-VMs WGB-001 und WGB-002 auf Port 80 durchzuführen.

Mit diesem Skript können Sie eine Lastenausgleichs-VIP erstellen, indem Sie auch die IPv6-VIP-Adresse übergeben.

Die Arbeitsauslastungs-VMs können mit einem Netzwerk ohne Isolation oder mit VM-Netzwerken mit aktivierter Netzwerkvirtualisierung verbunden werden.

Hinweis

  • Geben Sie im Abschnitt „Skriptparameter“ die tatsächlichen Werte ein, die der Testumgebung für die Beispiele in diesem Skript entsprechen.
  • Stellen Sie sicher, dass Sie das Skript auf einem VMM-Server oder auf einem Computer ausführen, auf dem die VMM-Konsole ausgeführt wird.
param(

[Parameter(Mandatory=$false)]
# Name of the Network Controller Network Service
# This value should be the name you gave the Network Controller service
# when you on-boarded the Network Controller to VMM
$LBServiceName = "NC",

[Parameter(Mandatory=$false)]
# Name of the workload VMs you want to load balance.
$VipMemberVMNames =  @("WGB-001","WGB-002"),

[Parameter(Mandatory=$false)]
# Name of the VIP VM Network
$VipNetworkName = "PublicVIP",


[Parameter(Mandatory=$false)]
# VIP address you want to assign from the VIP VM Network IP pool.
# Pick any VIP that falls within your VIP IP Pool range.
$VipAddress = "44.15.10.253",


[Parameter(Mandatory=$false)]
# The name of the VIP template you created via the VMM Console.
$VipTemplateName = "WebsiteHTTP",

[Parameter(Mandatory=$false)]
# Arbitrary but good to match the VIP you're using.
$VipName = "scvmm_44_15_10_253_80"

)

Import-Module virtualmachinemanager

$lb = Get-scLoadBalancer | where { $_.Service.Name -like $LBServiceName};
$vipNetwork = get-scvmnetwork -Name $VipNetworkName;

$vipMemberNics = @();
foreach ($vmName in $VipMemberVMNames)
{
$vm = get-scvirtualmachine -Name $vmName;
#    if ($vm.VirtualNetworkAdapters[0].VMNetwork.ID -ne $vipNetwork.ID)
#    {
#        $vm.VirtualNetworkAdapters[0] | set-scvirtualnetworkadapter -VMNetwork $vipNetwork;
#    }

$vipMemberNics += $vm.VirtualNetworkAdapters[0];
}

$existingVip = get-scloadbalancervip -Name $VipName
    if ($existingVip -ne $null)
{
#    foreach ($mem in $existingVip.VipMembers)
#    {
#        $mem | remove-scloadbalancervipmember;
#    }

    $existingVip | remove-scloadbalancervip;
}

$vipt = get-scloadbalancerviptemplate -Name $VipTemplateName;

$vip = New-SCLoadBalancerVIP -Name $VipName -LoadBalancer $lb
-IPAddress $VipAddress -LoadBalancerVIPTemplate $vipt
-FrontEndVMNetwork $vipNetwork
-BackEndVirtualNetworkAdapters $vipMemberNics;
Write-Output "Created VIP " $vip;

$vip = get-scloadbalancervip -Name $VipName;
Write-Output "VIP created successfully " $vip;

Skript für das Erstellen einer VIP für den Lastenausgleich des internen Netzwerkdatenverkehrs

Für das folgende Beispielskript wurde die neue ILB-VIP-Vorlage für den Lastenausgleich des Ports 443 mithilfe der im vorherigen Abschnitt beschriebenen Vorgehensweise erstellt. Das Skript erstellt eine VIP aus einem Mandanten-VM-Netzwerk, um einen Lastenausgleich für die VMs ILB-001 und ILB-002 durchzuführen, die Teil desselben Mandanten-VM-Netzwerks sind.

Mit diesem Skript können Sie eine Lastenausgleichs-VIP erstellen, indem Sie auch die IPv6-VIP-Adresse übergeben.

Hinweis

  • Im internen Lastenausgleichsszenario stammt die VIP aus dem Vm-Netzwerk des Mandanten. Somit ist $VipNetworkName der Name des Mandanten-VM-Netzwerks, mit dem die VMs verbunden sind. Stellen Sie sicher, dass die IPs des IP-Pools des Mandanten-VM-Netzwerks für VIPs reserviert sind. $VipAddress ist eine der IP-Adressen der reservierten VIPs.
  • Geben Sie im Abschnitt „Skriptparameter“ die tatsächlichen Werte ein, die der Testumgebung für die Beispiele in diesem Skript entsprechen.
  • Stellen Sie sicher, dass Sie das Skript auf einem VMM-Server oder auf einem Computer ausführen, auf dem die VMM-Konsole ausgeführt wird.
param(

[Parameter(Mandatory=$false)]
# Name of the Network Controller Network Service
# This value should be the name you gave the Network Controller service
# when you on-boarded the Network Controller to VMM
$LBServiceName = "NC",

[Parameter(Mandatory=$false)]
# Name of the workload VMs you want to load balance.
$VipMemberVMNames =  @("ILB-001","ILB-002"),

[Parameter(Mandatory=$false)]
# Name of the VIP VM Network
$VipNetworkName = "TenantNetwork",

[Parameter(Mandatory=$false)]
# VIP address you want to assign from the VIP VM Network IP pool.
# Pick any VIP that falls within your VIP IP Pool range.
$VipAddress = "192.168.100.75",

[Parameter(Mandatory=$false)]
# The name of the VIP template you created via the VMM Console.
$VipTemplateName = "ILB-VIP-Template",

[Parameter(Mandatory=$false)]
# Arbitrary but good to match the VIP you're using.
$VipName = "scvmm_192_168_100_75_443"

)

Import-Module virtualmachinemanager

$lb = Get-scLoadBalancer | where { $_.Service.Name -like $LBServiceName};
$vipNetwork = get-scvmnetwork -Name $VipNetworkName;

$vipMemberNics = @();
foreach ($vmName in $VipMemberVMNames)
{
$vm = get-scvirtualmachine -Name $vmName;
#    if ($vm.VirtualNetworkAdapters[0].VMNetwork.ID -ne $vipNetwork.ID)
#    {
#        $vm.VirtualNetworkAdapters[0] | set-scvirtualnetworkadapter -VMNetwork $vipNetwork;
#    }

$vipMemberNics += $vm.VirtualNetworkAdapters[0];
}

$existingVip = get-scloadbalancervip -Name $VipName
if ($existingVip -ne $null)
{
#    foreach ($mem in $existingVip.VipMembers)
#    {
#        $mem | remove-scloadbalancervipmember;
#    }

$existingVip | remove-scloadbalancervip;
}

$vipt = get-scloadbalancerviptemplate -Name $VipTemplateName;

$vip = New-SCLoadBalancerVIP -Name $VipName -LoadBalancer $lb
-IPAddress $VipAddress -LoadBalancerVIPTemplate $vipt
-FrontEndVMNetwork $vipNetwork
-BackEndVirtualNetworkAdapters $vipMemberNics;
Write-Output "Created VIP " $vip;

$vip = get-scloadbalancervip -Name $VipName;
Write-Output " VIP created successfully " $vip;