Equilibrar la carga del tráfico de red en un tejido de SDN mediante VMMLoad balance network traffic in an SDN fabric using VMM

Se aplica a: System Center 2016 - Virtual Machine ManagerApplies To: System Center 2016 - Virtual Machine Manager

En el tejido de Redes definidas por software (SDN), puede usar el equilibrador de carga de software (SLB) para distribuir uniformemente el tráfico de red entre las cargas de trabajo administradas por los proveedores de servicios de nube (CSP) y los inquilinos.In Software Define Networking (SDN) fabric, you can use the Software Load Balancer (SLB) to evenly distribute the network traffic among the workloads managed by the Cloud Service Providers (CSPs) and the tenants. Obtenga más información sobre el Equilibrador de carga de software (SLB).Learn more about Software Load Balancer (SLB).

System Center Virtual Machine Manager 2016 admite los siguientes dos escenarios de equilibrio de carga:System Center Virtual Machine Manager 2016 supports the following two scenarios of load balancing:

  • 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.Load balancing the external network traffic: This scenario includes load balancing the network traffic coming from an external network. El equilibrio de carga se realiza a través de una IP virtual (VIP) pública.Load balancing is done through a public Virtual IP (VIP). 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.The workload VMs can be connected to a no isolation VM network or to a network virtualization enabled VM network.

  • 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.Load balancing the internal network traffic (Internal load balancing): This scenario includes load balancing the network traffic of workloads in the VM network that is enabled for network virtualization. El equilibrio de carga se realiza a través de una IP virtual.Load balancing is done through a VIP.

    Nota

    VMM 2016 admite la configuración de equilibrio de carga mediante el uso de PowerShell.VMM 2016 supports configuration of load balancing by using PowerShell. La configuración a través de plantillas de servicio no se admite actualmente.Configuration through Service templates is currently not supported.

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.This article provides information about how to configure the load balancing of workload VMs by using PowerShell.

Antes de empezarBefore you start

Asegúrese de lo siguiente:Ensure the following:

Crear una plantilla de dirección VIPCreate a VIP template

Siga los pasos siguientes para configurar las IP virtuales para equilibrar la carga de las máquinas virtuales de carga de trabajo (DIP).Use the following procedures to configure the VIPs to load balance the workload VMs (DIPs).

  1. En la consola VMM, haga clic en Tejido > Plantillas de VIP.In VMM console, click Fabric > VIP Templates. Haga clic con el botón derecho y seleccione Crear plantilla de VIP.Right-click and select Create VIP Template.

    Nombre de la plantilla de IP virtual

  2. En la página Nombre, proporcione el nombre y una descripción opcional.In the Name page, provide the name and optional description. Especifique el Puerto de IP virtual que se usará como puerto de front-end para el tráfico de red.Specify the Virtual IP Port that will be used as front end port for the network traffic. En el Puerto back-end, especifique el puerto en el que se hospedan las cargas de trabajo de back-end.In the Backend port, specify the port on which the backend workloads are hosted. Haga clic en Siguiente.Click Next.

    Nombre de la plantilla de IP virtual

  3. En Especificar un tipo de plantilla, seleccione Específico.In Specify a Template type, select Specific. En Fabricante, seleccione Microsoft.In Manufacturer, select Microsoft. En Modelo, seleccione Controladora de red de Microsoft.In Model, select Microsoft Network Controller. Haga clic en Siguiente.Click Next.

    Nombre de la plantilla de IP virtual

  4. En Especificar opciones de protocolo, seleccione la opción Personalizada y escriba TCP/UDP en Nombre del protocolo.In Specify Protocol options, select the Custom option and type TCP/UDP in Protocol name. Haga clic en Siguiente.Click Next.

    Nota

    SLB solo admite el equilibrio de carga de nivel 4 del tráfico TCP/UDP.SLB supports only layer 4 load balancing of TCP/UDP traffic. No se admiten los protocolos HTTP / HTTPS.HTTP/ HTTPS protocols are not supported.

  5. Para Persistencia y Equilibrio de carga, use los valores predeterminados.For Persistence and Load Balancing, use the defaults. Haga clic en Siguiente.Click Next.

    Nombre de la plantilla de IP virtual

    Nota

    SLB no admite la persistencia y diferentes métodos de equilibrio de carga.SLB doesn’t support persistence and different Load balancing methods. De forma predeterminada, SLB usa el algoritmo Round Robin para el equilibrio de carga.By default, SLB uses Round Robin algorithm for load balancing.

  6. Opcionalmente, inserte los valores adecuados en Monitores de estado.In Health Monitors, optionally, insert appropriate values. Haga clic en Siguiente.Click Next.

    Opciones: TCP y HTTP se admiten como protocolos de monitor de estado si se usa SLB.Options: TCP and HTTP are supported as health monitor protocols if SLB is used.

  7. Compruebe la configuración y haga clic en Finalizar.Verify the settings, and click Finish.

Una vez que se crea la plantilla, puede encontrar esto en Tejido > Plantillas de VIP.Once the template is created, you can find this under Fabric > VIP Templates.

Crear una IP virtual con PowerShellCreate a VIP using PowerShell

Cree una IP virtual mediante los siguientes scripts de ejemplo.Create a VIP by using the following example scripts. Seleccione el script según el tipo de tráfico de red en el que quiera equilibrar la carga:Select the script based on the type of network traffic that you want to load balance:

Script para crear una IP virtual para equilibrar la carga del tráfico de red externoScript for creating a VIP to load balance external network traffic

Script para crear una IP virtual para equilibrar la carga del tráfico de red internoScript for creating a VIP to load balance internal network traffic

Script para crear una IP virtual para equilibrar la carga del tráfico de red externoScript for creating VIP to load balance external network traffic

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.The following example script creates the VIP from a public IP network to load balance the workload VMs WGB-001 & WGB-002 on port 80.

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.The workload VMs can be connected to a no isolation network or network virtualization enabled VM networks.

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.In the script parameters section, substitute the actual values that match your test environment for the samples used in this script.
  • Asegúrese de ejecutar el script en un servidor VMM o en un equipo que ejecute la consola VMM.Ensure you run the script on a VMM server, or on a computer running the VMM console.
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 internoScript for creating VIP to load balance internal network traffic

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.For the following example script, we created a new VIP template by name ILB-VIP-Template for load balancing the port 443 using the procedure detailed in the previous section. 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.The script creates a VIP from tenant VM network to load balance the VMs ILB-001 & ILB-002, which are part of the same tenant VM network.

Nota

  • En el escenario de equilibrio de carga interno, la IP virtual procede de la red de máquinas virtuales de inquilino.In the Internal load balancing scenario, the VIP comes from the tenant VM network. Por tanto, $VipNetworkName es el mismo nombre de red de máquinas virtuales de inquilino donde están conectadas las máquinas virtuales.So, the $VipNetworkName is the same tenant VM network name where the VMs are connected. 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.Ensure that the tenant VM network IP pool has the IPs reserved for VIPs. $VipAddress es una de las direcciones IP de las IP virtuales reservadas.The $VipAddress is one of the IP addresses from the reserved VIPs.

  • 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.In the script parameters section, substitute the actual values that match your test environment for the samples used in this script.

  • Asegúrese de ejecutar el script en un servidor VMM o en un equipo que ejecute la consola VMM.Ensure you run the script on a VMM server, or on a computer running the VMM console.

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;