Netwerkverkeer op een SDN-netwerkinfrastructuur verdelen met VMM
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 werkbelasting-VM's kunnen worden verbonden met een VM-netwerk zonder isolatie of met een netwerkvirtualisatie ingeschakeld VM-netwerk.
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 ondersteunt de 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
- Vanaf VMM 2019 UR1 wordt het netwerktype One Connected gewijzigd in Connected Network
- VMM 2019 UR2 en hoger ondersteunt IPv6.
Voordat u begint
Controleer het volgende:
SDN-netwerkcontroller en de SDN-software load balancer worden geïmplementeerd.
Vereiste VM's worden gemaakt op de juiste netwerken en worden geïdentificeerd voor taakverdeling.
Een VIP-sjabloon maken
Gebruik de volgende procedures om de VIP's te configureren voor het balanceren van de belasting op de workload-VM's (DIPs).
Selecteer in de VMM-console Fabric>VIP-sjablonen. Klik met de rechtermuisknop en selecteer VIP-sjabloon maken.
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-endpoortde poort op waarop de back-endworkloads worden gehost. Selecteer Volgende.
Selecteer in Type, onder Geef een sjabloontype op, de optie Specifiek. Selecteer Microsoft in de vervolgkeuzelijst Fabrikant en Microsoft-netwerkcontroller in de vervolgkeuzelijst Model.
Selecteer Volgende.
In Protocolopties opgeven in, selecteer de optie Aangepast en TCP/UDP bij Protocolnaam. Selecteer Volgende.
Notitie
SLB ondersteunt alleen laag 4-taakverdeling van TCP/UDP-verkeer. HTTP-/HTTPS-protocollen worden niet ondersteund.
Gebruik de standaardinstellingen voor Persistentie en Taakverdeling. Selecteer Volgende.
Notitie
SLB biedt geen ondersteuning voor persistentie en verschillende taakverdelingsmethoden. SLB maakt standaard gebruik van round robin-algoritme voor taakverdeling.
Voeg in Gezondheidsmonitorsoptioneel de juiste waarden in. Selecteer Volgende.
Opties: TCP en HTTP worden ondersteund als protocollen voor statuscontrole als SLB wordt gebruikt.
Controleer de instellingen en selecteer voltooien.
Zodra de sjabloon is gemaakt, kunt u deze vinden onder Fabric>VIP-sjablonen.
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 loadbalanceren:
• script voor maken van een VIP voor load balancing van extern netwerkverkeer
• Script voor het maken van een VIP voor het load balanceren van intern netwerkverkeer
Script voor het maken van VIP voor taakverdeling van extern netwerkverkeer
In het volgende voorbeeldscript wordt de VIP vanuit een openbaar IP-netwerk aangemaakt om de belasting van de workload-VM's WGB-001 & WGB-002 over poort 80 te verdelen.
Dit script kan worden gebruikt om taakverdelings-VIP te maken door ook het IPv6 VIP-adres door te geven.
De workload-VMs kunnen worden verbonden met een netwerk zonder isolatie of met ingeschakelde netwerkvirtualisatie VM-netwerken.
Notitie
- Vervang in de sectie scriptparameters de werkelijke waarden die overeenkomen met uw testomgeving voor de voorbeelden die in dit script worden gebruikt.
- Zorg ervoor dat u het script uitvoert op een VMM-server of op een computer waarop de VMM-console wordt uitgevoerd.
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 creëren van een VIP om intern netwerkverkeer te verdelen
Voor het volgende voorbeeldscript hebben we een nieuwe VIP-sjabloon gemaakt op naam ILB-VIP-Template voor taakverdeling van de poort 443 met behulp van de procedure die is beschreven in de vorige sectie. Met het script maakt u een VIP van het tenant VM-netwerk om de VM's ILB-001, & en ILB-002, die deel uitmaken van hetzelfde tenant VM-netwerk, te loadbalancen.
Dit script kan worden gebruikt om taakverdelings-VIP 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 naam voor het vm-netwerk van de tenant waar de VM's zijn verbonden. Zorg ervoor dat voor de IP-adresgroep van de tenant-VM-netwerk de IP-adressen zijn gereserveerd voor VIP's. De $VipAddress is een van de IP-adressen van de gereserveerde VIP's.
- Vervang in de sectie scriptparameters de werkelijke waarden die overeenkomen met uw testomgeving voor de voorbeelden die in dit script worden gebruikt.
- Zorg ervoor dat u het script uitvoert op een VMM-server of op een computer waarop de VMM-console wordt uitgevoerd.
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;