Quickstart: Criar um balanceador interno básico para carregar VMs de equilíbrio utilizando Azure PowerShell

Começa com Balanceador de Carga do Azure utilizando Azure PowerShell para criar um equilibrador de carga pública e duas máquinas virtuais.

Nota

Recomenda-se o balanceador de carga padrão SKU para cargas de trabalho de produção. Para mais informações sobre skus, consulte Balanceador de Carga do Azure SKUs.

Pré-requisitos

  • Uma conta Azure com uma subscrição ativa. Criar uma conta gratuita

  • Azure PowerShell instalados localmente ou Azure Cloud Shell

Se optar por instalar e utilizar o PowerShell localmente, este artigo requer a versão 5.4.1 ou posterior do módulo Azure PowerShell. Execute Get-Module -ListAvailable Az para localizar a versão instalada. Se precisar de atualizar, veja Install Azure PowerShell module (Instalar o módulo do Azure PowerShell). Se estiver a executar o PowerShell localmente, também precisa de correr Connect-AzAccount para criar uma ligação com o Azure.

Criar um grupo de recursos

Um grupo de recursos do Azure é um contentor lógico no qual os recursos do Azure são implementados e geridos.

Criar um grupo de recursos com o New-AzResourceGroup:

$rg = @{
    Name = 'CreatePubLBQS-rg'
    Location = 'westus3'
}
New-AzResourceGroup @rg

Crie um endereço IP público

Utilize o New-AzPublicIpAddress para criar um endereço IP público.

$publicip = @{
    Name = 'myPublicIP'
    ResourceGroupName = 'CreatePubLBQS-rg'
    Location = 'westus3'
    Sku = 'Basic'
    AllocationMethod = 'static'
}
New-AzPublicIpAddress @publicip

Criar um balanceador de carga

Esta secção descreve como pode criar e configurar os seguintes componentes do balanceador de carga:

## Place public IP created in previous steps into variable. ##
$pip = @{
    Name = 'myPublicIP'
    ResourceGroupName = 'CreatePubLBQS-rg'
}
$publicIp = Get-AzPublicIpAddress @pip

## Create load balancer frontend configuration and place in variable. ##
$fip = @{
    Name = 'myFrontEnd'
    PublicIpAddress = $publicIp 
}
$feip = New-AzLoadBalancerFrontendIpConfig @fip

## 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

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

Configurar uma rede virtual

Antes de implementar VMs e testar o seu balanceador de carga, crie os recursos de rede virtual de suporte.

Crie uma rede virtual para as máquinas virtuais backend.

Crie um grupo de segurança de rede para definir ligações de entrada à sua rede virtual.

Crie um anfitrião Azure Bastion para gerir de forma segura as máquinas virtuais na piscina de backend.

Crie rede virtual, grupo de segurança de rede e anfitrião de bastiões.

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

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

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

## Create public IP address for bastion host. ##
$ip = @{
    Name = 'myBastionIP'
    ResourceGroupName = 'CreatePubLBQS-rg'
    Location = 'westus3'
    Sku = 'Standard'
    AllocationMethod = 'Static'
}
$publicip = New-AzPublicIpAddress @ip

## Create bastion host ##
$bastion = @{
    ResourceGroupName = 'CreatePubLBQS-rg'
    Name = 'myBastion'
    PublicIpAddress = $publicip
    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 = 'CreatePubLBQS-rg'
    Location = 'westus3'
    SecurityRules = $rule1
}
New-AzNetworkSecurityGroup @nsg

Criar máquinas virtuais

Nesta secção, irá criar as duas máquinas virtuais para o pool de backend do equilibrador de carga.

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

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

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

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

## Create availability set for the virtual machines. ##
$set = @{
    Name = 'myAvSet'
    ResourceGroupName = 'CreatePubLBQS-rg'
    Location = 'westus3'
    Sku = 'Aligned'
    PlatformFaultDomainCount = '2'
    PlatformUpdateDomainCount =  '2'
}
$avs = New-AzAvailabilitySet @set

## 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 = 'CreatePubLBQS-rg'
        Location = 'westus3'
        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'
        AvailabilitySetId = $avs.Id 
    }
    $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 = 'CreatePubLBQS-rg'
        Location = 'westus3'
        VM = $vmConfig
    }
    New-AzVM @vm -AsJob
}

As colocações das máquinas virtuais e do hospedeiro de bastião são submetidas como trabalhos powerShell. Para ver o estado dos trabalhos, use o 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

Certifique-se de que o Estado da criação de VM está concluído antes de passar aos próximos passos.

Nota

O Azure fornece um IP de acesso de saída predefinido para VMs que não são atribuídos um endereço IP público ou estão no pool back-end de um equilibrador de carga básico interno. O mecanismo IP de acesso de saída padrão fornece um endereço IP de saída que não é configurável.

Para mais informações, consulte o acesso de saída padrão em Azure.

O IP de acesso de saída predefinido é desativado quando um endereço IP público é atribuído ao VM ou o VM é colocado no pool de back-end de um equilibrador de carga padrão, com ou sem regras de saída. Se um recurso de tradução de endereço de rede virtual Azure (NAT) for atribuído à sub-rede da máquina virtual, o IP de acesso de saída predefinido é desativado.

Os VMs que são criados por conjuntos de escala de máquina virtual em modo de orquestração flexível não têm acesso de saída padrão.

Para obter mais informações sobre as ligações de saída em Azure, consulte utilizar a tradução de endereços de rede de origem (SNAT) para ligações de saída.

Instalar o IIS

Utilize a Configuração AzVMExtension para instalar a extensão de script personalizada.

A extensão executa o PowerShell Add-WindowsFeature Web-Server para instalar o servidor Web IIS e, em seguida, atualiza a página Default.htm para mostrar o nome do anfitrião da VM:

Importante

Certifique-se de que as colocações da máquina virtual foram concluídas a partir dos passos anteriores antes de prosseguir. Utilize Get-Job para verificar o estado dos trabalhos de implantação de máquinas virtuais.

## 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 = 'CreatePubLBQS-rg'
    VMName = "myVM$i"
    Location = 'westus3'
    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
}

As extensões são implementadas como trabalhos powerShell. Para visualizar o estado dos trabalhos de instalação, utilize o 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

Certifique-se de que o estado dos trabalhos está concluído antes de passar aos próximos passos.

Testar o balanceador de carga

Utilize o Get-AzPublicIpAddress para obter o endereço IP público do equilibrista de carga:

$ip = @{
    ResourceGroupName = 'CreatePubLBQS-rg'
    Name = 'myPublicIP'
}  
Get-AzPublicIPAddress @ip | select IpAddress

Copie o endereço IP público e cole-o na barra de endereço do browser. A página predefinida do servidor Web do IIS é apresentada no browser.

Limpar os recursos

Quando já não é necessário, pode utilizar o comando Remove-AzResourceGroup para remover o grupo de recursos, o equilibrador de carga e os recursos restantes.

Remove-AzResourceGroup -Name 'CreatePubLBQS-rg'

Passos seguintes

Neste início rápido, irá:

  • Criou um Balanceador de Carga do Azure

  • Anexado 2 VMs ao equilibrador de carga

  • Testou o equilibrador de carga

Para saber mais sobre Balanceador de Carga do Azure, continue a:

What is Azure Load Balancer? (O que é o Balanceador de Carga do Azure?)