Compartilhar via


Balancear a carga do tráfego de rede em uma malha SDN usando o VMM

Você pode usar o SLB (balanceador de Carga de Software) para distribuir de modo uniforme o tráfego de rede entre as cargas de trabalho no SDN (Software Define Networking) gerenciadas pelos CSPs (Provedores de Serviços de Nuvem) e locatários. Para mais informações, confira SLB (Balanceador de Carga de Software).

O System Center Virtual Machine Manager (VMM) dá suporte aos dois cenários de balanceamento de carga a seguir:

  • Balanceamento de carga do tráfego de rede externa: esse cenário inclui o balanceamento de carga do tráfego de rede proveniente de uma rede externa. O balanceamento de carga é feito por meio de um IP virtual (VIP) público. As VMs de carga de trabalho podem ser conectadas a uma rede VM sem isolamento ou a uma rede VM habilitada para virtualização de rede.

  • Balanceamento de carga do tráfego de rede interno (balanceamento de carga interno): esse cenário inclui o balanceamento de carga do tráfego de rede de cargas de trabalho na rede VM habilitada para virtualização de rede. O balanceamento de carga é feito por meio de um VIP.

    Observação

    O VMM dá suporte à configuração do balanceamento de carga usando o PowerShell. No momento, não há suporte para a configuração por meio de modelos de serviço.

Este artigo fornece informações sobre como configurar o balanceamento de carga de VMs de carga de trabalho usando o PowerShell.

Observação

  • No VMM 2019 UR1, um tipo de rede conectado é alterado para Rede conectada
  • O VMM 2019 UR2 e posterior dá suporte ao IPv6.

Antes de começar

Verifique o seguinte:

Criar um modelo VIP

Use os procedimentos a seguir para configurar os VIPs para balancear a carga das VMs de carga de trabalho (DIPs).

  1. No console do VMM, selecione Modelos VIP de Malha>. Clique com o botão direito do mouse e selecione Criar modelo VIP.

    Captura de tela do nome do modelo VIP.

  2. Na página Nome, forneça o nome e a descrição opcional. Especifique a porta IP virtual que será usada como porta front-end para o tráfego de rede. Na porta de back-end, especifique a porta na qual as cargas de trabalho de back-end estão hospedadas. Selecione Avançar.

    Captura de tela do tipo de modelo VIP.

  3. Em Tipo, em Especificar um tipo de modelo, selecione Específico. Selecione Microsoft na lista suspensa Fabricante e Controlador de Rede Microsoft na lista suspensa Modelo.

  4. Selecione Avançar.

    Captura de tela das opções do protocolo VIP.

  5. Em Especificar opções de protocolo, selecione a opção Personalizado e TCP/UDP em Nome do protocolo. Selecione Avançar.

    Observação

    O SLB suporta apenas o balanceamento de carga da camada 4 do tráfego TCP/UDP. Os protocolos HTTP/HTTPS não são suportados.

  6. Para Persistência e Balanceamento de Carga, use os padrões. Selecione Avançar.

    Captura de tela do Health Monitor.

    Observação

    O SLB não oferece suporte à persistência e a diferentes métodos de balanceamento de carga. Por padrão, o SLB usa o algoritmo Round Robin para balanceamento de carga.

  7. Em Monitores de Integridade, opcionalmente, insira os valores apropriados. Selecione Avançar.

    Opções: TCP e HTTP são suportados como protocolos de monitor de integridade se o SLB for usado.

  8. Verifique as configurações e selecione Concluir.

Depois que o modelo for criado, você poderá encontrá-lo em Modelos VIP do Fabric>.

Criar um VIP usando o PowerShell

Crie um VIP usando os scripts de exemplo a seguir. Selecione o script com base no tipo de tráfego de rede que você deseja balancear a carga:

Script para criar um VIP para balancear a carga do tráfego de rede externo

Script para criar um VIP para balancear a carga do tráfego de rede interno

Script para criar VIP para balancear a carga do tráfego de rede externa

O script de exemplo a seguir cria o VIP de uma rede IP pública para balancear a carga das VMs de carga de trabalho WGB-001 e WGB-002 na porta 80.

Esse script pode ser usado para criar um VIP de balanceamento de carga passando o endereço VIP IPv6 também.

As VMs de carga de trabalho podem ser conectadas a uma rede sem isolamento ou redes VM habilitadas para virtualização de rede.

Observação

  • Na seção de parâmetros de script, substitua os valores reais que correspondem ao seu ambiente de teste pelos exemplos usados neste script.
  • Certifique-se de executar o script em um servidor VMM ou em um computador que executa o console do 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 para criar VIP para balancear a carga do tráfego de rede interna

Para o script de exemplo a seguir, criamos um novo modelo VIP com o nome ILB-VIP-Template para balancear a carga da porta 443 usando o procedimento detalhado na seção anterior. O script cria um VIP da rede VM do locatário para balancear a carga das VMs ILB-001 e ILB-002, que fazem parte da mesma rede VM do locatário.

Esse script pode ser usado para criar um VIP de balanceamento de carga passando o endereço VIP IPv6 também.

Observação

  • No cenário de balanceamento de carga interno, o VIP vem da rede VM do locatário. Portanto, o $VipNetworkName é o mesmo nome de rede VM do locatário em que as VMs estão conectadas. Verifique se o pool de IPs da rede VM do locatário tem os IPs reservados para VIPs. O $VipAddress é um dos endereços IP dos VIPs reservados.
  • Na seção de parâmetros de script, substitua os valores reais que correspondem ao seu ambiente de teste pelos exemplos usados neste script.
  • Certifique-se de executar o script em um servidor VMM ou em um computador que executa o console do 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;