Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Comece a usar o Balanceador de Carga do Azure usando o Azure PowerShell para criar um balanceador de carga público e duas máquinas virtuais. Também implementas outros recursos, incluindo Azure Bastion, NAT Gateway, uma rede virtual e as sub-redes necessárias.
Pré-requisitos
Uma conta do Azure com uma subscrição ativa. Cria uma conta gratuitamente.
Azure PowerShell instalado 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 você estiver executando o PowerShell localmente, também precisará executar Connect-AzAccount para criar uma conexão com o Azure.
Criar um grupo de recursos
Um grupo de recursos do Azure é um contêiner lógico no qual você implanta e gerencia recursos do Azure.
Crie um grupo de recursos usando o New-AzResourceGroup:
$rg = @{
Name = 'load-balancer-ps-rg'
Location = 'eastus'
}
New-AzResourceGroup @rg
Crie um endereço IP público
Use New-AzPublicIpAddress para criar um endereço IP público.
$publicip = @{
Name = 'lb-frontend-ip'
ResourceGroupName = $rg.name
Location = 'eastus'
Sku = 'Standard'
AllocationMethod = 'static'
Zone = 1,2,3
}
New-AzPublicIpAddress @publicip
Para criar um endereço IP público zonal na zona 1, use o seguinte comando:
$publicip = @{
Name = 'lb-frontend-ip'
ResourceGroupName = $rg.name
Location = 'eastus'
Sku = 'Standard'
AllocationMethod = 'static'
Zone = 1
}
New-AzPublicIpAddress @publicip
Criar um balanceador de carga
Esta secção explica como criar e configurar os seguintes componentes do balanceador de carga:
Crie um IP de front-end com New-AzLoadBalancerFrontendIpConfig para o conjunto de IPs de front-end. Este IP recebe o tráfego recebido no balanceador de carga.
Crie um conjunto de endereços de back-end com New-AzLoadBalancerBackendAddressPoolConfig para o tráfego enviado a partir do front-end do balanceador de carga. Implemente as suas máquinas virtuais de back-end neste conjunto.
Crie uma sonda de integridade com Add-AzLoadBalancerProbeConfig que determina a integridade das instâncias de VM de back-end.
Crie uma regra de balanceador de carga com Add-AzLoadBalancerRuleConfig que define como o tráfego é distribuído para as VMs.
Crie um balanceador de carga público com New-AzLoadBalancer.
## Place public IP created in previous steps into variable. ##
$pip = @{
Name = 'lb-frontend-ip'
ResourceGroupName = $rg.name
}
$publicIp = Get-AzPublicIpAddress @pip
## Create load balancer frontend configuration and place in variable. ##
$fip = @{
Name = 'lb-frontend'
PublicIpAddress = $publicIp
}
$feip = New-AzLoadBalancerFrontendIpConfig @fip
## Create backend address pool configuration and place in variable. ##
$bepool = New-AzLoadBalancerBackendAddressPoolConfig -Name 'lb-backend-pool'
## Create the health probe and place in variable. ##
$probe = @{
Name = 'lb-health-probe'
Protocol = 'tcp'
Port = '80'
IntervalInSeconds = '360'
ProbeCount = '5'
}
$healthprobe = New-AzLoadBalancerProbeConfig @probe
## Create the load balancer rule and place in variable. ##
$lbrule = @{
Name = 'lb-HTTP-rule'
Protocol = 'tcp'
FrontendPort = '80'
BackendPort = '80'
IdleTimeoutInMinutes = '15'
FrontendIpConfiguration = $feip
BackendAddressPool = $bePool
}
$rule = New-AzLoadBalancerRuleConfig @lbrule -EnableTcpReset -DisableOutboundSNAT
## Create the load balancer resource. ##
$loadbalancer = @{
ResourceGroupName = $rg.name
Name = 'load-balancer'
Location = 'eastus'
Sku = 'Standard'
FrontendIpConfiguration = $feip
BackendAddressPool = $bePool
LoadBalancingRule = $rule
Probe = $healthprobe
}
New-AzLoadBalancer @loadbalancer
Configurar uma rede virtual
Antes de implantar VMs e testar seu balanceador de carga, crie os recursos de rede virtual de suporte.
Crie uma rede virtual para as máquinas virtuais de back-end.
Crie um grupo de segurança de rede para definir conexões de entrada para sua rede virtual.
Crie um host do Azure Bastion para gerenciar com segurança as máquinas virtuais no pool de back-end.
Utilize um gateway NAT para fornecer acesso de saída à Internet aos recursos no conjunto de back-end do seu balanceador de carga.
Criar rede virtual, grupo de segurança de rede, bastion host e gateway NAT
Crie uma rede virtual com New-AzVirtualNetwork.
Crie uma regra de grupo de segurança de rede com New-AzNetworkSecurityRuleConfig.
Crie um host do Azure Bastion com New-AzBastion.
Crie um grupo de segurança de rede com New-AzNetworkSecurityGroup.
Crie o recurso de gateway NAT com New-AzNatGateway.
Utilize New-AzVirtualNetworkSubnetConfig para associar o gateway NAT à sub-rede da rede virtual.
Importante
O preço por hora aplica-se a partir do momento em que o Bastion é implementado, independentemente da utilização de dados de saída. Para obter mais informações, consulte Preços e SKUs. Se você estiver implantando o Bastion como parte de um tutorial ou teste, recomendamos excluir esse recurso depois de terminar de usá-lo.
## Create public IP address for NAT gateway ##
$ip = @{
Name = 'nat-gw-public-ip'
ResourceGroupName = $rg.name
Location = 'eastus'
Sku = 'Standard'
AllocationMethod = 'Static'
}
$publicIP = New-AzPublicIpAddress @ip
## Create NAT gateway resource ##
$nat = @{
ResourceGroupName = $rg.name
Name = 'lb-nat-gateway'
IdleTimeoutInMinutes = '10'
Sku = 'Standard'
Location = 'eastus'
PublicIpAddress = $publicIP
}
$natGateway = New-AzNatGateway @nat
## Create backend subnet config ##
$subnet = @{
Name = 'backend-subnet'
AddressPrefix = '10.1.0.0/24'
NatGateway = $natGateway
}
$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 = 'lb-vnet'
ResourceGroupName = $rg.name
Location = 'eastus'
AddressPrefix = '10.1.0.0/16'
Subnet = $subnetConfig,$bastsubnetConfig
}
$vnet = New-AzVirtualNetwork @net
## Create public IP address for bastion host. ##
$ip = @{
Name = 'lb-vnet-bastion-ip'
ResourceGroupName = $rg.name
Location = 'eastus'
Sku = 'Standard'
AllocationMethod = 'Static'
}
$publicip = New-AzPublicIpAddress @ip
## Create bastion host ##
$bastion = @{
ResourceGroupName = $rg.name
Name = 'lb-vnet-bastion'
PublicIpAddress = $publicip
VirtualNetwork = $vnet
}
New-AzBastion @bastion -AsJob
## Create rule for network security group and place in variable. ##
$nsgrule = @{
Name = 'lb-nsg-rule'
Description = 'Allow HTTP'
Protocol = '*'
SourcePortRange = '*'
DestinationPortRange = '80'
SourceAddressPrefix = 'Internet'
DestinationAddressPrefix = '*'
Access = 'Allow'
Priority = '200'
Direction = 'Inbound'
}
$rule1 = New-AzNetworkSecurityRuleConfig @nsgrule
## Create network security group ##
$nsg = @{
Name = 'lb-nsg'
ResourceGroupName = $rg.name
Location = 'eastus'
SecurityRules = $rule1
}
New-AzNetworkSecurityGroup @nsg
Criar máquinas virtuais
Nesta seção, você cria as duas máquinas virtuais para o pool de back-end do balanceador de carga.
Crie duas interfaces de rede com o New-AzNetworkInterface.
Defina um nome de utilizador e palavra-passe de administrador para as VMs com o Get-Credential.
Crie as máquinas virtuais com os seguintes cmdlets:
# Set the administrator and password for the VMs. ##
$cred = Get-Credential
## Place the virtual network into a variable. ##
$net = @{
Name = 'lb-vnet'
ResourceGroupName = $rg.name
}
$vnet = Get-AzVirtualNetwork @net
## Place the load balancer into a variable. ##
$lb = @{
Name = 'load-balancer'
ResourceGroupName = $rg.name
}
$bepool = Get-AzLoadBalancer @lb | Get-AzLoadBalancerBackendAddressPoolConfig
## Place the network security group into a variable. ##
$ns = @{
Name = 'lb-nsg'
ResourceGroupName = $rg.name
}
$nsg = Get-AzNetworkSecurityGroup @ns
## 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 = "lb-nic-VM$i"
ResourceGroupName = $rg.name
Location = 'eastus'
Subnet = $vnet.Subnets[0]
NetworkSecurityGroup = $nsg
LoadBalancerBackendAddressPool = $bepool
}
$nicVM = New-AzNetworkInterface @nic
## Create a virtual machine configuration for VMs ##
$vmsz = @{
VMName = "lb-VM$i"
VMSize = 'Standard_DS1_v2'
}
$vmos = @{
ComputerName = "lb-VM$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 = 'eastus'
VM = $vmConfig
Zone = "$i"
}
New-AzVM @vm -AsJob
}
Submeta as implementações das máquinas virtuais e do anfitrião de bastião como tarefas do PowerShell. Para exibir o status dos trabalhos, use 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
Verifique se o Estado da criação da VM está Concluído antes de passar para as próximas etapas.
Nota
O Azure fornece um IP de acesso de saída padrão para VMs que não recebem um endereço IP público ou estão no pool de back-end de um balanceador de carga básico interno do Azure. O mecanismo IP de acesso de saída padrão fornece um endereço IP de saída que não é configurável.
O IP de acesso de saída padrão é desativado quando um dos seguintes eventos acontece:
- Um endereço IP público é atribuído à VM.
- A VM é colocada no pool de back-end de um balanceador de carga padrão, com ou sem regras de saída.
- Um recurso Azure NAT Gateway é atribuído à sub-rede da VM.
As VMs que você cria usando conjuntos de dimensionamento de máquina virtual no modo de orquestração flexível não têm acesso de saída padrão.
Para obter mais informações sobre conexões de saída no Azure, consulte Acesso de saída padrão no Azure e Usar SNAT (Conversão de Endereço de Rede de Origem) para conexões de saída.
Instalar o IIS
Use Set-AzVMExtension para instalar a extensão de script personalizado.
A extensão executa PowerShell Add-WindowsFeature Web-Server para instalar o servidor web IIS e depois atualiza a página Default.htm para mostrar o nome do host da VM:
Importante
Certifique-se de que as implementações da máquina virtual estão concluídas a partir dos passos anteriores antes de prosseguir. Use Get-Job para verificar o status dos trabalhos de implantação da máquina virtual.
## 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 = "lb-VM$i"
Location = 'eastus'
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 tarefas do PowerShell. Para exibir o status dos trabalhos de instalação, use 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
Verifique se o Estado dos trabalhos está Concluído antes de passar para as próximas etapas.
Testar o balanceador de carga
Use Get-AzPublicIpAddress para obter o endereço IP público do balanceador de carga:
$ip = @{
ResourceGroupName = $rg.name
Name = 'lb-frontend-ip'
}
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 padrão do servidor web IIS é exibida no navegador.
Limpar recursos
Quando já não precisares dos recursos, usa o comando Remove-AzResourceGroup para remover o grupo de recursos, o balanceador de carga e os recursos restantes.
Remove-AzResourceGroup -Name $rg.name
Próximos passos
Nesta introdução rápida, irá:
Criou um Balanceador de Carga do Azure
Liguei duas VMs ao balanceador de carga
Testou o balanceador de carga
Para saber mais sobre o Balanceador de Carga do Azure, continue:
What is Balanceador de Carga do Azure? (O que é o Balanceador de Carga do Azure?)