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

Wichtig

Diese Version von Virtual Machine Manager (VMM) hat das Supportende erreicht. Sie sollten ein Upgrade auf VMM 2019 durchführen.

Im Fabric eines durch Software definierten Netzwerks (Software Defined Network, SDN) können Sie den Software Load Balancer (SLB) verwenden, um den Netzwerkdatenverkehr gleichmäßig auf die Arbeitsauslastungen zu verteilen, die von den Clouddienstanbietern (Cloud Service Providers, CSPs) und den Mandanten verwaltet werden. Erfahren Sie mehr über den 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. Klicken Sie in der VMM-Konsole auf Fabric > VIP-Vorlagen. Klicken Sie mit der rechten Maustaste, und wählen Sie VIP-Vorlage erstellen aus.

    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 werden soll. Geben Sie als Back-End-Port den Port an, auf dem die Back-End-Arbeitsauslastungen gehostet werden. Klicken Sie auf Weiter.

    VIP-Vorlagentyp

  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. Klicken Sie auf Weiter.

    VIP-Protokolloptionen

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

    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. Klicken Sie auf Weiter.

    Health Monitors (Integritätsüberwachungen)

    Hinweis

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

  6. Fügen Sie unter Integritätsmonitore optional entsprechende Werte ein. Klicken Sie auf Weiter.

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

  7. Überprüfen Sie die Einstellungen, und klicken Sie auf Fertig stellen.

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.
  • Führen Sie das Skript auf einem VMM-Server oder auf einem Computer aus, 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 Szenario für den internen Lastenausgleich stammt die VIP aus dem Mandanten-VM-Netzwerk. 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.
  • Führen Sie das Skript auf einem VMM-Server oder auf einem Computer aus, 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;