Udostępnij za pośrednictwem


Równoważenie obciążenia ruchu sieciowego w sieci szkieletowej SDN przy użyciu programu VMM

Za pomocą programowego modułu równoważenia obciążenia (SLB) można równomiernie dystrybuować ruch sieciowy między obciążeniami w programie Software Define Networking (SDN) zarządzanym przez dostawców usług w chmurze (CSP) i dzierżawców. Aby uzyskać więcej informacji, zobacz Software Load Balancer (SLB).

Program System Center Virtual Machine Manager (VMM) obsługuje następujące dwa scenariusze równoważenia obciążenia:

  • Równoważenie obciążenia ruchu sieciowego zewnętrznego: ten scenariusz obejmuje równoważenie obciążenia ruchu sieciowego pochodzącego z sieci zewnętrznej. Równoważenie obciążenia odbywa się za pośrednictwem publicznego wirtualnego adresu IP (VIP). Maszyny wirtualne obciążenia mogą być połączone z siecią maszyn wirtualnych bez izolacji lub z siecią maszyn wirtualnych z włączoną wirtualizacją sieci.

  • Równoważenie obciążenia wewnętrznego ruchu sieciowego (wewnętrzne równoważenie obciążenia): Ten scenariusz obejmuje równoważenie obciążenia ruchu sieciowego obciążeń w sieci maszyn wirtualnych, która jest włączona na potrzeby wirtualizacji sieci. Równoważenie obciążenia odbywa się za pośrednictwem adresu VIP.

    Uwaga

    Program VMM 2016 obsługuje konfigurację równoważenia obciążenia przy użyciu programu PowerShell. Konfiguracja za pomocą szablonów usługi nie jest obecnie obsługiwana.

Ten artykuł zawiera informacje o sposobie konfigurowania równoważenia obciążenia maszyn wirtualnych obciążeń przy użyciu programu PowerShell.

Uwaga

  • Z programu VMM 2019 UR1 jedna połączona sieć jest zmieniana na Połączona sieć
  • Program VMM 2019 UR2 lub nowszy obsługuje protokół IPv6.

Przed rozpoczęciem

Uwaga:

  • Kontroler sieci SDN i programowy moduł równoważenia obciążenia SDN są wdrażane.

  • Wymagane maszyny wirtualne są tworzone w odpowiednich sieciach i są identyfikowane na potrzeby równoważenia obciążenia.

Tworzenie szablonu adresu VIP

Użyj poniższych procedur, aby skonfigurować adresy VIP w celu równoważenia obciążenia maszyn wirtualnych obciążenia (DIPS).

  1. W konsoli programu VMM wybierz pozycję Szablony adresów VIP sieci szkieletowej>. Kliknij prawym przyciskiem myszy i wybierz pozycję Utwórz szablon adresu VIP.

    Zrzut ekranu przedstawiający nazwę szablonu adresu VIP.

  2. Na stronie Nazwa podaj nazwę i opcjonalny opis. Określ port wirtualnego adresu IP, który będzie używany jako port frontonu dla ruchu sieciowego. W porcie zaplecza określ port, na którym są hostowane obciążenia zaplecza. Wybierz Dalej.

    Zrzut ekranu przedstawiający typ szablonu adresu VIP.

  3. W obszarze Typ w obszarze Określ typ szablonu wybierz pozycję Określone. Wybierz pozycję Microsoft z listy rozwijanej Manufacturer (Producent) i Microsoft Network Controller (Kontroler sieci firmy Microsoft) z listy rozwijanej Model (Model).

  4. Wybierz Dalej.

    Zrzut ekranu przedstawiający opcje protokołu VIP.

  5. W obszarze Określ opcje protokołu wybierz opcję Niestandardowa i protokół TCP/UDP w polu Nazwa protokołu. Wybierz Dalej.

    Uwaga

    SLB obsługuje tylko równoważenie obciążenia warstwy 4 ruchu TCP/UDP. Protokoły HTTP/HTTPS nie są obsługiwane.

  6. W przypadku trwałości i równoważenia obciążenia użyj wartości domyślnych. Wybierz Dalej.

    Zrzut ekranu przedstawiający monitor kondycji.

    Uwaga

    SLB nie obsługuje trwałości i różnych metod równoważenia obciążenia. Domyślnie usługa SLB używa algorytmu działania okrężnego do równoważenia obciążenia.

  7. W obszarze Monitory kondycji opcjonalnie wstaw odpowiednie wartości. Wybierz Dalej.

    Opcje: protokoły TCP i HTTP są obsługiwane jako protokoły monitora kondycji, jeśli jest używana usługa SLB.

  8. Sprawdź ustawienia i wybierz pozycję Zakończ.

Po utworzeniu szablonu można go znaleźć w obszarze Szablony adresów VIP sieci szkieletowej>.

Tworzenie adresu VIP przy użyciu programu PowerShell

Utwórz adres VIP przy użyciu poniższych przykładowych skryptów. Wybierz skrypt na podstawie typu ruchu sieciowego, który chcesz zrównoważyć obciążenie:

Skrypt tworzenia adresu VIP w celu równoważenia obciążenia ruchu sieciowego zewnętrznego

Skrypt tworzenia adresu VIP w celu równoważenia obciążenia ruchu sieciowego wewnętrznego

Skrypt tworzenia adresu VIP w celu równoważenia obciążenia ruchu sieciowego zewnętrznego

Poniższy przykładowy skrypt tworzy adres VIP z publicznej sieci IP w celu równoważenia obciążenia maszyn wirtualnych obciążeń WGB-001 i WGB-002 na porcie 80.

Ten skrypt może służyć do tworzenia adresu VIP równoważenia obciążenia, przekazując również adres VIP IPv6.

Maszyny wirtualne obciążenia mogą być połączone z siecią izolacyjną ani siecią maszyn wirtualnych z włączoną wirtualizacją sieci.

Uwaga

  • W sekcji parametry skryptu zastąp rzeczywiste wartości zgodne ze środowiskiem testowym dla przykładów używanych w tym skrypcie.
  • Upewnij się, że skrypt został uruchomiony na serwerze programu VMM lub na komputerze z uruchomioną konsolą programu 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;

Skrypt tworzenia adresu VIP w celu równoważenia obciążenia ruchu sieciowego wewnętrznego

W poniższym przykładowym skrypcie utworzyliśmy nowy szablon adresu VIP o nazwie ILB-VIP-Template na potrzeby równoważenia obciążenia portu 443 przy użyciu procedury opisanej w poprzedniej sekcji. Skrypt tworzy adres VIP z sieci maszyn wirtualnych dzierżawy w celu równoważenia obciążenia maszyn wirtualnych ILB-001 i ILB-002, które są częścią tej samej sieci maszyn wirtualnych dzierżawy.

Ten skrypt może służyć do tworzenia adresu VIP równoważenia obciążenia, przekazując również adres VIP IPv6.

Uwaga

  • W scenariuszu wewnętrznego równoważenia obciążenia adres VIP pochodzi z sieci maszyn wirtualnych dzierżawy. Dlatego $VipNetworkName jest tą samą nazwą sieci maszyny wirtualnej dzierżawy, w której są połączone maszyny wirtualne. Upewnij się, że pula adresów IP sieci maszyn wirtualnych dzierżawy ma adresy IP zarezerwowane dla adresów VIP. $VipAddress jest jednym z adresów IP zarezerwowanych vip.
  • W sekcji parametry skryptu zastąp rzeczywiste wartości zgodne ze środowiskiem testowym dla przykładów używanych w tym skrypcie.
  • Upewnij się, że skrypt został uruchomiony na serwerze programu VMM lub na komputerze z uruchomioną konsolą programu 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;