Bilanciare il carico del traffico di rete in un'infrastruttura SDN usando VMM
È possibile usare Software Load Balancer (SLB) per distribuire il traffico di rete uniformemente tra i carichi di lavoro in Software Define Networking (SDN) gestito dai provider di servizi cloud e dai tenant. Per ulteriori informazioni, vedere Software Load Balancer (SLB).
System Center Virtual Machine Manager (VMM) supporta i due scenari seguenti di bilanciamento del carico:
Bilanciamento del carico del traffico di rete esterno: questo scenario include il bilanciamento del carico del traffico di rete proveniente da una rete esterna. Il bilanciamento del carico viene eseguito tramite un indirizzo VIP (Public Virtual IP). Le macchine virtuali del carico di lavoro possono essere connesse a una rete VM senza isolamento o a una rete VM abilitata per la virtualizzazione di rete.
Bilanciamento del carico del traffico di rete interno (bilanciamento del carico interno): questo scenario include il bilanciamento del carico del traffico di rete dei carichi di lavoro nella rete VM abilitata per la virtualizzazione di rete. Il bilanciamento del carico viene eseguito tramite un indirizzo VIP (Virtual IP).
Nota
VMM supporta la configurazione del bilanciamento del carico tramite PowerShell. La configurazione tramite i modelli di servizio non è attualmente supportata.
Questo articolo fornisce informazioni su come configurare il bilanciamento del carico delle macchine virtuali del carico di lavoro tramite PowerShell.
Nota
- Da VMM 2019 UR1, un tipo di rete connesso viene modificato in Rete connessa
- VMM 2019 UR2 e versioni successive supporta IPv6.
Prima di iniziare
Verificare quanto segue:
Vengono distribuiti il controller di rete SDN e il servizio di bilanciamento del carico software SDN.
Le macchine virtuali necessarie vengono create nelle reti appropriate e vengono identificate per il bilanciamento del carico.
Creare un modello VIP
Usare le procedure seguenti per configurare i VIP per bilanciare il carico delle macchine virtuali di lavoro (DIPs).
Nella console VMM, selezionare Infrastruttura>Modelli VIP. Fare clic con il pulsante destro del mouse e selezionare Crea modello VIP.
Nella pagina Nome specificare il nome e la descrizione facoltativa. Specificare la porta IP virtuale che verrà usata come porta front-end per il traffico di rete. Nella porta back-end, specificare la porta su cui sono ospitati i carichi di lavoro del back-end. Selezionare Avanti.
In Tipo, in Specificare un tipo di modello selezionare Specifico. Selezionare Microsoft dall'elenco a discesa Produttore e Controller di rete Microsoft dall'elenco a discesa Modello.
Selezionare Avanti.
In Specifica opzioni protocollo, selezionare l'opzione Personalizzata e TCP/UDP in Nome protocollo. Selezionare Avanti.
Nota
SLB supporta solo il bilanciamento del carico di livello 4 del traffico TCP/UDP. I protocolli HTTP/HTTPS non sono supportati.
Per la persistenza e il bilanciamento del carico, usare le impostazioni predefinite. Selezionare Avanti.
Nota
SLB non supporta la persistenza e diversi metodi di bilanciamento del carico. Per impostazione predefinita, SLB usa l'algoritmo Round Robin per il bilanciamento del carico.
In Monitor di integrità, inserire facoltativamente i valori appropriati. Selezionare Avanti.
Opzioni: TCP e HTTP sono supportati come protocolli di monitoraggio dell'integrità se viene usato SLB.
Verificare le impostazioni e selezionare Fine.
Dopo aver creato il modello, puoi trovarlo sotto Fabric>Modelli VIP.
Creare un indirizzo VIP con PowerShell
Creare un indirizzo VIP usando gli script di esempio seguenti. Seleziona lo script in base al tipo di traffico di rete per cui vuoi effettuare il bilanciamento.
• Script per la creazione di un VIP per il bilanciamento del carico del traffico di rete esterna
• Script per creare un VIP per bilanciare il traffico della rete interna
Script per la creazione di un VIP per bilanciare il traffico esterno
Lo script di esempio seguente crea il VIP da una rete IP pubblica per bilanciare il carico delle macchine virtuali WGB-001 e WGB-002 sulla porta 80.
Questo script può essere usato per creare un VIP per il bilanciamento del carico passando anche un indirizzo VIP IPv6.
Le macchine virtuali del carico di lavoro possono essere connesse a una rete senza isolamento o a reti VM abilitate per la virtualizzazione di rete.
Nota
- Nella sezione parametri di script sostituire i valori effettivi corrispondenti all'ambiente di test per gli esempi usati in questo script.
- Assicurarsi di eseguire lo script in un server VMM o in un computer che esegue la console VMM.
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 per creare una VIP per il bilanciamento del traffico di rete interno
Per lo script di esempio seguente, è stato creato un nuovo modello VIP per nome ILB-VIP-Template per il bilanciamento del carico della porta 443 usando la procedura descritta in dettaglio nella sezione precedente. Lo script crea un indirizzo VIP dalla rete VM tenant per bilanciare il carico delle macchine virtuali ILB-001 & ILB-002, che fanno parte della stessa rete VM tenant.
Questo script può essere utilizzato per creare un VIP di bilanciamento del carico, passando anche un indirizzo VIP IPv6.
Nota
- Nello scenario di bilanciamento del carico interno, l'indirizzo VIP proviene dalla rete della macchina virtuale del tenant. Il $VipNetworkName è quindi lo stesso nome di rete della macchina virtuale tenant in cui sono connesse le macchine virtuali. Assicurarsi che il pool di indirizzi IP di rete della macchina virtuale tenant abbia gli indirizzi IP riservati per VIP. Il $VipAddress è uno degli indirizzi IP degli indirizzi VIP riservati.
- Nella sezione parametri di script sostituire i valori effettivi corrispondenti all'ambiente di test per gli esempi usati in questo script.
- Assicurarsi di eseguire lo script in un server VMM o in un computer che esegue la console VMM.
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;