Поделиться через


Балансировка сетевого трафика в структуре SDN с помощью VMM

Вы можете использовать программную подсистему балансировки нагрузки (SLB) для равномерного распределения сетевого трафика между рабочими нагрузками в программно-определяемой сети (SDN), управляемой поставщиками облачных служб (CSP) и арендаторами. Дополнительные сведения см. в статье Программная подсистема балансировки нагрузки (SLB)".

System Center диспетчер виртуальных машин (VMM) поддерживает следующие два сценария балансировки нагрузки:

  • Балансировка нагрузки внешнего сетевого трафика. Этот сценарий включает балансировку сетевого трафика, исходящего из внешней сети. Балансировка нагрузки выполняется через общедоступный виртуальный IP-адрес (VIP). Виртуальные машины рабочей нагрузки можно подключить к сети виртуальных машин без изоляции или к виртуализированной сети.

  • Балансировка нагрузки внутреннего сетевого трафика (внутренняя балансировка нагрузки). Этот сценарий включает балансировку сетевого трафика рабочих нагрузок в сети виртуальной машины, которая включена для виртуализации сети. Балансировка нагрузки выполняется через виртуальный IP-адрес.

    Примечание.

    VMM поддерживает настройку балансировки нагрузки с помощью PowerShell. Конфигурация с помощью шаблонов служб в настоящее время не поддерживается.

В этой статье содержатся сведения о настройке балансировки нагрузки виртуальных машин рабочей нагрузки с помощью PowerShell.

Примечание.

  • С версии VMM 2019 UR1 тип одной подключенной сети изменяется на Подключенную сеть.
  • VMM 2019 UR2 и более поздних версий поддерживает IPv6.

Перед началом работы

Выполните следующие действия:

Создать VIP-шаблон

Используйте следующие процедуры, чтобы настроить VIP для балансировки нагрузки виртуальных машин (DIPs).

  1. В консоли VMM выберите Fabric>Шаблоны виртуальных IP-адресов. Щелкните правой кнопкой мыши и выберите "Создать шаблон VIP".

    Скриншот имени шаблона VIP.

  2. На странице "Имя" укажите имя и необязательное описание. Укажите виртуальный IP-порт , который будет использоваться в качестве внешнего порта для сетевого трафика. В серверном порту укажите порт, на котором размещаются внутренние рабочие нагрузки. Выберите Далее.

    Снимок экрана: тип шаблона VIP.

  3. В разделе " Тип" в разделе "Указание типа шаблона" выберите "Конкретный". Выберите Корпорацию Майкрософт из раскрывающегося списка изготовителя и сетевого контроллера Майкрософт в раскрывающемся списке модели.

  4. Выберите Далее.

    Снимок экрана: параметры VIP-протокола.

  5. В разделе "Указание параметров протокола" выберите настраиваемый параметр и TCP/UDP в имени протокола. Выберите Далее.

    Примечание.

    SLB поддерживает только балансировку нагрузки уровня 4 трафика TCP/UDP. Протоколы HTTP/HTTPS не поддерживаются.

  6. Для сохраняемости и балансировки нагрузки используйте значения по умолчанию. Выберите Далее.

    Снимок экрана монитора работоспособности.

    Примечание.

    SLB не поддерживает сохраняемость и различные методы балансировки нагрузки. По умолчанию SLB использует алгоритм Round Robin для балансировки нагрузки.

  7. При необходимости вставьте соответствующие значения в монитор работоспособности. Выберите Далее.

    Параметры: TCP и HTTP поддерживаются как протоколы мониторинга работоспособности, если используется SLB.

  8. Проверьте параметры и нажмите кнопку "Готово".

После создания шаблона его можно найти в разделе Fabric>.

Создание VIP с помощью PowerShell

Создайте VIP, используя следующие примеры скриптов. Выберите сценарий на основе типа сетевого трафика, который требуется сбалансировать:

Скрипт для создания VIP для распределения нагрузки внешнего сетевого трафика

• Скрипт для создания виртуальных IP-адресов для балансировки нагрузки внутреннего сетевого трафика

Скрипт для создания виртуального IP-адреса (VIP) для балансировки нагрузки внешнего сетевого трафика

В следующем примере скрипта создается VIP из общедоступной IP-сети для балансировки нагрузки на виртуальные машины WGB-001 и WGB-002 на порту 80.

Этот скрипт можно использовать для создания VIP-адреса балансировки нагрузки, при этом можно передать как IPv4, так и IPv6 адрес.

Виртуальные машины рабочей нагрузки можно подключить к сети без изоляции или к сетям виртуальных машин с поддержкой виртуализации.

Примечание.

  • В разделе параметров скрипта замените фактические значения, соответствующие тестовой среде для примеров, используемых в этом скрипте.
  • Убедитесь, что сценарий выполняется на сервере VMM или на компьютере под управлением консоли 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;

Скрипт для создания виртуального IP для балансировки нагрузки внутреннего сетевого трафика

В этом примере скрипта мы создали новый VIP-шаблон, названный ILB-VIP-Template, для распределения нагрузки порта 443, используя процедуру, описанную в предыдущем разделе. Сценарий создает виртуальный IP-адрес в сети виртуальных машин арендатора для балансировки нагрузки виртуальных машин ILB-001 и ILB-002, которые являются частью этой же сети виртуальных машин арендатора.

Этот скрипт можно использовать для создания VIP-адреса балансировки нагрузки, при этом можно передать как IPv4, так и IPv6 адрес.

Примечание.

  • В сценарии внутренней балансировки нагрузки VIP-адрес поступает из сети виртуальных машин арендатора. Таким образом, $VipNetworkName — это то же имя сети виртуальной машины клиента, где подключены виртуальные машины. Убедитесь, что пул IP-адресов сети виртуальных машин арендатора содержит IP-адреса, зарезервированные для виртуальных IP-адресов (VIPs). $VipAddress является одним из IP-адресов из числа зарезервированных VIP-адресов.
  • В разделе параметров скрипта замените фактические значения, соответствующие тестовой среде для примеров, используемых в этом скрипте.
  • Убедитесь, что сценарий выполняется на сервере VMM или на компьютере под управлением консоли 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;