Equilibrar la carga del tráfico de red en un tejido de SDN mediante VMM

Importante

Esta versión de Virtual Machine Manager (VMM) ha llegado al final del soporte técnico. Se recomienda actualizar a VMM 2022.

Puede utilizar el equilibrador de carga de software (SLB) para distribuir el tráfico de red de manera uniforme entre las cargas de trabajo en redes definidas por software (SDN) administradas por los proveedores de servicios en la nube (CSP) y los inquilinos. Para obtener más información, consulte Equilibrador de carga de software (SLB).

System Center Virtual Machine Manager (VMM) admite los siguientes dos escenarios de equilibrio de carga:

  • Equilibrio de carga del tráfico de red externo: Este escenario incluye el equilibrio de carga del tráfico de red procedente de una red externa. El equilibrio de carga se realiza a través de una IP virtual (VIP) pública. Las máquinas virtuales de carga de trabajo se puede conectar a una red de máquinas virtuales sin aislamiento o a una red de máquinas virtuales que tenga habilitada la virtualización de red.

  • Equilibrio de carga de tráfico de red interno (equilibrio de carga interno): Este escenario incluye el equilibrio de carga del tráfico de red de cargas de trabajo en la red de máquinas virtuales que tiene habilitada la virtualización de red. El equilibrio de carga se realiza a través de una IP virtual.

    Nota

    VMM 2016 admite la configuración de equilibrio de carga mediante el uso de PowerShell. La configuración a través de plantillas de servicio no se admite actualmente.

En este artículo se proporciona información sobre cómo configurar el equilibrio de carga de máquinas virtuales de carga de trabajo mediante el uso de PowerShell.

Nota

  • Desde VMM 2019 UR1, el tipo de red Una conectada se ha cambiado a Red conectada
  • VMM 2019 UR2 y las versiones posteriores admiten IPv6.

Antes de comenzar

Asegúrese de lo siguiente:

Crear una plantilla de dirección VIP

Siga los pasos siguientes para configurar las IP virtuales para equilibrar la carga de las máquinas virtuales de carga de trabajo (DIP).

  1. En la consola VMM, seleccionePlantillas de VIPde Tejido>. Haga clic con el botón derecho y seleccione Crear plantilla de VIP.

    Captura de pantalla del nombre de la plantilla de VIP.

  2. En la página Nombre, proporcione el nombre y una descripción opcional. Especifique el puerto IP virtual que se usará como puerto de front-end para el tráfico de red. En el puerto back-end, especifique el puerto en el que se hospedan las cargas de trabajo de back-end. Seleccione Next (Siguiente).

    Captura de pantalla del tipo de plantilla de VIP.

  3. En Especificar un tipo de plantilla, seleccione Específico. En Fabricante, seleccione Microsoft. En Modelo, seleccione Controladora de red de Microsoft. Seleccione Next (Siguiente).

    Captura de pantalla de las opciones del protocolo VIP.

  4. En Especificar opciones de protocolo, seleccione la opción Personalizada y escriba TCP/UDP en Nombre del protocolo. Seleccione Next (Siguiente).

    Nota

    SLB solo admite el equilibrio de carga de nivel 4 del tráfico TCP/UDP. No se admiten protocolos HTTP/HTTPS.

  5. Para Persistencia y Equilibrio de carga, use los valores predeterminados. Seleccione Next (Siguiente).

    Captura de pantalla del Monitor de estado.

    Nota

    SLB no admite la persistencia ni los distintos métodos de equilibrio de carga. De forma predeterminada, SLB usa el algoritmo Round Robin para el equilibrio de carga.

  6. Opcionalmente, inserte los valores adecuados en Monitores de estado. Seleccione Next (Siguiente).

    Opciones: TCP y HTTP se admiten como protocolos de monitor de estado si se usa SLB.

  7. Compruebe la configuración y seleccione Finalizar.

Una vez que se crea la plantilla, puede encontrar esto en TejidoPlantillas de VIP.

Crear una IP virtual con PowerShell

Cree una IP virtual mediante los siguientes scripts de ejemplo. Seleccione el script según el tipo de tráfico de red en el que quiera equilibrar la carga:

Script para crear una IP virtual para equilibrar la carga del tráfico de red externo

Script para crear una IP virtual para equilibrar la carga del tráfico de red interno

Script para crear una IP virtual para equilibrar la carga del tráfico de red externo

El siguiente script de ejemplo crea la IP virtual a partir de una red IP pública para equilibrar la carga de las máquinas virtuales de carga de trabajo WGB-001 y WGB-002 en el puerto 80.

Este script se puede usar para crear una VIP de equilibrio de carga que pase también la dirección VIP de IPv6.

Las máquinas virtuales de carga de trabajo se puede conectar a una red de máquinas virtuales sin aislamiento o redes de máquinas virtuales que tengan habilitada la virtualización de red.

Nota

  • En la sección de parámetros de script, sustituya los valores reales que coinciden con su entorno de prueba por los ejemplos que se usan en este script.
  • Asegúrese de ejecutar el script en un servidor VMM o en un equipo que ejecute la consola 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 crear una IP virtual para equilibrar la carga del tráfico de red interno

Para el siguiente script de ejemplo, se crea una nueva plantilla de IP virtual con el nombre ILB-VIP-Template para el equilibrio de carga en el puerto 443, mediante el procedimiento detallado en la sección anterior. El script crea a una IP virtual a partir de una red de máquinas virtuales de inquilino para equilibrar la carga de las máquinas virtuales ILB-001 e ILB-002, que forman parte de la misma red de máquinas virtuales de inquilino.

Este script se puede usar para crear una VIP de equilibrio de carga que pase también la dirección VIP de IPv6.

Nota

  • En el escenario de equilibrio de carga interno, la dirección VIP procede de la red de máquina virtual del inquilino. Por tanto, $VipNetworkName es el mismo nombre de red de máquinas virtuales de inquilino donde están conectadas las máquinas virtuales. Asegúrese de que el grupo de IP de red de máquinas virtuales de inquilino tiene las direcciones IP reservada para las IP virtuales. $VipAddress es una de las direcciones IP de las IP virtuales reservadas.
  • En la sección de parámetros de script, sustituya los valores reales que coinciden con su entorno de prueba por los ejemplos que se usan en este script.
  • Asegúrese de ejecutar el script en un servidor VMM o en un equipo que ejecute la consola 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;