Creare un servizio di bilanciamento del carico interno per le macchine virtuali mediante l'interfaccia della riga di comando 2.0 di AzureCreate an internal load balancer to load balance VMs using Azure CLI 2.0

Questo articolo illustra come creare un servizio di bilanciamento del carico interno per bilanciare il carico delle macchine virtuali.This article shows you how to create an internal load balancer to load balance VMs. Per testare il servizio di bilanciamento del carico, si distribuiscono due macchine virtuali (VM) che eseguono Ubuntu Server per bilanciare il carico di un'app Web.To test the load balancer, you deploy two virtual machines (VMs) running Ubuntu server to load balance a web app.

Aprire Azure Cloud ShellOpen Azure Cloud Shell

Azure Cloud Shell è una shell interattiva gratuita che può essere usata per eseguire la procedura di questo articolo.Azure Cloud Shell is a free, interactive shell that you can use to run the steps in this article. Gli strumenti comuni di Azure sono preinstallati e configurati in Cloud Shell per l'uso con l'account.Common Azure tools are preinstalled and configured in Cloud Shell for you to use with your account. È sufficiente selezionare il pulsante Copia per copiare il codice, incollarlo in Cloud Shell e quindi premere INVIO per eseguirlo.Just select the Copy button to copy the code, paste it in Cloud Shell, and then press Enter to run it. Esistono alcuni modi per aprire Cloud Shell:There are a few ways to open Cloud Shell:

Selezionare Prova nell'angolo superiore destro di un blocco di codice.Select Try It in the upper-right corner of a code block. Cloud Shell in questo articolo
Aprire Cloud Shell nel browser.Open Cloud Shell in your browser. https://shell.azure.com/bash
Selezionare il pulsante Cloud Shell nel menu nell'angolo superiore destro del portale di Azure.Select the Cloud Shell button on the menu in the upper-right corner of the Azure portal. Cloud Shell nel portale

Se si sceglie di installare e usare l'interfaccia della riga di comando in locale, per questa esercitazione è necessario eseguire l'interfaccia della riga di comando di Azure versione 2.0.28 o successiva.If you choose to install and use the CLI locally, this tutorial requires that you are running a version of the Azure CLI version 2.0.28 or later. Per trovare la versione, eseguire az --version.To find the version, run az --version. Se è necessario eseguire l'installazione o l'aggiornamento, vedere Installare l'interfaccia della riga di comando di Azure 2.0.If you need to install or upgrade, see Install Azure CLI 2.0.

Creare un gruppo di risorseCreate a resource group

Come prima cosa creare un gruppo di risorse con az group create.Create a resource group with az group create. Un gruppo di risorse di Azure è un contenitore logico in cui le risorse di Azure vengono distribuite e gestite.An Azure resource group is a logical container into which Azure resources are deployed and managed.

L'esempio seguente crea un gruppo di risorse denominato myResourceGroupILB nella posizione eastus:The following example creates a resource group named myResourceGroupILB in the eastus location:

  az group create \
    --name myResourceGroupILB \
    --location eastus

Creare una rete virtualeCreate a virtual network

Creare una rete virtuale denominata myVnet con una subnet denominata mySubnet nel gruppo myResourceGroup con il comando az network vnet create.Create a virtual network named myVnet with a subnet named mySubnet in the myResourceGroup using az network vnet create.

  az network vnet create \
    --name myVnet \
    --resource-group myResourceGroupILB \
    --location eastus \
    --subnet-name mySubnet

Creare un servizio di bilanciamento del carico di baseCreate Basic Load Balancer

Questa sezione descrive dettagliatamente come creare e configurare i componenti seguenti del servizio di bilanciamento del carico:This section details how you can create and configure the following components of the load balancer:

  • una configurazione IP front-end che riceve il traffico di rete in ingresso sul servizio di bilanciamento del caricoa frontend IP configuration that receives the incoming network traffic on the load balancer.
  • un pool IP back-end a cui il pool front-end invia il traffico di rete con carico bilanciatoa backend IP pool where the frontend pool sends the load balanced network traffic.
  • un probe di integrità che determina l'integrità delle istanze delle macchine virtuali back-enda health probe that determines health of the backend VM instances.
  • una regola di bilanciamento del carico che definisce come verrà distribuito il traffico alle macchine virtuali.a load balancer rule that defines how traffic is distributed to the VMs.

Creare il servizio di bilanciamento del caricoCreate the load balancer

Usare il comando az network lb create per creare un servizio di bilanciamento del carico di base pubblico denominato myLoadBalancer, che include una configurazione IP front-end denominata myFrontEnd e un pool back-end denominato myBackEndPool associato a un indirizzo IP privato 10.0.0.7.Create a public Basic Load Balancer with az network lb create named **myLoadBalancer that includes a frontend IP configuration named myFrontEnd, a back-end pool named myBackEndPool that is associated with a private IP address **10.0.0.7.

  az network lb create \
    --resource-group myResourceGroupILB \
    --name myLoadBalancer \
    --frontend-ip-name myFrontEnd \
    --private-ip-address 10.0.0.7 \
    --backend-pool-name myBackEndPool \
    --vnet-name myVnet \
    --subnet mySubnet      

Creare il probe di integritàCreate the health probe

Un probe di integrità controlla tutte le istanze di una macchina virtuale per assicurarsi che possano ricevere il traffico di rete.A health probe checks all virtual machine instances to make sure they can receive network traffic. L'istanza della macchina virtuale con controlli di probe falliti non viene rimossa dal servizio di bilanciamento del carico fino a quando non è nuovamente online e il controllo dei probe ne certifica l'integrità.The virtual machine instance with failed probe checks is removed from the load balancer until it goes back online and a probe check determines that it's healthy. Creare un probe di integrità con il comando az network lb probe create per monitorare l'integrità delle macchine virtuali.Create a health probe with az network lb probe create to monitor the health of the virtual machines.

  az network lb probe create \
    --resource-group myResourceGroupILB \
    --lb-name myLoadBalancer \
    --name myHealthProbe \
    --protocol tcp \
    --port 80   

Creare la regola di bilanciamento del caricoCreate the load balancer rule

Una regola di bilanciamento del carico definisce la configurazione IP front-end per il traffico in ingresso e il pool IP back-end che riceve il traffico, insieme alla porta di origine e di destinazione necessaria.A load balancer rule defines the front-end IP configuration for the incoming traffic and the back-end IP pool to receive the traffic, along with the required source and destination port. Creare una regola di bilanciamento del carico myLoadBalancerRuleWeb con il comando az network lb rule create per l'ascolto sulla porta 80 nel pool front-end myFrontEndPool e l'invio del traffico di rete con carico bilanciato al pool di indirizzi back-end myBackEndPool sempre tramite la porta 80.Create a load balancer rule myLoadBalancerRuleWeb with az network lb rule create for listening to port 80 in the frontend pool myFrontEndPool and sending load-balanced network traffic to the backend address pool myBackEndPool also using port 80.

  az network lb rule create \
    --resource-group myResourceGroupILB \
    --lb-name myLoadBalancer \
    --name myHTTPRule \
    --protocol tcp \
    --frontend-port 80 \
    --backend-port 80 \
    --frontend-ip-name myFrontEnd \
    --backend-pool-name myBackEndPool \
    --probe-name myHealthProbe  

Creare server per il pool di indirizzi back-endCreate servers for the backend address pool

Prima di distribuire alcune macchine virtuali e testare il servizio di bilanciamento del carico, creare le risorse di rete virtuale di supporto.Before you deploy some VMs and can test your load balancer, create the supporting virtual network resources.

Creare NICCreate NICs

Creare due interfacce di rete con il comando az network nic create e associarle all'indirizzo IP privato.Create two network interfaces with az network nic create and associate them with the private IP address.

for i in `seq 1 2`; do
  az network nic create \
    --resource-group myResourceGroupILB \
    --name myNic$i \
    --vnet-name myVnet \
    --subnet mySubnet \
    --lb-name myLoadBalancer \
    --lb-address-pools myBackEndPool
done

Creare i server back-endCreate backend servers

In questo esempio vengono create due macchine virtuali da usare come server back-end per il bilanciamento del carico.In this example, you create two virtual machines to be used as backend servers for the load balancer. Viene inoltre installato NGINX nelle macchine virtuali per verificare l'avvenuta creazione del servizio di bilanciamento del carico.To verify that the load balancer was successfully created, you also install NGINX on the virtual machines.

Creare un set di disponibilitàCreate an Availability set

Creare un set di disponibilità con il comando az vm availabilityset createCreate an availability set with az vm availabilityset create

 az vm availability-set create \
   --resource-group myResourceGroupILB \
   --name myAvailabilitySet

Creare due macchine virtualiCreate two virtual machines

È possibile usare un file di configurazione cloud-init per installare NGINX ed eseguire un'app Node.js "Hello World" in una macchina virtuale Linux.You can use a cloud-init configuration file to install NGINX and run a 'Hello World' Node.js app on a Linux virtual machine. Nella shell corrente creare un file denominato cloud-init.txt e incollare la configurazione seguente.In your current shell, create a file named cloud-init.txt and copy and paste the following configuration into the shell. Assicurarsi che l'intero file cloud-init venga copiato correttamente, in particolare la prima riga:Make sure that you copy the whole cloud-init file correctly, especially the first line:

#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

Creare le macchine virtuali con il comando az vm create.Create the virtual machines with az vm create.

for i in `seq 1 2`; do
 az vm create \
   --resource-group myResourceGroupILB \
   --name myVM$i \
   --availability-set myAvailabilitySet \
   --nics myNic$i \
   --image UbuntuLTS \
   --generate-ssh-keys \
   --custom-data cloud-init.txt
   done

La distribuzione delle macchine virtuali può richiedere alcuni minuti.It may take a few minutes for the VMs to get deployed.

Creare una macchina virtuale per testare il servizio di bilanciamento del caricoCreate a VM for testing the load balancer

Per testare il servizio di bilanciamento del carico, creare una macchina virtuale denominata myVMTest e associarla a myNic3.To test the load balancer, create a virtual machine, myVMTest, and associate it to myNic3.

 az vm create \
    --resource-group myResourceGroupILB \
    --name myVMTest \
    --image win2016datacenter \
    --admin-username azureuser \
    --admin-password myPassword123456!

Testare il servizio di bilanciamento del carico internoTest the internal load balancer

Per testare il servizio di bilanciamento del carico, è innanzitutto necessario ottenere l'indirizzo IP privato del servizio.To test the load balancer, you must first obtain the private IP address of the load balancer. Accedere quindi alla macchina virtuale myVMTest e digitare l'indirizzo IP privato nella barra degli indirizzi del Web browser.Next, sign in to virtual machine myVMTest, and type the private IP address into the address bar of its web browser.

Per ottenere l'indirizzo IP privato del servizio di bilanciamento del carico, usare il comando az network lb show.To get the private IP address of the load balancer, use az network lb show. Copiare l'indirizzo IP privato e incollarlo nella barra degli indirizzi del Web browser della macchina virtuale myVMTest.Copy the private IP address, and then paste it into the address bar of a web browser of your virtual machine - myVMTest.

  az network lb show \
    --name myLoadBalancer \
    --resource-group myResourceGroupILB

Testare il bilanciamento del carico

Pulire le risorseClean up resources

Quando non sono più necessari, è possibile rimuovere il gruppo di risorse, il servizio di bilanciamento del carico e tutte le risorse correlate tramite il comando az group delete.When no longer needed, you can use the az group delete command to remove the resource group, load balancer, and all related resources.

  az group delete --name myResourceGroupILB

Passaggi successiviNext steps

In questo articolo è stato creato un servizio di bilanciamento del carico di base interno a cui sono collegate macchine virtuali, è stata configurata la regola del traffico di bilanciamento del carico e del probe di integrità e quindi il servizio di bilanciamento del carico è stato testato.In this article, you created an internal Basic Load Balancer, attached VMs to it, configured the load balancer traffic rule, health probe, and then tested the load balancer. Per altre informazioni sui servizi di bilanciamento del carico e sulle risorse associate, passare alle procedure dettagliate.To learn more about load balancers and their associated resources, continue to the how-to articles.