Belastningsutjämning av nätverkstrafik i en SDN-infrastrukturresurs med VMM
Viktigt
Den här versionen av Virtual Machine Manager (VMM) har nått slutet av supporten. Vi rekommenderar att du uppgraderar till VMM 2022.
Du kan använda Software Load Balancer (SLB) för att fördela nätverkstrafiken jämnt mellan arbetsbelastningarna i SDN (Software Define Networking) som hanteras av molntjänstleverantörerna (CSP:er) och klientorganisationer. Mer information finns i Software Load Balancer (SLB).
System Center Virtual Machine Manager (VMM) stöder följande två scenarier för belastningsutjämning:
Belastningsutjämning av den externa nätverkstrafiken: I det här scenariot ingår belastningsutjämning av nätverkstrafiken som kommer från ett externt nätverk. Belastningsutjämning görs via en offentlig virtuell IP-adress (VIP). De virtuella arbetsbelastningsdatorerna kan anslutas till ett virtuellt datornätverk utan isolering eller till ett nätverksvirtualiseringsaktiverat virtuellt datornätverk.
Belastningsutjämning av den interna nätverkstrafiken (intern belastningsutjämning): I det här scenariot ingår belastningsutjämning av nätverkstrafiken för arbetsbelastningar i det virtuella datornätverk som är aktiverat för nätverksvirtualisering. Belastningsutjämning görs via en VIP.
Anteckning
VMM 2016 stöder konfiguration av belastningsutjämning med hjälp av PowerShell. Konfiguration via tjänstmallar stöds för närvarande inte.
Den här artikeln innehåller information om hur du konfigurerar belastningsutjämning för virtuella arbetsbelastningsdatorer med hjälp av PowerShell.
Anteckning
- Från VMM 2019 UR1 ändras en ansluten nätverkstyp till Anslutet nätverk
- VMM 2019 UR2 och senare stöder IPv6.
Innan du börjar
Kontrollera följande:
SDN-nätverksstyrenheten och SDN-programvarans lastbalanserare distribueras.
Nödvändiga virtuella datorer skapas i lämpliga nätverk och identifieras för belastningsutjämning.
Skapa en VIP-mall
Använd följande procedurer för att konfigurera VIP:erna för belastningsutjämning av de virtuella arbetsbelastningsdatorerna (DIP:er).
I VMM-konsolen väljer duInfrastruktur-VIP-mallar>. Högerklicka och välj Skapa VIP-mall.
På sidan Namn anger du namnet och den valfria beskrivningen. Ange den virtuella IP-port som ska användas som klientdelsport för nätverkstrafiken. I serverdelsporten anger du den port där serverdelsarbetsbelastningarna finns. Välj Nästa.
I Ange en malltyp väljer du Specifik. I Tillverkare väljer du Microsoft. I Modell väljer du Microsoft Network Controller. Välj Nästa.
I Ange protokollalternativ väljer du alternativet Anpassad och skriver TCP/UDP i Protokollnamn. Välj Nästa.
Anteckning
SLB stöder endast layer 4-belastningsutjämning av TCP/UDP-trafik. HTTP/HTTPS-protokoll stöds inte.
Använd standardvärdena för beständighet och belastningsutjämning. Välj Nästa.
Anteckning
SLB stöder inte beständighet och olika belastningsutjämningsmetoder. Som standard använder SLB Resursallokeringsalgoritm för belastningsutjämning.
I Hälsoövervakare kan du också infoga lämpliga värden. Välj Nästa.
Alternativ: TCP och HTTP stöds som hälsoövervakningsprotokoll om SLB används.
Kontrollera inställningarna och välj Slutför.
När mallen har skapats hittar du den underINFRASTRUKTUR-VIP-mallar>.
Skapa en VIP med PowerShell
Skapa en VIP med hjälp av följande exempelskript. Välj skriptet baserat på vilken typ av nätverkstrafik du vill belastningsutjämning:
• Skript för att skapa en VIP för belastningsutjämning av extern nätverkstrafik
• Skript för att skapa en VIP för belastningsutjämning av intern nätverkstrafik
Skript för att skapa VIP för belastningsutjämning av extern nätverkstrafik
Följande exempelskript skapar VIP från ett offentligt IP-nätverk för att belastningsutjämning av arbetsbelastningens virtuella datorer WGB-001 & WGB-002 på port 80.
Det här skriptet kan användas för att skapa belastningsutjämnings-VIP genom att även skicka IPv6 VIP-adress.
De virtuella arbetsbelastningsdatorerna kan anslutas till ett nätverk utan isolering eller nätverksvirtualiseringsaktiverade virtuella datornätverk.
Anteckning
- I skriptparameteravsnittet använder du de faktiska värdena som matchar din testmiljö istället för de exempelvärden som används i det här skriptet.
- Kontrollera att du kör skriptet på en VMM-server eller på en dator som kör VMM-konsolen.
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 att skapa VIP för belastningsutjämning av intern nätverkstrafik
I följande exempelskript skapade vi en ny VIP-mall med namnet ILB-VIP-Template för belastningsutjämning av port 443 med hjälp av proceduren som beskrivs i föregående avsnitt. Skriptet skapar en VIP från klientorganisationens virtuella datornätverk för att belastningsbalansera de virtuella datorernas ILB-001-& ILB-002, som ingår i samma virtuella klientdatornätverk.
Det här skriptet kan användas för att skapa belastningsutjämnings-VIP genom att även skicka IPv6 VIP-adress.
Anteckning
- I det interna belastningsutjämningsscenariot kommer VIP från klientorganisationens virtuella datornätverk. Därför är $VipNetworkName samma nätverksnamn för den virtuella klientdatorn där de virtuella datorerna är anslutna. Kontrollera att IP-adresserna för klientorganisationens virtuella datornätverks-IP-pool har reserverats för VIP:er. $VipAddress är en av IP-adresserna från de reserverade VIP:erna.
- I skriptparameteravsnittet använder du de faktiska värdena som matchar din testmiljö istället för de exempelvärden som används i det här skriptet.
- Kontrollera att du kör skriptet på en VMM-server eller på en dator som kör VMM-konsolen.
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;