Tutorial: Criar um balanceador de carga de gateway usando o Azure PowerShell
O Azure Load Balancer consiste em SKUs Standard, Basic e Gateway. O Gateway Load Balancer é usado para inserção transparente de Network Virtual Appliances (NVA). Use o Gateway Load Balancer para cenários que exigem alto desempenho e alta escalabilidade de NVAs.
Neste tutorial, irá aprender a:
- Crie uma rede virtual.
- Crie um grupo de segurança de rede.
- Crie um balanceador de carga de gateway.
- Encadeie um frontend do balanceador de carga ao balanceador de carga do gateway.
Pré-requisitos
- Uma conta do Azure com uma assinatura ativa.Crie uma conta gratuitamente.
- Um Balanceador de Carga do Azure SKU padrão público existente. Para obter mais informações sobre como criar um balanceador de carga, consulte Criar um balanceador de carga público usando o Azure PowerShell.
- Para os fins deste tutorial, o balanceador de carga existente nos exemplos é chamado myLoadBalancer.
- 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 contentor lógico no qual os recursos do Azure são implementados e geridos.
Crie um grupo de recursos com New-AzResourceGroup:
New-AzResourceGroup -Name 'TutorGwLB-rg' -Location 'eastus'
Criar a rede virtual
Uma rede virtual é necessária para os recursos que estão no pool de back-end do balanceador de carga do gateway. Use New-AzVirtualNetwork para criar a rede virtual. Use New-AzBastion para implantar um host bastion para gerenciamento seguro de recursos na rede virtual.
Importante
O preço por hora começa a partir do momento em que o Bastion é implantado, independentemente do uso 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 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/24'
}
$bastsubnetConfig = New-AzVirtualNetworkSubnetConfig @bastsubnet
## Create the virtual network ##
$net = @{
Name = 'myVNet'
ResourceGroupName = 'TutorGwLB-rg'
Location = 'eastus'
AddressPrefix = '10.1.0.0/16'
Subnet = $subnetConfig,$bastsubnetConfig
}
$vnet = New-AzVirtualNetwork @net
## Create public IP address for bastion host. ##
$ip = @{
Name = 'myBastionIP'
ResourceGroupName = 'TutorGwLB-rg'
Location = 'eastus'
Sku = 'Standard'
AllocationMethod = 'Static'
}
$publicip = New-AzPublicIpAddress @ip
## Create bastion host ##
$bastion = @{
ResourceGroupName = 'TutorGwLB-rg'
Name = 'myBastion'
PublicIpAddress = $publicip
VirtualNetwork = $vnet
}
New-AzBastion @bastion -AsJob
Criar o NSG
Use o exemplo a seguir para criar um grupo de segurança de rede. Você configurará as regras NSG necessárias para o tráfego de rede na rede virtual criada anteriormente.
Use New-AzNetworkSecurityRuleConfig para criar regras para o NSG. Use New-AzNetworkSecurityGroup para criar o NSG.
## Create rule for network security group and place in variable. ##
$nsgrule1 = @{
Name = 'myNSGRule-AllowAll'
Description = 'Allow all'
Protocol = '*'
SourcePortRange = '*'
DestinationPortRange = '*'
SourceAddressPrefix = '0.0.0.0/0'
DestinationAddressPrefix = '0.0.0.0/0'
Access = 'Allow'
Priority = '100'
Direction = 'Inbound'
}
$rule1 = New-AzNetworkSecurityRuleConfig @nsgrule1
$nsgrule2 = @{
Name = 'myNSGRule-AllowAll-TCP-Out'
Description = 'Allow all TCP Out'
Protocol = 'TCP'
SourcePortRange = '*'
DestinationPortRange = '*'
SourceAddressPrefix = '0.0.0.0/0'
DestinationAddressPrefix = '0.0.0.0/0'
Access = 'Allow'
Priority = '100'
Direction = 'Outbound'
}
$rule2 = New-AzNetworkSecurityRuleConfig @nsgrule2
## Create network security group ##
$nsg = @{
Name = 'myNSG'
ResourceGroupName = 'TutorGwLB-rg'
Location = 'eastus'
SecurityRules = $rule1,$rule2
}
New-AzNetworkSecurityGroup @nsg
Criar balanceador de carga de gateway
Nesta seção, você criará a configuração e implantará o balanceador de carga do gateway. Use New-AzLoadBalancerFrontendIpConfig para criar a configuração IP de frontend do balanceador de carga.
Você usará New-AzLoadBalancerTunnelInterface para criar duas interfaces de túnel para o balanceador de carga.
Crie um pool de back-end com New-AzLoadBalancerBackendAddressPoolConfig para os NVAs.
Uma sonda de integridade é necessária para monitorar a integridade das instâncias de back-end no balanceador de carga. Use New-AzLoadBalancerProbeConfig para criar o teste de integridade.
O tráfego destinado às instâncias de back-end é roteado com uma regra de balanceamento de carga. Use New-AzLoadBalancerRuleConfig para criar a regra de balanceamento de carga.
Para criar a implantação do balanceador de carga, use New-AzLoadBalancer.
## Place virtual network configuration in a variable for later use. ##
$net = @{
Name = 'myVNet'
ResourceGroupName = 'TutorGwLB-rg'
}
$vnet = Get-AzVirtualNetwork @net
## Create load balancer frontend configuration and place in variable. ##
$fe = @{
Name = 'myFrontend'
SubnetId = $vnet.subnets[0].id
}
$feip = New-AzLoadBalancerFrontendIpConfig @fe
## Create backend address pool configuration and place in variable. ##
$int1 = @{
Type = 'Internal'
Protocol = 'Vxlan'
Identifier = '800'
Port = '10800'
}
$tunnelInterface1 = New-AzLoadBalancerBackendAddressPoolTunnelInterfaceConfig @int1
$int2 = @{
Type = 'External'
Protocol = 'Vxlan'
Identifier = '801'
Port = '10801'
}
$tunnelInterface2 = New-AzLoadBalancerBackendAddressPoolTunnelInterfaceConfig @int2
$pool = @{
Name = 'myBackendPool'
TunnelInterface = $tunnelInterface1,$tunnelInterface2
}
$bepool = New-AzLoadBalancerBackendAddressPoolConfig @pool
## Create the health probe and place in variable. ##
$probe = @{
Name = 'myHealthProbe'
Protocol = 'http'
Port = '80'
IntervalInSeconds = '360'
ProbeCount = '5'
RequestPath = '/'
}
$healthprobe = New-AzLoadBalancerProbeConfig @probe
## Create the load balancer rule and place in variable. ##
$para = @{
Name = 'myLBRule'
Protocol = 'All'
FrontendPort = '0'
BackendPort = '0'
FrontendIpConfiguration = $feip
BackendAddressPool = $bepool
Probe = $healthprobe
}
$rule = New-AzLoadBalancerRuleConfig @para
## Create the load balancer resource. ##
$lb = @{
ResourceGroupName = 'TutorGwLB-rg'
Name = 'myLoadBalancer-gw'
Location = 'eastus'
Sku = 'Gateway'
LoadBalancingRule = $rule
FrontendIpConfiguration = $feip
BackendAddressPool = $bepool
Probe = $healthprobe
}
New-AzLoadBalancer @lb
Adicionar dispositivos virtuais de rede ao pool de back-end do Balanceador de Carga de Gateway
Implante NVAs por meio do Azure Marketplace. Depois de implantado, adicione as máquinas virtuais ao pool de back-end com Add-AzVMNetworkInterface
Frontend do balanceador de carga em cadeia para o Balanceador de Carga do Gateway
Neste exemplo, você encadeará o front-end de um balanceador de carga padrão ao balanceador de carga do gateway.
Você adicionará o frontend ao IP de frontend de um balanceador de carga existente em sua assinatura.
Use Set-AzLoadBalancerFrontendIpConfig para encadear o front-end do balanceador de carga do gateway ao seu balanceador de carga existente.
## Place the gateway load balancer configuration into a variable. ##
$par1 = @{
ResourceGroupName = 'TutorGwLB-rg'
Name = 'myLoadBalancer-gw'
}
$gwlb = Get-AzLoadBalancer @par1
## Place the existing load balancer into a variable. ##
$par2 = @{
ResourceGroupName = 'CreatePubLBQS-rg'
Name = 'myLoadBalancer'
}
$lb = Get-AzLoadBalancer @par2
## Place the existing public IP for the existing load balancer into a variable.
$par3 = @{
ResourceGroupName = 'CreatePubLBQS-rg'
Name = 'myPublicIP'
}
$publicIP = Get-AzPublicIPAddress @par3
## Chain the gateway load balancer to your existing load balancer frontend. ##
$par4 = @{
Name = 'myFrontEndIP'
PublicIPAddress = $publicIP
LoadBalancer = $lb
GatewayLoadBalancerId = $gwlb.FrontendIpConfigurations.Id
}
$config = Set-AzLoadBalancerFrontendIpConfig @par4
$config | Set-AzLoadBalancer
Encadear a máquina virtual com o Balanceador de Carga de Gateway
Como alternativa, você pode encadear a configuração de IP da NIC de uma VM ao balanceador de carga do gateway.
Você adicionará o front-end do balanceador de carga do gateway à configuração de IP da NIC de uma VM existente.
Use Set-AzNetworkInterfaceIpConfig para encadear o frontend do balanceador de carga do gateway à configuração IP da NIC da VM existente.
## Place the gateway load balancer configuration into a variable. ##
$par1 = @{
ResourceGroupName = 'TutorGwLB-rg'
Name = 'myLoadBalancer-gw'
}
$gwlb = Get-AzLoadBalancer @par1
## Place the existing NIC into a variable. ##
$par2 = @{
ResourceGroupName = 'MyResourceGroup'
Name = 'myNic'
}
$nic = Get-AzNetworkInterface @par2
## Chain the gateway load balancer to your existing VM NIC. ##
$par3 = @{
Name = 'myIPconfig'
NetworkInterface = $nic
GatewayLoadBalancerId = $gwlb.FrontendIpConfigurations.Id
}
$config = Set-AzNetworkInterfaceIpConfig @par3
$config | Set-AzNetworkInterface
Clean up resources (Limpar recursos)
Quando não for mais necessário, você poderá usar o comando Remove-AzResourceGroup para remover o grupo de recursos, o balanceador de carga e os recursos restantes.
Remove-AzResourceGroup -Name 'TutorGwLB-rg'
Próximos passos
Crie Dispositivos Virtuais de Rede no Azure.
Ao criar os NVAs, escolha os recursos criados neste tutorial:
Rede virtual
Sub-rede
Grupo de segurança de rede
Experimente agora o Balanceador de Carga de Gateway
Avance para o próximo artigo para saber como criar um Balanceador de Carga do Azure entre regiões.