Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a: ✔️ VMs do Linux ✔️ Conjuntos de dimensionamento flexíveis
O balanceamento de carga fornece um nível mais alto de disponibilidade, espalhando solicitações de entrada em várias máquinas virtuais. Neste tutorial, você aprenderá sobre os diferentes componentes do balanceador de carga do Azure que distribuem o tráfego e fornecem alta disponibilidade. Você aprenderá como:
- Criar um balanceador de carga
- Criar uma sonda de saúde
- Criar regras de tráfego
- Usar o cloud-init para instalar um aplicativo de Node.js básico
- Criar máquinas virtuais e anexá-las ao balanceador de carga
- Exibir o balanceador de carga em ação
- Adicionar e remover VMs do balanceador de carga
Este tutorial usa a CLI dentro do Azure Cloud Shell, que é constantemente atualizada para a versão mais recente. Para abrir o Cloud Shell, selecione Experimentar na parte superior de um bloco de código qualquer.
Se você optar por instalar e usar a CLI localmente, este tutorial exigirá que você execute a CLI do Azure versão 2.0.30 ou posterior. Execute az --version para encontrar a versão. Se você precisa instalar ou atualizar, consulte Instalar a CLI do Azure.
Visão geral do balanceador de carga do Azure
Um balanceador de carga do Azure é um balanceador de carga de Camada 4 (TCP, UDP) que fornece alta disponibilidade distribuindo o tráfego de entrada entre VMs íntegras. Uma sonda de integridade do balanceador de carga monitora uma determinada porta em cada VM e distribui o tráfego apenas para uma VM operacional.
Você define uma configuração de IP de front-end que contém um ou mais endereços IP públicos. Essa configuração de IP front-end permite que o balanceador de carga e os aplicativos fiquem acessíveis pela Internet.
As máquinas virtuais se conectam a um balanceador de carga usando a NIC (placa de interface de rede virtual). Para distribuir o tráfego para as VMs, um pool de endereços de back-end contém os endereços IP das NICs (virtuais) conectadas ao balanceador de carga.
Para controlar o fluxo de tráfego, você define regras de balanceamento de carga para portas e protocolos específicos que se mapeiam para suas máquinas virtuais.
Se você seguiu o tutorial anterior para criar um conjunto de dimensionamento de máquinas virtuais, um balanceador de carga foi criado para você. Todos esses componentes foram configurados para você como parte do conjunto de escalabilidade.
Criar balanceador de carga do Azure
Esta seção detalha como você pode criar e configurar cada componente do balanceador de carga. Antes de criar o balanceador de carga, crie um grupo de recursos com az group create. O exemplo a seguir cria um grupo de recursos chamado myResourceGroupLoadBalancer no local eastus :
az group create --name myResourceGroupLoadBalancer --location eastus
Criar um endereço IP público
Para acessar seu aplicativo na Internet, você precisa de um endereço IP público para o balanceador de carga. Crie um endereço IP público com az network public-ip create. O exemplo a seguir cria um endereço IP público chamado myPublicIP no grupo de recursos myResourceGroupLoadBalancer :
az network public-ip create \
--resource-group myResourceGroupLoadBalancer \
--name myPublicIP
Criar um balanceador de carga
Crie um balanceador de carga com az network lb create. O exemplo a seguir cria um balanceador de carga chamado myLoadBalancer e atribui o endereço myPublicIP à configuração de IP de front-end:
az network lb create \
--resource-group myResourceGroupLoadBalancer \
--name myLoadBalancer \
--frontend-ip-name myFrontEndPool \
--backend-pool-name myBackEndPool \
--public-ip-address myPublicIP
Criar uma sonda de saúde
Para permitir que o balanceador de carga monitore o status do aplicativo, utilize uma sonda de saúde. A sonda de integridade adiciona ou remove dinamicamente VMs da rotação do balanceador de carga com base em sua resposta a checagens de saúde. Por padrão, uma VM é removida da distribuição do balanceador de carga após duas falhas consecutivas em intervalos de 15 segundos. Você cria uma sonda de saúde com base em um protocolo ou em uma página de verificação de saúde específica para seu aplicativo.
O exemplo a seguir cria uma sonda TCP. Você também pode criar sondas HTTP personalizadas para checagens de integridade mais refinadas. Ao usar uma sonda HTTP personalizada, você deve criar a página de verificação de integridade, como healthcheck.js. A sonda deve retornar uma resposta HTTP 200 OK para o balanceador de carga manter o host na rotação.
Para criar uma verificação de integridade TCP, use az network lb probe create. O exemplo a seguir cria uma sonda de saúde chamada myHealthProbe:
az network lb probe create \
--resource-group myResourceGroupLoadBalancer \
--lb-name myLoadBalancer \
--name myHealthProbe \
--protocol tcp \
--port 80
Criar uma regra de balanceador de carga
Uma regra de balanceador de carga é usada para definir como o tráfego é distribuído para as VMs. Definir a configuração de IP de front-end para o tráfego de entrada e o pool de IP de back-end para receber o tráfego, junto com as portas de origem e de destino necessárias. Para garantir que somente VMs íntegras recebam tráfego, você também define a investigação de integridade a ser usada.
Crie uma regra de balanceador de carga com az network lb rule create. O exemplo a seguir cria uma regra chamada myLoadBalancerRule, usa a sonda de integridade myHealthProbe e equilibra o tráfego na porta 80:
az network lb rule create \
--resource-group myResourceGroupLoadBalancer \
--lb-name myLoadBalancer \
--name myLoadBalancerRule \
--protocol tcp \
--frontend-port 80 \
--backend-port 80 \
--frontend-ip-name myFrontEndPool \
--backend-pool-name myBackEndPool \
--probe-name myHealthProbe
Configurar rede virtual
Antes de implantar algumas VMs e testar o balanceador, crie os recursos de rede virtual de suporte. Para obter mais informações sobre redes virtuais, consulte o tutorial Gerenciar Redes Virtuais do Azure .
Criar recursos da rede
Crie uma rede virtual com az network vnet create. O exemplo a seguir cria uma rede virtual chamada myVnet com uma sub-rede chamada mySubnet:
az network vnet create \
--resource-group myResourceGroupLoadBalancer \
--name myVnet \
--subnet-name mySubnet
Para adicionar um grupo de segurança de rede, use az network nsg create. O exemplo a seguir cria um grupo de segurança de rede chamado myNetworkSecurityGroup:
az network nsg create \
--resource-group myResourceGroupLoadBalancer \
--name myNetworkSecurityGroup
Crie uma regra de grupo de segurança de rede com az network nsg rule create. O exemplo a seguir cria uma regra de grupo de segurança de rede chamada myNetworkSecurityGroupRule:
az network nsg rule create \
--resource-group myResourceGroupLoadBalancer \
--nsg-name myNetworkSecurityGroup \
--name myNetworkSecurityGroupRule \
--priority 1001 \
--protocol tcp \
--destination-port-range 80
AS NICs virtuais são criadas com az network nic create. O exemplo a seguir cria três NICs virtuais. (Uma NIC virtual para cada VM criada para seu aplicativo nas etapas a seguir). Você pode criar NICs e VMs virtuais adicionais a qualquer momento e adicioná-las ao balanceador de carga:
for i in `seq 1 3`; do
az network nic create \
--resource-group myResourceGroupLoadBalancer \
--name myNic$i \
--vnet-name myVnet \
--subnet mySubnet \
--network-security-group myNetworkSecurityGroup \
--lb-name myLoadBalancer \
--lb-address-pools myBackEndPool
done
Quando todas as três NICs virtuais forem criadas, continue para a próxima etapa
Criar máquinas virtuais
Criar configuração do cloud-init
Em um tutorial anterior sobre como personalizar uma máquina virtual linux na primeira inicialização, você aprendeu a automatizar a personalização da VM com cloud-init. Você pode usar o mesmo arquivo de configuração de cloud-init para instalar o NGINX e executar um aplicativo 'Hello World' Node.js simples na próxima etapa. Para ver o balanceador de carga em ação, no final do tutorial, você acessa esse aplicativo simples em um navegador da Web.
No shell atual, crie um arquivo chamado cloud-init.txt e cole a configuração a seguir. Por exemplo, crie o arquivo no Cloud Shell e não em seu computador local. Insira sensible-editor cloud-init.txt para criar o arquivo e veja uma lista de editores disponíveis. Certifique-se de que o arquivo de inicialização de nuvem inteiro seja copiado corretamente, especialmente a primeira linha:
#cloud-config
package_upgrade: true
packages:
- nginx
- nodejs
- npm
write_files:
- owner: www-data:www-data
- path: /etc/nginx/sites-available/default
content: |
server {
listen 80;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
- owner: azureuser:azureuser
- path: /home/azureuser/myapp/index.js
content: |
var express = require('express')
var app = express()
var os = require('os');
app.get('/', function (req, res) {
res.send('Hello World from host ' + os.hostname() + '!')
})
app.listen(3000, function () {
console.log('Hello world app listening on port 3000!')
})
runcmd:
- service nginx restart
- cd "/home/azureuser/myapp"
- npm init
- npm install express -y
- nodejs index.js
Criar máquinas virtuais
Para melhorar a alta disponibilidade do seu aplicativo, coloque suas VMs em um conjunto de disponibilidade. Para obter mais informações sobre conjuntos de disponibilidade, consulte o tutorial anterior Como criar máquinas virtuais altamente disponíveis .
Crie um conjunto de disponibilidade com az vm availability-set create. O exemplo a seguir cria um conjunto de disponibilidade chamado myAvailabilitySet:
az vm availability-set create \
--resource-group myResourceGroupLoadBalancer \
--name myAvailabilitySet
Agora você pode criar as VMs com az vm create. O exemplo a seguir cria três VMs e gera chaves SSH se elas ainda não existirem:
for i in `seq 1 3`; do
az vm create \
--resource-group myResourceGroupLoadBalancer \
--name myVM$i \
--availability-set myAvailabilitySet \
--nics myNic$i \
--image UbuntuLTS \
--admin-username azureuser \
--generate-ssh-keys \
--custom-data cloud-init.txt \
--no-wait
done
Há tarefas em segundo plano que continuarão em execução depois que a CLI do Azure faz você voltar para o prompt. O --no-wait parâmetro não aguarda a conclusão de todas as tarefas. Pode demorar mais alguns minutos antes que você possa acessar o aplicativo. A investigação de integridade do balanceador de carga detecta automaticamente quando o aplicativo está em execução em cada VM. Depois que o aplicativo estiver em execução, a regra do balanceador de carga começará a distribuir o tráfego.
Testar o balanceador de carga
Obtenha o endereço IP público de seu balanceador de carga com az network public-ip show. O exemplo a seguir obtém o endereço IP para myPublicIP criado anteriormente:
az network public-ip show \
--resource-group myResourceGroupLoadBalancer \
--name myPublicIP \
--query [ipAddress] \
--output tsv
Em seguida, você pode inserir o endereço IP público em um navegador da Web. Lembre-se : leva alguns minutos para que as VMs estejam prontas antes que o balanceador de carga comece a distribuir o tráfego para elas. O aplicativo é exibido, incluindo o nome do host da VM para o qual o balanceador de carga distribuiu o tráfego como no exemplo a seguir:
Para ver o balanceador de carga distribuir o tráfego em todas as três VMs que executam seu aplicativo, você pode forçar a atualização do navegador da Web.
Adicionar e remover VMs
Talvez seja necessário executar a manutenção nas VMs que executam seu aplicativo, como instalar atualizações do sistema operacional. Para lidar com o aumento do tráfego para seu aplicativo, talvez seja necessário adicionar VMs adicionais. Esta seção mostra como remover ou adicionar uma VM do balanceador de carga.
Remover uma VM do balanceador de carga
Você pode remover uma VM do pool de endereços de back-end com az network nic ip-config address-pool remove. O exemplo a seguir remove a NIC virtual para myVM2 do myLoadBalancer:
az network nic ip-config address-pool remove \
--resource-group myResourceGroupLoadBalancer \
--nic-name myNic2 \
--ip-config-name ipConfig1 \
--lb-name myLoadBalancer \
--address-pool myBackEndPool
Para ver o balanceador de carga distribuir o tráfego entre as duas VMs restantes que executam seu aplicativo, você pode atualizar manualmente o navegador da Web. Agora você pode executar a manutenção na VM, como instalar atualizações do sistema operacional ou executar uma reinicialização da VM.
Para exibir uma lista de VMs com NICs virtuais conectadas ao balanceador de carga, use az network lb address-pool show. Consulte e filtre com base no ID da NIC virtual da seguinte maneira:
az network lb address-pool show \
--resource-group myResourceGroupLoadBalancer \
--lb-name myLoadBalancer \
--name myBackEndPool \
--query backendIpConfigurations \
--output tsv | cut -f5
A saída é semelhante ao exemplo a seguir, que mostra que a NIC virtual para VM 2 não faz mais parte do pool de endereços de back-end:
/subscriptions/<guid>/resourceGroups/myResourceGroupLoadBalancer/providers/Microsoft.Network/networkInterfaces/myNic1/ipConfigurations/ipconfig1
/subscriptions/<guid>/resourceGroups/myResourceGroupLoadBalancer/providers/Microsoft.Network/networkInterfaces/myNic3/ipConfigurations/ipconfig1
Adicionar uma VM ao balanceador de carga
Depois de executar a manutenção da VM, ou se for necessário expandir a capacidade, você poderá adicionar uma VM ao pool de endereços de backend com az network nic ip-config address-pool add. O exemplo a seguir adiciona a NIC virtual para myVM2 ao myLoadBalancer:
az network nic ip-config address-pool add \
--resource-group myResourceGroupLoadBalancer \
--nic-name myNic2 \
--ip-config-name ipConfig1 \
--lb-name myLoadBalancer \
--address-pool myBackEndPool
Para verificar se a NIC virtual está conectada ao backend address pool, use novamente az network lb address-pool show da etapa anterior.
Próximas etapas
Neste tutorial, você criou um balanceador de carga e anexou VMs a ele. Você aprendeu a:
- Criar um balanceador de carga do Azure
- Criar uma verificação de integridade para o balanceador de carga
- Criar regras de tráfego para balanceador de carga
- Usar cloud-init para criar um aplicativo de Node.js básico
- Criar máquinas virtuais e anexar a um balanceador de carga
- Exibir um balanceador de carga em ação
- Adicionar e remover VMs de um balanceador de carga
Avance para o próximo tutorial para saber mais sobre os componentes de rede virtual do Azure.