Dela via


Balancera nätverkstrafik i en SDN-arkitektur med VMM

Du kan använda SLB (Software Load Balancer) för att fördela nätverkstrafiken jämnt mellan arbetsbelastningarna i Software Define Networking (SDN) 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 med 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 arbetsbelastnings-VM kan anslutas till ett utan isolering vm-nätverk eller till ett nätverksvirtualisering aktiverat vm-nä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ätverket som är aktiverat för nätverksvirtualisering. Belastningsutjämning görs via en VIP.

    Not

    VMM 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.

Not

  • 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ätverksstyrenhet och SDN-programvarulastbalanserare 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:er för belastningsutjämning av de virtuella arbetsbelastningsdatorerna (DIP:er).

  1. I VMM-konsolen väljer du Fabric>VIP-mallar. Högerklicka och välj Skapa VIP-mall.

    Skärmbild av NAMNET på VIP-mallen.

  2. På sidan Namn anger du namnet och den valfria beskrivningen. Ange den virtuella IP-port som ska användas som front-end port för nätverkstrafiken. I backendportenanger du vilken port som används för att hysa backendprocesser. Välj Nästa.

    Skärmbild av VIP-malltypen.

  3. I Typ, under Ange en malltyp, välj Specifik. Välj Microsoft i listrutan Tillverkare och Microsoft Network Controller från listrutan Modell.

  4. Välj Nästa.

    Skärmbild av alternativ för VIP-protokoll.

  5. I Ange protokollalternativväljer du alternativet Anpassad och TCP/UDP i protokollnamnet. Välj Nästa.

    Not

    SLB stöder endast skikt 4-belastningsutjämning av TCP/UDP-trafik. HTTP/HTTPS-protokoll stöds inte.

  6. Använd standardvärdena för Persistence och Load Balancing. Välj Nästa.

    skärmbild av Hälsoövervakaren.

    Not

    SLB stöder inte beständighet och olika belastningsutjämningsmetoder. Som standard använder SLB Round Robin-algoritmen för belastningsutjämning.

  7. I Hälsoövervakarekan 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.

  8. Kontrollera inställningarna och välj Slutför.

När mallen har skapats hittar du den under Fabric>VIP-mallar.

Skapa en VIP med PowerShell

Skapa en VIP med hjälp av följande exempelskript. Välj skript baserat på vilken typ av nätverkstrafik du vill belastningsutjämna.

Skript för att skapa en VIP för att balansera trafik på det externa nätverket

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 en VIP från ett offentligt IP-nätverk för att belastningsutjämna arbetsbelastningens VMer 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 arbetsbelastnings-VM:ar kan anslutas till ett utan isolering nätverk eller nätverksvirtualisering aktiverade VM-nätverk.

Not

  • I avsnittet skriptparametrar ersätter du de faktiska värden som matchar testmiljön med de exempel 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 klientnätverk för virtuella datorer för att utjämna belastningen på de virtuella datorerna ILB-001 & ILB-002, som ingår i samma klientnätverk för virtuella datorer.

Det här skriptet kan användas för att skapa belastningsutjämnings-VIP genom att även skicka IPv6 VIP-adress.

Not

  • I det interna belastningsutjämningsscenariot kommer VIP från klientorganisationens virtuella datornätverk. Därför är $VipNetworkName samma nätverksnamn för hyresgäst-VM där de virtuella maskinerna är anslutna. Kontrollera att IP-adresserna för den virtuella klientdatorns nätverks-IP-pool har reserverade IP-adresser för VIP:er. $VipAddress är en av IP-adresserna från de reserverade VIP:erna.
  • I avsnittet skriptparametrar ersätter du de faktiska värden som matchar testmiljön med de exempel 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;