Delen via


Taakverdeling voor netwerkverkeer in een SDN-infrastructuur met behulp van VMM

Belangrijk

Deze versie van Virtual Machine Manager (VMM) heeft het einde van de ondersteuning bereikt. U wordt aangeraden een upgrade uit te voeren naar VMM 2022.

U kunt de Software Load Balancer (SLB) gebruiken om het netwerkverkeer gelijkmatig te verdelen over de workloads in SDN (Software Define Networking) die worden beheerd door de cloudserviceproviders (CSP's) en de tenants. Zie Software Load Balancer (SLB) voor meer informatie.

System Center Virtual Machine Manager (VMM) ondersteunt de volgende twee scenario's voor taakverdeling:

  • Taakverdeling van het externe netwerkverkeer: dit scenario omvat taakverdeling van het netwerkverkeer dat afkomstig is van een extern netwerk. Taakverdeling wordt uitgevoerd via een openbaar virtueel IP-adres (VIP). De workload-VM's kunnen worden verbonden met een VM-netwerk zonder isolatie of met een VM-netwerk waarvoor netwerkvirtualisatie is ingeschakeld.

  • Taakverdeling van het interne netwerkverkeer (interne taakverdeling): dit scenario omvat taakverdeling van het netwerkverkeer van workloads in het VM-netwerk dat is ingeschakeld voor netwerkvirtualisatie. Taakverdeling wordt uitgevoerd via een VIP.

    Notitie

    VMM 2016 ondersteunt configuratie van taakverdeling met behulp van PowerShell. Configuratie via servicesjablonen wordt momenteel niet ondersteund.

Dit artikel bevat informatie over het configureren van de taakverdeling van workload-VM's met behulp van PowerShell.

Notitie

  • Van VMM 2019 UR1 wordt Eén verbonden netwerktype gewijzigd in Verbonden netwerk
  • VMM 2019 UR2 en hoger ondersteunt IPv6.

Voordat u begint

Zorg ervoor dat:

Een VIP-sjabloon maken

Gebruik de volgende procedures om de VIP's te configureren voor taakverdeling van de workload-VM's (DIPs).

  1. Selecteer vip-sjablonen voor infrastructuur> in deVMM-console. Klik met de rechtermuisknop en selecteer VIP-sjabloon maken.

    Schermopname van de naam van de VIP-sjabloon.

  2. Geef op de pagina Naam de naam en optionele beschrijving op. Geef de virtuele IP-poort op die wordt gebruikt als front-endpoort voor het netwerkverkeer. Geef in de back-endpoort de poort op waarop de back-endworkloads worden gehost. Selecteer Next.

    Schermopname van het type VIP-sjabloon.

  3. Selecteer in Een sjabloontype opgeven de optie Specifiek. Selecteer microsoft bij Fabrikant. Selecteer bij Model de optie Microsoft-netwerkcontroller. Selecteer Next.

    Schermopname van VIP-protocolopties.

  4. Selecteer in Protocolopties opgeven de optie Aangepast en typ TCP/UDP bij Protocolnaam. Selecteer Next.

    Notitie

    SLB ondersteunt alleen taakverdeling op laag 4 van TCP/UDP-verkeer. HTTP/HTTPS-protocollen worden niet ondersteund.

  5. Gebruik voor Persistentie en Taakverdeling de standaardinstellingen. Selecteer Next.

    Schermopname van Statuscontrole.

    Notitie

    SLB biedt geen ondersteuning voor persistentie en verschillende taakverdelingsmethoden. Standaard maakt SLB gebruik van het Round Robin-algoritme voor taakverdeling.

  6. Voeg in Statusmonitors desgewenst de juiste waarden in. Selecteer Next.

    Opties: TCP en HTTP worden ondersteund als statuscontroleprotocollen als SLB wordt gebruikt.

  7. Controleer de instellingen en selecteer Voltooien.

Zodra de sjabloon is gemaakt, vindt u deze onderVIP-sjablonen voor fabric>.

Een VIP maken met PowerShell

Maak een VIP met behulp van de volgende voorbeeldscripts. Selecteer het script op basis van het type netwerkverkeer dat u wilt verdelen:

Script voor het maken van een VIP voor taakverdeling van extern netwerkverkeer

Script voor het maken van een VIP om het interne netwerkverkeer te verdelen

Script voor het maken van VIP voor taakverdeling van extern netwerkverkeer

In het volgende voorbeeldscript wordt het VIP gemaakt van een openbaar IP-netwerk om de workload-VM's WGB-001 te verdelen & WGB-002 op poort 80.

Dit script kan worden gebruikt om een VIP voor taakverdeling te maken door ook het IPv6 VIP-adres door te geven.

De workload-VM's kunnen worden verbonden met een netwerk zonder isolatie of netwerkvirtualisatie ingeschakelde VM-netwerken.

Notitie

  • Vervang in het gedeelte met parameters in het script de voorbeelden die in dit script worden gebruikt, door de feitelijke waarden van uw testomgeving.
  • Zorg ervoor dat u het script uitvoert op een VMM-server of op een computer met de VMM-console.
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;

Script voor het maken van VIP voor taakverdeling van intern netwerkverkeer

Voor het volgende voorbeeldscript hebben we een nieuwe VIP-sjabloon gemaakt met de naam ILB-VIP-template voor het verdelen van de taakverdeling van poort 443 met behulp van de procedure die in de vorige sectie wordt beschreven. Het script maakt een VIP van tenant-VM-netwerk voor taakverdeling van de VM's ILB-001 & ILB-002, die deel uitmaken van hetzelfde tenant-VM-netwerk.

Dit script kan worden gebruikt om een VIP voor taakverdeling te maken door ook het IPv6 VIP-adres door te geven.

Notitie

  • In het interne taakverdelingsscenario is het VIP afkomstig van het tenant-VM-netwerk. De $VipNetworkName is dus dezelfde tenant-VM-netwerknaam waar de VM's zijn verbonden. Zorg ervoor dat de IP-adressen van de tenant-VM-netwerkgroep zijn gereserveerd voor VIP's. De $VipAddress is een van de IP-adressen van de gereserveerde VIP's.
  • Vervang in het gedeelte met parameters in het script de voorbeelden die in dit script worden gebruikt, door de feitelijke waarden van uw testomgeving.
  • Zorg ervoor dat u het script uitvoert op een VMM-server of op een computer met de VMM-console.
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;