Lastverteilung des Netzwerkverkehrs in einer SDN fabric mithilfe von VMM
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 zwei Szenarien der Lastverteilung:
Lastverteilung des externen Netzwerkverkehrs: Dieses Szenario umfasst die Lastverteilung des Netzwerkverkehrs, der von einem externen Netzwerk kommt. Lastverteilung wird über eine öffentliche virtuelle IP (VIP) durchgeführt. Die Arbeitslast-VMs können mit einem VM-Netzwerk ohne Isolierung oder mit einem VM-Netzwerk mit aktivierter Netzwerkvirtualisierung verbunden werden.
Lastenausgleich des internen Netzwerkdatenverkehrs (interner Lastenausgleich): Dieses Szenario umfasst den Lastenausgleich des Netzwerkdatenverkehrs von Arbeitslasten im VM-Netzwerk, das für die Netzwerkvirtualisierung aktiviert ist. Der Lastenausgleich erfolgt über eine VIP.
Hinweis
VMM unterstützt die Konfiguration der Lastverteilung mithilfe von PowerShell. Das Konfigurieren über Dienstvorlagen wird momentan nicht unterstützt.
Dieser Artikel enthält Informationen darüber, wie die Lastverteilung von Workload-VMs mithilfe von PowerShell konfiguriert wird.
Hinweis
- Ab VMM 2019 UR1 wird der Netzwerktyp Ein Verbundenes in Verbundenes Netzwerk geändert.
- VMM 2019 UR2 und höher unterstützt IPv6.
Vor der Installation
Stellen Sie Folgendes sicher:
SDN Network Controller und der SDN Software Load Balancer werden bereitgestellt.
Erforderliche VMs werden in geeigneten Netzwerken erstellt und für die Lastverteilung identifiziert.
Erstellen Sie eine VIP-Vorlage
Verwenden Sie die folgenden Verfahren, um die VIPs für die Lastverteilung der Arbeitslast-VMs (DIPs) zu konfigurieren.
Wählen Sie in der VMM-Konsole Fabric>VIP-Vorlagen aus. Klicken Sie mit der rechten Maustaste und wählen Sie „VIP-Vorlage erstellen“ aus.
Stellen Sie auf der Seite Name den Namen und optional eine Beschreibung bereit. Geben Sie den virtuellen IP-Port an, der als Front-End-Port für den Netzwerkverkehr verwendet werden soll. Geben Sie im Backend-Port den Port an, auf dem die Backend-Workloads gehostet werden. Wählen Sie Weiter aus.
Wählen Sie unter TypVorlagentyp angeben und dann Spezifisch. Wählen Sie Microsoft aus der Hersteller-Dropdownliste und Microsoft Network Controller aus der Modell-Dropdownliste aus.
Wählen Sie Weiter aus.
Wählen Sie unter Protokolloptionen angeben die Option „Benutzerdefiniert“ und unter „Protokollname“ die Option „TCP/UDP“ aus. Wählen Sie Weiter aus.
Hinweis
SLB unterstützt nur die Lastverteilung der Ebene 4 des TCP/UDP-Datenverkehrs. HTTP/HTTPS-Protokolle werden nicht unterstützt.
Verwenden Sie für Persistenz und Lastverteilung die Standardwerte. Wählen Sie Weiter aus.
Hinweis
SLB unterstützt keine Persistenz und unterschiedliche Methoden zur Lastverteilung. Standardmäßig verwendet SLB den Round-Robin-Algorithmus für die Lastverteilung.
Fügen Sie in Gesundheitsmonitore optional geeignete Werte ein. Wählen Sie Weiter aus.
Optionen: TCP und HTTP werden als Protokolle für den Gesundheitsmonitor unterstützt, wenn SLB verwendet wird.
Überprüfen Sie die Einstellungen, und wählen Sie Fertig stellen aus.
Sobald die Vorlage erstellt wurde, finden Sie dies unter Fabric>VIP-Vorlagen.
Erstellen einer VIP mit PowerShell
Erstellen Sie eine VIP mit den folgenden Beispielskripts. Wählen Sie das Skript basierend auf dem Typ des Netzwerkdatenverkehrs aus, für den Sie einen Lastenausgleich vornehmen 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 Workload-VMs WGB-001 und WGB-002 auf Port 80 durchzuführen.
Dieses Skript kann verwendet werden, um Lastenausgleichs-VIP zu erstellen, indem auch die IPv6-VIP-Adresse übergeben wird.
Die Workload-VMs können mit einem Netzwerk ohne Isolation oder VM-Netzwerken mit aktivierter Netzwerkvirtualisierung verbunden werden.
Hinweis
- Ersetzen Sie im Abschnitt „Skriptparameter“ die tatsächlichen Werte, die Ihrer Testumgebung entsprechen, durch die Beispiele, die in diesem Skript verwendet werden.
- 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 haben wir eine neue VIP-Vorlage mit dem Namen „ILB-VIP-Template“ zum Lastenausgleich für den Port 443 erstellt, indem wir das im vorherigen Abschnitt beschriebene Verfahren verwenden. 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.
Dieses Skript kann verwendet werden, um Lastenausgleichs-VIP zu erstellen, indem auch die IPv6-VIP-Adresse übergeben wird.
Hinweis
- Im internen Lastenausgleichsszenario stammt die VIP aus dem Mandanten-VM-Netzwerk. Der $VipNetworkName ist also derselbe Name des Mandanten-VM-Netzwerks, in dem die virtuellen Computer verbunden sind. Stellen Sie sicher, der IP-Pool des Mandanten-VM-Netzwerks über die IP-Adressen des Mandanten verfügt, die für VIPs reserviert sind. Die $VipAddress ist eine der IP-Adressen der reservierten VIPs.
- Ersetzen Sie im Abschnitt „Skriptparameter“ die tatsächlichen Werte, die Ihrer Testumgebung entsprechen, durch die Beispiele, die in diesem Skript verwendet werden.
- 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;