Udostępnij za pośrednictwem


Szybki start: tworzenie wewnętrznego modułu równoważenia obciążenia w celu równoważenia obciążenia maszyn wirtualnych przy użyciu programu Azure PowerShell

Rozpocznij pracę z usługą Azure Load Balancer, tworząc wewnętrzny moduł równoważenia obciążenia i dwie maszyny wirtualne za pomocą programu Azure PowerShell. Ponadto wdrażasz inne zasoby, w tym usługę Azure Bastion, bramę translatora adresów sieciowych, sieć wirtualną i wymagane podsieci.

Diagram zasobów wdrożonych dla wewnętrznego modułu równoważenia obciążenia.

Wymagania wstępne

  • Konto platformy Azure z aktywną subskrypcją. Bezpłatne tworzenie konta

  • Zainstalowany lokalnie program Azure PowerShell lub usługa Azure Cloud Shell

Jeśli postanowisz zainstalować program PowerShell i używać go lokalnie, ten artykuł wymaga modułu Azure PowerShell w wersji 5.4.1 lub nowszej. Uruchom polecenie Get-Module -ListAvailable Az, aby dowiedzieć się, jaka wersja jest zainstalowana. Jeśli konieczne będzie uaktualnienie, zobacz Instalowanie modułu Azure PowerShell. Jeśli używasz programu PowerShell lokalnie, musisz też uruchomić polecenie Connect-AzAccount, aby utworzyć połączenie z platformą Azure.

Tworzenie grupy zasobów

Grupa zasobów platformy Azure to logiczny kontener przeznaczony do wdrażania zasobów platformy Azure i zarządzania nimi.

Utwórz grupę zasobów za pomocą polecenia New-AzResourceGroup.

$rg = @{
    Name = 'CreateINTLBQS-rg'
    Location = 'westus2'
}
New-AzResourceGroup @rg

Konfigurowanie sieci wirtualnej

Podczas tworzenia wewnętrznego modułu równoważenia obciążenia sieć wirtualna jest skonfigurowana jako sieć modułu równoważenia obciążenia. Przed wdrożeniem maszyn wirtualnych i przetestowaniem modułu równoważenia obciążenia utwórz pomocnicze zasoby sieci wirtualnej.

  • Tworzenie publicznego adresu IP dla bramy translatora adresów sieciowych

  • Tworzenie sieci wirtualnej dla maszyn wirtualnych zaplecza

  • Tworzenie sieciowej grupy zabezpieczeń w celu zdefiniowania połączeń przychodzących z siecią wirtualną

  • Tworzenie hosta usługi Azure Bastion w celu bezpiecznego zarządzania maszynami wirtualnymi w puli zaplecza

Tworzenie publicznego adresu IP

Użyj polecenia New-AzPublicIpAddress , aby utworzyć publiczny adres IP bramy translatora adresów sieciowych.

## Create public IP address for NAT gateway and place IP in variable ##
$gwpublicip = @{
    Name = 'myNATgatewayIP'
    ResourceGroupName = $rg.name
    Location = 'westus2'
    Sku = 'Standard'
    AllocationMethod = 'static'
    Zone = 1,2,3
}
$gwpublicip = New-AzPublicIpAddress @gwpublicip

Aby utworzyć strefowy publiczny adres IP w strefie 1, użyj następującego polecenia:

## Create a zonal public IP address for NAT gateway and place IP in variable ##
$gwpublicip = @{
    Name = 'myNATgatewayIP'
    ResourceGroupName = $rg.name
    Location = 'westus2'
    Sku = 'Standard'
    AllocationMethod = 'static'
    Zone = 1
}
$gwpublicip = New-AzPublicIpAddress @gwpublicip

Uwaga

Publiczny adres IP jest używany przez bramę translatora adresów sieciowych do zapewnienia łączności wychodzącej dla maszyn wirtualnych w puli zaplecza. Jest to zalecane w przypadku tworzenia wewnętrznego modułu równoważenia obciążenia i konieczności posiadania łączności wychodzącej zasobów puli zaplecza. Aby uzyskać więcej informacji, zobacz Brama translatora adresów sieciowych.

Tworzenie sieci wirtualnej, sieciowej grupy zabezpieczeń, hosta bastionu i bramy translatora adresów sieciowych

Ważne

Ceny godzinowe zaczynają się od momentu wdrożenia usługi Bastion, niezależnie od użycia danych wychodzących. Aby uzyskać więcej informacji, zobacz Cennik i jednostki SKU. Jeśli wdrażasz usługę Bastion w ramach samouczka lub testu, zalecamy usunięcie tego zasobu po zakończeniu korzystania z niego.


## Create NAT gateway resource ##
$nat = @{
    ResourceGroupName = $rg.name
    Name = 'myNATgateway'
    IdleTimeoutInMinutes = '10'
    Sku = 'Standard'
    Location = 'westus2'
    PublicIpAddress = $gwpublicip
}
$natGateway = New-AzNatGateway @nat

## Create backend subnet config ##
$subnet = @{
    Name = 'myBackendSubnet'
    AddressPrefix = '10.1.0.0/24'
    NatGateway = $natGateway
}
$subnetConfig = New-AzVirtualNetworkSubnetConfig @subnet 

## Create Azure Bastion subnet. ##
$bastsubnet = @{
    Name = 'AzureBastionSubnet' 
    AddressPrefix = '10.1.1.0/24'
}
$bastsubnetConfig = New-AzVirtualNetworkSubnetConfig @bastsubnet

## Create the virtual network ##
$net = @{
    Name = 'myVNet'
    ResourceGroupName = $rg.name
    Location = 'westus2'
    AddressPrefix = '10.1.0.0/16'
    Subnet = $subnetConfig,$bastsubnetConfig
}
$vnet = New-AzVirtualNetwork @net

## Create public IP address for bastion host. ##
$bastionip = @{
    Name = 'myBastionIP'
    ResourceGroupName = $rg.name
    Location = 'westus2'
    Sku = 'Standard'
    AllocationMethod = 'Static'
}
$bastionip = New-AzPublicIpAddress @bastionip

## Create bastion host ##
$bastion = @{
    ResourceGroupName = $rg.name
    Name = 'myBastion'
    PublicIpAddress = $bastionip
    VirtualNetwork = $vnet
}
New-AzBastion @bastion -AsJob

## Create rule for network security group and place in variable. ##
$nsgrule = @{
    Name = 'myNSGRuleHTTP'
    Description = 'Allow HTTP'
    Protocol = '*'
    SourcePortRange = '*'
    DestinationPortRange = '80'
    SourceAddressPrefix = 'Internet'
    DestinationAddressPrefix = '*'
    Access = 'Allow'
    Priority = '2000'
    Direction = 'Inbound'
}
$rule1 = New-AzNetworkSecurityRuleConfig @nsgrule

## Create network security group ##
$nsg = @{
    Name = 'myNSG'
    ResourceGroupName = $rg.name
    Location = 'westus2'
    SecurityRules = $rule1
}
New-AzNetworkSecurityGroup @nsg

Tworzenie modułu równoważenia obciążenia

W tej sekcji opisano szczegółowo procedurę tworzenia i konfigurowania następujących składników modułu równoważenia obciążenia:

## Place virtual network created in previous step into a variable. ##
$net = @{
    Name = 'myVNet'
    ResourceGroupName = $rg.name
}
$vnet = Get-AzVirtualNetwork @net

## Create load balancer frontend configuration and place in variable. ##
$lbip = @{
    Name = 'myFrontEnd'
    PrivateIpAddress = '10.1.0.4'
    SubnetId = $vnet.subnets[0].Id
}
$feip = New-AzLoadBalancerFrontendIpConfig @lbip

## Create backend address pool configuration and place in variable. ##
$bepool = New-AzLoadBalancerBackendAddressPoolConfig -Name 'myBackEndPool'

## Create the health probe and place in variable. ##
$probe = @{
    Name = 'myHealthProbe'
    Protocol = 'tcp'
    Port = '80'
    IntervalInSeconds = '360'
    ProbeCount = '5'
}
$healthprobe = New-AzLoadBalancerProbeConfig @probe

## Create the load balancer rule and place in variable. ##
$lbrule = @{
    Name = 'myHTTPRule'
    Protocol = 'tcp'
    FrontendPort = '80'
    BackendPort = '80'
    IdleTimeoutInMinutes = '15'
    FrontendIpConfiguration = $feip
    BackendAddressPool = $bePool
}
$rule = New-AzLoadBalancerRuleConfig @lbrule -EnableTcpReset

## Create the load balancer resource. ##
$loadbalancer = @{
    ResourceGroupName = $rg.name
    Name = 'myLoadBalancer'
    Location = 'westus2'
    Sku = 'Standard'
    FrontendIpConfiguration = $feip
    BackendAddressPool = $bePool
    LoadBalancingRule = $rule
    Probe = $healthprobe
}
New-AzLoadBalancer @loadbalancer

Tworzenie maszyn wirtualnych

W tej sekcji utworzysz dwie maszyny wirtualne dla puli zaplecza modułu równoważenia obciążenia.

# Set the administrator and password for the VMs. ##
$cred = Get-Credential

## Place virtual network created in previous step into a variable. ##
$net = @{
    Name = 'myVNet'
    ResourceGroupName = $rg.name
}
$vnet = Get-AzVirtualNetwork @net

## Place the load balancer into a variable. ##
$lb = @{
    Name = 'myLoadBalancer'
    ResourceGroupName = $rg.name
}
$bepool = Get-AzLoadBalancer @lb  | Get-AzLoadBalancerBackendAddressPoolConfig

## Place the network security group into a variable. ##
$sg = @{
    Name = 'myNSG'
    ResourceGroupName = $rg.name
}
$nsg = Get-AzNetworkSecurityGroup @sg

## For loop with variable to create virtual machines for load balancer backend pool. ##
for ($i=1; $i -le 2; $i++)
{
    ## Command to create network interface for VMs ##
    $nic = @{
    Name = "myNicVM$i"
    ResourceGroupName = $rg.name
    Location = 'westus2'
    Subnet = $vnet.Subnets[0]
    NetworkSecurityGroup = $nsg
    LoadBalancerBackendAddressPool = $bepool
    }
    $nicVM = New-AzNetworkInterface @nic

    ## Create a virtual machine configuration for VMs ##
    $vmsz = @{
        VMName = "myVM$i"
        VMSize = 'Standard_DS1_v2'  
    }
    $vmos = @{
        ComputerName = "myVM$i"
        Credential = $cred
    }
    $vmimage = @{
        PublisherName = 'MicrosoftWindowsServer'
        Offer = 'WindowsServer'
        Skus = '2019-Datacenter'
        Version = 'latest'    
    }
    $vmConfig = New-AzVMConfig @vmsz `
        | Set-AzVMOperatingSystem @vmos -Windows `
        | Set-AzVMSourceImage @vmimage `
        | Add-AzVMNetworkInterface -Id $nicVM.Id

    ## Create the virtual machine for VMs ##
    $vm = @{
        ResourceGroupName = $rg.name
        Location = 'westus2'
        VM = $vmConfig
        Zone = "$i"
    }
}
New-AzVM @vm -asjob

Wdrożenia maszyn wirtualnych i hosta bastionu są przesyłane jako zadania programu PowerShell. Aby wyświetlić stan zadań, użyj polecenia Get-Job:

Get-Job

Id     Name            PSJobTypeName   State         HasMoreData     Location             Command
--     ----            -------------   -----         -----------     --------             -------
1      Long Running O… AzureLongRunni… Completed     True            localhost            New-AzBastion
2      Long Running O… AzureLongRunni… Completed     True            localhost            New-AzVM
3      Long Running O… AzureLongRunni… Completed     True            localhost            New-AzVM

Uwaga

Platforma Azure udostępnia domyślny adres IP dostępu wychodzącego dla maszyn wirtualnych, które nie są przypisane do publicznego adresu IP lub znajdują się w puli zaplecza wewnętrznego podstawowego modułu równoważenia obciążenia platformy Azure. Domyślny mechanizm adresów IP dostępu wychodzącego zapewnia wychodzący adres IP, który nie jest konfigurowalny.

Domyślny adres IP dostępu wychodzącego jest wyłączony, gdy wystąpi jedno z następujących zdarzeń:

  • Publiczny adres IP jest przypisywany do maszyny wirtualnej.
  • Maszyna wirtualna jest umieszczana w puli zaplecza standardowego modułu równoważenia obciążenia z regułami ruchu wychodzącego lub bez tych reguł.
  • Zasób usługi Azure NAT Gateway jest przypisywany do podsieci maszyny wirtualnej.

Maszyny wirtualne tworzone przy użyciu zestawów skalowania maszyn wirtualnych w trybie elastycznej aranżacji nie mają domyślnego dostępu wychodzącego.

Aby uzyskać więcej informacji na temat połączeń wychodzących na platformie Azure, zobacz Domyślny dostęp wychodzący na platformie Azure i Używanie źródłowego tłumaczenia adresów sieciowych (SNAT) dla połączeń wychodzących.

Instalacja usług IIS

Zainstaluj rozszerzenie niestandardowego skryptu przy użyciu polecenia Set-AzVMExtension.

Rozszerzenie jest uruchamiane PowerShell Add-WindowsFeature Web-Server w celu zainstalowania serwera internetowego usług IIS, a następnie aktualizuje stronę Default.htm w celu wyświetlenia nazwy hosta maszyny wirtualnej:

Ważne

Przed kontynuowaniem upewnij się, że wdrożenia maszyn wirtualnych zostały ukończone z poprzednich kroków. Służy Get-Job do sprawdzania stanu zadań wdrażania maszyny wirtualnej.

## For loop with variable to install custom script extension on virtual machines. ##
for ($i=1; $i -le 2; $i++)
{
    $ext = @{
        Publisher = 'Microsoft.Compute'
        ExtensionType = 'CustomScriptExtension'
        ExtensionName = 'IIS'
        ResourceGroupName = $rg.name
        VMName = "myVM$i"
        Location = 'westus2'
        TypeHandlerVersion = '1.8'
        SettingString = '{"commandToExecute":"powershell Add-WindowsFeature Web-Server; powershell Add-Content -Path \"C:\\inetpub\\wwwroot\\Default.htm\" -Value $($env:computername)"}'
    }
    Set-AzVMExtension @ext -AsJob
}

Rozszerzenia są wdrażane jako zadania programu PowerShell. Aby wyświetlić stan zadań instalacji, użyj polecenia Get-Job:

Get-Job

Id     Name            PSJobTypeName   State         HasMoreData     Location             Command
--     ----            -------------   -----         -----------     --------             -------
8      Long Running O… AzureLongRunni… Running       True            localhost            Set-AzVMExtension
9      Long Running O… AzureLongRunni… Running       True            localhost            Set-AzVMExtension

Tworzenie testowej maszyny wirtualnej

Utwórz maszynę wirtualną za pomocą następujących funkcji:

# Set the administrator and password for the VM. ##
$cred = Get-Credential

## Place the virtual network into a variable. ##
$net = @{
    Name = 'myVNet'
    ResourceGroupName = $rg.name
}
$vnet = Get-AzVirtualNetwork @net

## Place the network security group into a variable. ##
$sg = @{
    Name = 'myNSG'
    ResourceGroupName = $rg.name 
}
$nsg = Get-AzNetworkSecurityGroup @sg

## Command to create network interface for VM ##
$nic = @{
    Name = "myNicTestVM"
    ResourceGroupName = $rg.name
    Location = 'westus2'
    Subnet = $vnet.Subnets[0]
    NetworkSecurityGroup = $nsg
}
$nicVM = New-AzNetworkInterface @nic

## Create a virtual machine configuration for VMs ##
$vmsz = @{
    VMName = "myTestVM"
    VMSize = 'Standard_DS1_v2' 
}
$vmos = @{
    ComputerName = "myTestVM"
    Credential = $cred
}
$vmimage = @{
    PublisherName = 'MicrosoftWindowsServer'
    Offer = 'WindowsServer'
    Skus = '2019-Datacenter'
    Version = 'latest'    
}
$vmConfig = New-AzVMConfig @vmsz `
    | Set-AzVMOperatingSystem @vmos -Windows `
    | Set-AzVMSourceImage @vmimage `
    | Add-AzVMNetworkInterface -Id $nicVM.Id

## Create the virtual machine for VMs ##
$vm = @{
    ResourceGroupName = $rg.name
    Location = 'westus2'
    VM = $vmConfig
}
New-AzVM @vm

Testowanie modułu równoważenia obciążenia

  1. Zaloguj się do witryny Azure Portal.

  2. Znajdź prywatny adres IP modułu równoważenia obciążenia na ekranie Przegląd . Wybierz pozycję Wszystkie usługi w menu po lewej stronie, wybierz pozycję Wszystkie zasoby, a następnie wybierz pozycję myLoadBalancer.

  3. Zanotuj lub skopiuj adres obok pozycji Prywatny adres IP w obszarze Przegląd modułu myLoadBalancer.

  4. Wybierz pozycję Wszystkie usługi w menu po lewej stronie, wybierz pozycję Wszystkie zasoby, a następnie z listy zasobów wybierz pozycję myTestVM znajdującą się w grupie zasobów CreateIntLBQS-rg .

  5. Na stronie Przegląd wybierz pozycję Połącz, a następnie wybierz pozycję Bastion.

  6. Wprowadź nazwę użytkownika i hasło wprowadzone podczas tworzenia maszyny wirtualnej.

  7. Otwórz program Internet Explorer na maszynie myTestVM.

  8. Wprowadź adres IP z poprzedniego kroku na pasku adresu przeglądarki. Zostanie wyświetlona niestandardowa strona serwera sieci Web usług IIS.

    Zrzut ekranu przeglądarki internetowej przedstawiający domyślną stronę internetową dla maszyny wirtualnej ze zrównoważonym obciążeniem

Aby zobaczyć, jak moduł równoważenia obciążenia dystrybuuje ruch na wszystkich trzech maszynach wirtualnych, możesz wymusić odświeżenie przeglądarki internetowej z maszyny testowej.

Czyszczenie zasobów

Gdy grupa zasobów, moduł równoważenia obciążenia i pozostałe zasoby nie będą już potrzebne, możesz użyć polecenia Remove-AzResourceGroup .

Remove-AzResourceGroup -Name $rg.name

Następne kroki

W tym przewodniku Szybki start przyjęto następujące założenia:

  • Utworzono wewnętrzny moduł równoważenia obciążenia

  • Dołączone maszyny wirtualne

  • Skonfigurowano regułę ruchu modułu równoważenia obciążenia i sondę kondycji

  • Przetestowano moduł równoważenia obciążenia

Aby dowiedzieć się więcej na temat usługi Azure Load Balancer, przejdź do: