Балансировка сетевого трафика в структуре SDN с помощью VMM
Вы можете использовать программную подсистему балансировки нагрузки (SLB) для равномерного распределения сетевого трафика между рабочими нагрузками в программно-определяемой сети (SDN), управляемой поставщиками облачных служб (CSP) и арендаторами. Дополнительные сведения см. в статье Программная подсистема балансировки нагрузки (SLB)".
System Center диспетчер виртуальных машин (VMM) поддерживает следующие два сценария балансировки нагрузки:
Балансировка нагрузки внешнего сетевого трафика. Этот сценарий включает балансировку сетевого трафика, исходящего из внешней сети. Балансировка нагрузки выполняется через общедоступный виртуальный IP-адрес (VIP). Виртуальные машины рабочей нагрузки можно подключить к сети виртуальной машины изоляции или к сети виртуальной машины с поддержкой виртуализации сети.
Балансировка нагрузки внутреннего сетевого трафика (внутренняя балансировка нагрузки). Этот сценарий включает балансировку сетевого трафика рабочих нагрузок в сети виртуальной машины, которая включена для виртуализации сети. Балансировка нагрузки выполняется через виртуальный IP-адрес.
Примечание.
VMM 2016 поддерживает настройку балансировки нагрузки с помощью PowerShell. Конфигурация с помощью шаблонов служб в настоящее время не поддерживается.
В этой статье содержатся сведения о настройке балансировки нагрузки виртуальных машин рабочей нагрузки с помощью PowerShell.
Примечание.
- С версии VMM 2019 UR1 тип подключенной сети изменяется на подключенную сеть.
- VMM 2019 UR2 и более поздних версий поддерживает IPv6.
Перед началом работы
Выполните следующие действия:
Развертываются сетевой контроллер SDN и подсистема балансировки нагрузки программного обеспечения SDN.
Необходимые виртуальные машины создаются в соответствующих сетях и определяются для балансировки нагрузки.
Создание шаблона ВИРТУАЛЬНЫХ IP-адресов
Используйте следующие процедуры, чтобы настроить виртуальные ip-адреса для балансировки нагрузки виртуальных машин рабочей нагрузки (DIPs).
В консоли VMM выберите Шаблоны ВИРТУАЛЬНЫх IP-адресов Fabric>. Щелкните правой кнопкой мыши и выберите "Создать шаблон VIP".
На странице "Имя" укажите имя и необязательное описание. Укажите виртуальный IP-порт , который будет использоваться в качестве внешнего порта для сетевого трафика. В серверном порту укажите порт, на котором размещаются внутренние рабочие нагрузки. Выберите Далее.
В разделе " Тип" в разделе "Указание типа шаблона" выберите "Конкретный". Выберите Корпорацию Майкрософт из раскрывающегося списка изготовителя и сетевого контроллера Майкрософт в раскрывающемся списке модели.
Выберите Далее.
В разделе "Указание параметров протокола" выберите настраиваемый параметр и TCP/UDP в имени протокола. Выберите Далее.
Примечание.
SLB поддерживает только балансировку нагрузки уровня 4 трафика TCP/UDP. Протоколы HTTP/HTTPS не поддерживаются.
Для сохраняемости и балансировки нагрузки используйте значения по умолчанию. Выберите Далее.
Примечание.
SLB не поддерживает сохраняемость и различные методы балансировки нагрузки. По умолчанию SLB использует алгоритм циклического робина для балансировки нагрузки.
При необходимости вставьте соответствующие значения в монитор работоспособности. Выберите Далее.
Параметры: протоколы мониторинга работоспособности поддерживаются tcp и HTTP, если используется SLB.
Проверьте параметры и нажмите кнопку "Готово".
После создания шаблона его можно найти в разделе "Шаблоны ВИРТУАЛЬНЫх 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;