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


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

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

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

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

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

    Примечание.

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

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

Примечание.

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

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

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

Создание шаблона ВИРТУАЛЬНЫХ IP-адресов

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

  1. В консоли VMM выберите Шаблоны ВИРТУАЛЬНЫх IP-адресов Fabric>. Щелкните правой кнопкой мыши и выберите "Создать шаблон VIP".

    Снимок экрана: имя шаблона ВИРТУАЛЬНЫХ IP-адресов.

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

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

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

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

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

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

    Примечание.

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

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

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

    Примечание.

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

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

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

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

После создания шаблона его можно найти в разделе "Шаблоны ВИРТУАЛЬНЫх IP-адресов Fabric>".

Создание виртуального IP-адреса с помощью PowerShell

Создайте ВИРТУАЛЬНЫЙ IP-адрес с помощью следующих примеров скриптов. Выберите сценарий на основе типа сетевого трафика, который требуется сбалансировать:

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

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

Скрипт создания ВИРТУАЛЬНОго IP-адреса для балансировки нагрузки внешнего сетевого трафика

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

Этот скрипт можно использовать для создания виртуального ip-адреса балансировки нагрузки, передав ip-адрес 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-адреса для балансировки внутреннего сетевого трафика

В следующем примере скрипта мы создали новый шаблон ВИРТУАЛЬНОго IP-адреса по имени ILB-VIP-Template для балансировки нагрузки порта 443 с помощью процедуры, описанной в предыдущем разделе. Сценарий создает виртуальный IP-адрес из сети виртуальных машин клиента для балансировки нагрузки виртуальных машин ILB-001 и ILB-002, которые являются частью одной сети виртуальных машин клиента.

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

Примечание.

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