Compartir a través de


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

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 dos escenarios siguientes 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 dirección IP virtual (VIP) pública. Las VM de carga de trabajo se pueden conectar a una red de VM sin aislamiento o a una red de VM habilitada para virtualización de red.

  • Equilibrio de carga del tráfico de red interno (equilibrio de carga interno): este escenario incluye el equilibrio de carga del tráfico de red de las cargas de trabajo en la red de VM habilitada para la virtualización de red. El equilibrio de carga se realiza a través de una dirección VIP.

    Nota:

    VMM admite la configuración del equilibrio de carga mediante PowerShell. Actualmente no se admite la configuración mediante plantillas de servicio.

En este artículo se proporciona información sobre cómo configurar el equilibrio de carga de las VM de carga de trabajo mediante PowerShell.

Nota:

  • A partir de VMM 2019 UR1, el tipo Una red conectada cambia a Red conectada.
  • VMM 2019 UR2 y versiones posteriores admiten IPv6.

Antes de comenzar

Asegúrese de lo siguiente:

Creación de una plantilla de VIP

Usa los procedimientos siguientes para configurar las direcciones VIP para equilibrar la carga de las VM de carga de trabajo (DIP).

  1. En la consola de VMM, selecciona Fabric>VIP Templates. Haz clic con el botón derecho y selecciona Create VIP Template.

    Captura de pantalla del nombre de la plantilla de VIP.

  2. En la página Name, proporciona el nombre y una descripción opcional. Especifica el Virtual IP Port que se usará como puerto front-end para el tráfico de red. En Backend port, especifica el puerto en el que se hospedan las cargas de trabajo de back-end. Seleccione Siguiente.

    Captura de pantalla del tipo de plantilla de VIP.

  3. En Type, en Specify a template type, selecciona Specific. Selecciona Microsoft en la lista desplegable Manufacturer y Microsoft Network Controller en la lista desplegable Model.

  4. Seleccione Siguiente.

    Captura de pantalla de las opciones del protocolo VIP.

  5. En Specify Protocol options, selecciona la opción Custom y TCP/UDP en Protocol name. Seleccione Siguiente.

    Nota:

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

  6. En Persistence y Load Balancing, usa los valores predeterminados. Seleccione Siguiente.

    Captura de pantalla del monitor de estado.

    Nota:

    SLB no admite persistencia ni diferentes métodos de equilibrio de carga. De forma predeterminada, SLB usa el algoritmo round robin para el equilibrio de carga.

  7. En Health Monitors, opcionalmente, inserta los valores adecuados. Seleccione Siguiente.

    Opciones: TCP y HTTP se admiten como protocolos de supervisión de estado si se usa SLB.

  8. Comprueba la configuración y selecciona Finish.

Una vez creada la plantilla, puedes encontrarla en Fabric>VIP Templates.

Creación de una VIP mediante PowerShell

Crea un VIP utilizando los siguientes scripts de ejemplo. Selecciona el script en función del tipo de tráfico de red para el que deseas 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 VIP para equilibrar la carga del tráfico de red externo.

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

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

Las VM de carga de trabajo se pueden conectar a una red sin aislamiento o a redes de VM habilitadas para la virtualización de red.

Nota:

  • En la sección parámetros de script, sustituye los valores reales que coinciden con el entorno de prueba de los ejemplos usados en este script.
  • Asegúrate 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 dirección VIP para equilibrar la carga del tráfico de red interno.

Para el siguiente script de ejemplo, creamos una nueva plantilla de VIP con nombre ILB-VIP-Template para equilibrar la carga del puerto 443 mediante el procedimiento detallado en la sección anterior. El script crea a una VIP a partir de una red de VM de inquilino para equilibrar la carga de las VM ILB-001 y ILB-002, que forman parte de la misma red de VM de inquilino.

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

Nota:

  • En el escenario de equilibrio de carga interno, la dirección VIP procede de la red de VM del inquilino. Por lo tanto, el $VipNetworkName es el mismo nombre de red de VM de inquilino donde están conectadas las VM. Asegúrate de que el grupo de direcciones IP de red de la VM del inquilino tenga las direcciones IP reservadas para las VIP. $VipAddress es una de las direcciones IP de las direcciones VIP reservadas.
  • En la sección parámetros de script, sustituye los valores reales que coinciden con el entorno de prueba de los ejemplos usados en este script.
  • Asegúrate 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;