Condividi tramite


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 altre informazioni, vedere Bilanciamento del carico software.For more information, see 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.

    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:

Creare un modello VIP

Usare le procedure seguenti per configurare gli indirizzi VIP per bilanciare il carico delle macchine virtuali del carico di lavoro( DIP).

  1. Nella console VMM selezionare Infrastruttura>modelli VIP. Fare clic con il pulsante destro del mouse e selezionare Crea modello VIP.

    Screenshot del nome del modello VIP.

  2. 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 in cui sono ospitati i carichi di lavoro back-end. Selezionare Avanti.

    Screenshot del tipo di modello VIP.

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

  4. Selezionare Avanti.

    Screenshot delle opzioni del protocollo VIP.

  5. In Specifica opzioni protocollo selezionare l'opzione Personalizzata e TCP/UDP in Nome protocollo. Seleziona Avanti.

    Nota

    SLB supporta solo il bilanciamento del carico di livello 4 del traffico TCP/UDP. I protocolli HTTP/HTTPS non sono supportati.

  6. Per la persistenza e il bilanciamento del carico, usare le impostazioni predefinite. Selezionare Avanti.

    Screenshot di Health Monitor.

    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.

  7. In Monitoraggi integrità, facoltativamente, inserire i valori appropriati. Selezionare Avanti.

    Opzioni: TCP e HTTP sono supportati come protocolli di monitoraggio dell'integrità se viene usato SLB.

  8. Verificare le impostazioni e selezionare Fine.

Dopo aver creato il modello, è possibile trovarne il contenuto in Modelli VIP dell'infrastruttura>.

Creare un indirizzo VIP con PowerShell

Creare un indirizzo VIP usando gli script di esempio seguenti. Selezionare lo script in base al tipo di traffico di rete che si vuole bilanciare il carico:

Script per la creazione di un indirizzo VIP per bilanciare il carico del traffico di rete esterno

Script per la creazione di un indirizzo VIP per bilanciare il carico del traffico di rete interno

Script per la creazione dell'indirizzo VIP per bilanciare il carico del traffico di rete esterno

Lo script di esempio seguente crea l'indirizzo VIP da una rete IP pubblica per bilanciare il carico delle macchine virtuali del carico di lavoro WGB-001 & WGB-002 sulla porta 80.

Questo script può essere usato per creare un indirizzo VIP di bilanciamento del carico passando anche l'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 la creazione dell'indirizzo VIP per bilanciare il carico 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 usato per creare un indirizzo VIP di bilanciamento del carico passando anche l'indirizzo VIP IPv6.

Nota

  • Nello scenario di bilanciamento del carico interno, l'indirizzo VIP proviene dalla rete VM tenant. Il $VipNetworkName è quindi lo stesso nome di rete della macchina virtuale tenant in cui sono connesse le macchine virtuali. Assicurarsi che il pool ip di rete della macchina virtuale tenant abbia gli indirizzi IP riservati per gli indirizzi 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;