Esercizio - Configurare un servizio di bilanciamento del carico pubblico

Completato

È possibile configurare Azure Load Balancer usando il portale di Azure, PowerShell o l'interfaccia della riga di comando di Azure.

Nell'organizzazione sanitaria si vuole bilanciare il carico del traffico client per fornire una risposta coerente in base all'integrità dei server Web del portale dei pazienti. Sono disponibili due macchine virtuali (VM) in un set di disponibilità per fungere da applicazione Web del portale per il settore sanitario.

In questo esercizio si crea una risorsa servizio di bilanciamento del carico e la si usa per distribuire il carico tra le macchine virtuali.

Distribuire l'applicazione Web del portale per i pazienti

Distribuire prima di tutto l'applicazione patient-portal in due macchine virtuali in un singolo set di disponibilità. Per risparmiare tempo, si inizierà eseguendo uno script per creare l'applicazione. Lo script:

  • Crea una rete virtuale e un'infrastruttura di rete per le macchine virtuali.
  • Crea due macchine virtuali in questa rete virtuale.

Per distribuire l'applicazione Web del portale per i pazienti:

  1. Eseguire il comando git clone seguente in Azure Cloud Shell. Il comando clona il repository che contiene l'origine per l'app ed esegue lo script di installazione da GitHub. Passa quindi alla directory del repository clonato.

    git clone https://github.com/MicrosoftDocs/mslearn-improve-app-scalability-resiliency-with-load-balancer.git
    cd mslearn-improve-app-scalability-resiliency-with-load-balancer
    
  2. Come suggerisce il nome, lo script genera due macchine virtuali in un singolo set di disponibilità. Per eseguire lo script sono necessari circa due minuti.

    bash create-high-availability-vm-with-sets.sh <rgn>[sandbox resource group name]</rgn>
    
  3. Al termine dell'esecuzione dello script, nel menu del portale di Azure o nella home page selezionare Gruppi di risorse e quindi selezionare il gruppo di risorse [nome gruppo di risorse sandbox]. Esaminare le risorse create dallo script.

Creare un servizio di bilanciamento del carico

Seguire questa procedura per creare il servizio di bilanciamento del carico.

  1. Nel menu del portale di Azure o nella home page, in Servizi di Azure selezionare Crea una risorsa. Viene visualizzato il riquadro Crea una risorsa.

  2. Nella casella di ricerca Search services and marketplace (Cerca nei servizi e nel marketplace) immettere Load Balancer e premere INVIO.

  3. Nell'elenco di seguito selezionare Load Balancer - Microsoft e quindi Crea.

    Creare un'istanza di Load Balancer nel portale di Azure.

  4. Nella scheda Informazioni di base immettere i valori indicati di seguito per ogni impostazione:

    Impostazione Valore
    Dettagli di progetto
    Subscription Sottoscrizione in uso
    Gruppo di risorse Selezionare il [nome gruppo di risorse sandbox]
    Dettagli istanza
    Nome Immettere un nome univoco. Ad esempio, Pub-BC-PortalePazienti.
    Area Selezionare l'area in cui sono state create le macchine virtuali.
    SKU Standard
    Type Pubblica
    Livello Regional

    Screenshot che mostra la scheda Informazioni di base della schermata Crea un servizio di bilanciamento del carico nel portale di Azure.

Aggiungere una configurazione IP front-end

  1. Selezionare Avanti: Configurazione IP front-end.

  2. Selezionare + Aggiungi una configurazione IP front-end. Viene visualizzato il riquadro Aggiungere configurazione IP front-end.

  3. Immettere i seguenti valori per ogni impostazione.

    Impostazione valore
    Nome Immettere un nome univoco per la configurazione IP front-end. Ad esempio, myFrontendIP
    Versione IP Selezionare IPv4
    Tipo di IP Selezionare l'indirizzo IP
    Indirizzo IP pubblico Selezionare Crea nuovo, quindi assegnare un nome all'indirizzo IP e selezionare Salva
    Bilanciamento del carico del gateway Selezionare Nessuno

    Screenshot che mostra le impostazioni completate per Aggiungere configurazione IP front-end.

  4. Selezionare Salva per chiudere la finestra di dialogo. Viene visualizzato il riquadro Crea servizio di bilanciamento del carico.

Aggiungere un pool back-end

  1. Selezionare Avanti: Pool back-end.

  2. Selezionare +Aggiungi un pool back-end. Viene visualizzato il riquadro Aggiungi pool back-end.

  3. Immettere i seguenti valori per ogni impostazione.

    Impostazione valore
    Nome Immettere un nome univoco per il pool back-end. Ad esempio, pool-http.
    Rete virtuale Verificare che bePortalVnet sia selezionato.
  4. In Configurazioni IP selezionare Aggiungi. Viene visualizzato il riquadro Aggiungi configurazioni IP al pool back-end.

  5. In Macchina virtuale selezionare le macchine virtuali webVM1 e webVM2, quindi selezionare Aggiungi.

    Screenshot che mostra le impostazioni nel riquadro Aggiungi configurazioni IP al pool back-end.

  6. Viene visualizzata di nuovo la schermata Aggiungi pool back-end. In Configurazioni IP selezionare le macchine virtuali webVM1 e webVM2, quindi selezionare Salva. Viene visualizzato di nuovo la schermata Crea servizio di bilanciamento del carico.

    Screenshot che mostra le impostazioni completate nella schermata Aggiungi pool back-end.

Aggiungere una regola di bilanciamento del carico

Infine, si vedrà come creare una regola per il servizio di bilanciamento del carico.

  1. Selezionare Avanti: Regole in ingresso.

  2. Nella sezione Regola di bilanciamento del carico selezionare +Aggiungi una regola di bilanciamento del carico. Viene visualizzato il riquadro Aggiungi regola di bilanciamento del carico.

  3. Immettere i seguenti valori per ogni impostazione.

    Impostazione valore
    Nome Nome per la regola di bilanciamento del carico. Ad esempio: regolabc-http.
    Versione IP IPv4
    Indirizzo IP front-end IP Selezionare l'indirizzo IP front-end denominato in precedenza.
    Pool back-end Selezionare il pool back-end denominato in precedenza. Ad esempio, pool-http.
    Protocollo TCP
    Port Immettere 80 (impostazione predefinita).
    Porta back-end Immettere 80 (impostazione predefinita).
    Probe di integrità Selezionare il collegamento Crea nuovo. Viene visualizzata la finestra di dialogo Aggiungi probe di integrità.
  4. Immettere i seguenti valori per ogni impostazione.

    Impostazione valore
    Nome un nome per il probe di integrità. Ad esempio, healthprobe-http.
    Protocollo TCP
    Port Immettere 80 (impostazione predefinita).
    Intervallo Immettere 5 (impostazione predefinita). Questo valore rappresenta l'intervallo di tempo tra i probe.
  5. Selezionare Salva per chiudere la finestra di dialogo. Viene visualizzato di nuovo il riquadro Aggiungi regola di bilanciamento del carico.

  6. Continuare a immettere i valori seguenti per ogni impostazione.

    Impostazione Valore
    Persistenza della sessione* Nessuno (impostazione predefinita)
    Timeout di inattività (minuti) Selezionare 4 (impostazione predefinita). Questo valore indica il numero di minuti in cui la connessione Transmission Control Protocol (TCP) o HTTP resta aperta senza affidarsi ai client per l'invio di messaggi Keep-Alive.
    IP mobile Disabilitato (valore predefinito).

    Aggiungere una nuova regola di bilanciamento del carico.

  7. Selezionare Salva per completare la configurazione della regola di bilanciamento del carico.

  8. Viene visualizzato di nuovo la schermata Crea servizio di bilanciamento del carico. Selezionare Rivedi e crea.

  9. Al termine della convalida, selezionare Crea. Al termine della distribuzione, selezionare Vai alla risorsa.

  10. Nella pagina Panoramica copiare e salvare l'indirizzo IP pubblico. Potrebbe essere necessario selezionare Vedere altro per visualizzare l'indirizzo IP pubblico.

Creare indirizzi IP

È prima di tutto necessario un indirizzo IP pubblico per il servizio di bilanciamento del carico.

  1. In Cloud Shell avviare PowerShell eseguendo questo comando:

    pwsh
    
  2. In PowerShell creare un nuovo indirizzo IP pubblico:

    $Location = $(Get-AzureRmResourceGroup -ResourceGroupName <rgn>[sandbox resource group name]</rgn>).Location
    
    $publicIP = New-AzPublicIpAddress `
      -ResourceGroupName <rgn>[sandbox resource group name]</rgn> `
      -Location $Location `
      -AllocationMethod "Static" `
      -Name "myPublicIP"
    
  3. Creare un indirizzo IP front-end usando il cmdlet New-AzLoadBalancerFrontendIpConfig. Il codice seguente crea una configurazione IP front-end denominata myFrontEnd e collega l'indirizzo myPublicIP:

    $frontendIP = New-AzLoadBalancerFrontendIpConfig `
      -Name "myFrontEnd" `
      -PublicIpAddress $publicIP
    

Creare il servizio di bilanciamento del carico

Quando si usa PowerShell per configurare un servizio di bilanciamento del carico, è necessario creare il pool di indirizzi back-end, il probe di integrità e la regola prima di creare il servizio di bilanciamento del carico stesso.

  1. Creare un pool di indirizzi back-end eseguendo il cmdlet New-AzLoadBalancerBackendAddressPoolConfig. Le macchine virtuali verranno collegate a questo pool back-end nei passaggi finali. L'esempio seguente crea un pool di indirizzi back-end denominato myBackEndPool:

    $backendPool = New-AzLoadBalancerBackendAddressPoolConfig -Name "myBackEndPool"
    
  2. Creare un probe di integrità per consentire al servizio di bilanciamento del carico di monitorare lo stato del portale sanitario. Il probe di integrità aggiunge o rimuove in modo dinamico le macchine virtuali dalla rotazione del servizio di bilanciamento del carico, in base alla rispettiva risposta ai controlli di integrità.

    $probe = New-AzLoadBalancerProbeConfig `
      -Name "myHealthProbe" `
      -Protocol http `
      -Port 80 `
      -IntervalInSeconds 5 `
      -ProbeCount 2 `
      -RequestPath "/"
    
  3. È ora necessaria una regola di bilanciamento del carico per definire il modo in cui il traffico viene distribuito alle macchine virtuali. Definire la configurazione IP front-end per il traffico in ingresso e il pool IP di back-end per la ricezione del traffico, insieme alle porte di origine e di destinazione necessarie. Per assicurarsi che solo le macchine virtuali integre ricevano il traffico, è anche necessario definire il probe di integrità da usare.

    $lbrule = New-AzLoadBalancerRuleConfig `
      -Name "myLoadBalancerRule" `
      -FrontendIpConfiguration $frontendIP `
      -BackendAddressPool $backendPool `
      -Protocol Tcp `
      -FrontendPort 80 `
      -BackendPort 80 `
      -Probe $probe
    
  4. È ora possibile creare il servizio di bilanciamento del carico di base eseguendo il cmdlet New-AzLoadBalancer:

    $lb = New-AzLoadBalancer `
      -ResourceGroupName <rgn>[sandbox resource group name]</rgn> `
      -Name 'MyLoadBalancer' `
      -Location $Location `
      -FrontendIpConfiguration $frontendIP `
      -BackendAddressPool $backendPool `
      -Probe $probe `
      -LoadBalancingRule $lbrule
    
  5. Connettere le macchine virtuali al pool back-end aggiornando le interfacce di rete create dallo script in modo da usare le informazioni sul pool back-end.

    $nic1 = Get-AzNetworkInterface -ResourceGroupName <rgn>[sandbox resource group name]</rgn> -Name "webNic1"
    $nic2 = Get-AzNetworkInterface -ResourceGroupName <rgn>[sandbox resource group name]</rgn> -Name "webNic2"
    
    $nic1.IpConfigurations[0].LoadBalancerBackendAddressPools = $backendPool
    $nic2.IpConfigurations[0].LoadBalancerBackendAddressPools = $backendPool
    
    Set-AzNetworkInterface -NetworkInterface $nic1 -AsJob
    Set-AzNetworkInterface -NetworkInterface $nic2 -AsJob
    
  6. Eseguire il comando seguente per ottenere l'indirizzo IP pubblico del servizio di bilanciamento del carico e l'URL del sito Web:

    Write-Host http://$($(Get-AzPublicIPAddress `
      -ResourceGroupName <rgn>[sandbox resource group name]</rgn> `
      -Name "myPublicIP").IpAddress)
    

Creare un servizio di bilanciamento del carico

Di seguito si userà l'interfaccia della riga di comando di Azure per creare il servizio di bilanciamento del carico e le risorse associate.

  1. Creare un nuovo indirizzo IP pubblico.

    az network public-ip create \
      --resource-group <rgn>[sandbox resource group name]</rgn> \
      --allocation-method Static \
      --name myPublicIP
    
  2. Creare il servizio di bilanciamento del carico.

    az network lb create \
      --resource-group <rgn>[sandbox resource group name]</rgn> \
      --name myLoadBalancer \
      --public-ip-address myPublicIP \
      --frontend-ip-name myFrontEndPool \
      --backend-pool-name myBackEndPool
    
  3. Creare un probe di integrità per consentire al servizio di bilanciamento del carico di monitorare lo stato del portale sanitario. Il probe di integrità aggiunge o rimuove in modo dinamico le macchine virtuali dalla rotazione del servizio di bilanciamento del carico, in base alla rispettiva risposta ai controlli di integrità.

    az network lb probe create \
      --resource-group <rgn>[sandbox resource group name]</rgn> \
      --lb-name myLoadBalancer \
      --name myHealthProbe \
      --protocol tcp \
      --port 80  
    
  4. È ora necessaria una regola di bilanciamento del carico per definire il modo in cui il traffico viene distribuito alle macchine virtuali. Definire la configurazione IP front-end per il traffico in ingresso e il pool IP di back-end per la ricezione del traffico, insieme alle porte di origine e di destinazione necessarie. Per assicurarsi che solo le macchine virtuali integre ricevano il traffico, è anche necessario definire il probe di integrità da usare.

    az network lb rule create \
      --resource-group <rgn>[sandbox resource group name]</rgn> \
      --lb-name myLoadBalancer \
      --name myHTTPRule \
      --protocol tcp \
      --frontend-port 80 \
      --backend-port 80 \
      --frontend-ip-name myFrontEndPool \
      --backend-pool-name myBackEndPool \
      --probe-name myHealthProbe
    
  5. Connettere le macchine virtuali al pool back-end aggiornando le interfacce di rete create dallo script in modo da usare le informazioni sul pool back-end.

    az network nic ip-config update \
      --resource-group <rgn>[sandbox resource group name]</rgn> \
      --nic-name webNic1 \
      --name ipconfig1 \
      --lb-name myLoadBalancer \
      --lb-address-pools myBackEndPool
    
    az network nic ip-config update \
      --resource-group <rgn>[sandbox resource group name]</rgn> \
      --nic-name webNic2 \
      --name ipconfig1 \
      --lb-name myLoadBalancer \
      --lb-address-pools myBackEndPool
    
  6. Eseguire il comando seguente per ottenere l'indirizzo IP pubblico del servizio di bilanciamento del carico e l'URL del sito Web:

    echo http://$(az network public-ip show \
                    --resource-group <rgn>[sandbox resource group name]</rgn> \
                    --name myPublicIP \
                    --query ipAddress \
                    --output tsv)
    

Testare la configurazione del servizio di bilanciamento del carico

Verrà ora testata la configurazione del servizio di bilanciamento del carico mostrando come gestire in modo dinamico i problemi di disponibilità e integrità.

  1. In una nuova scheda del browser passare all'indirizzo IP pubblico annotato. Nel browser viene visualizzata una risposta da una delle macchine virtuali.

  2. Provare a forzare l'aggiornamento premendo CTRL+F5 alcune volte per notare che la risposta viene restituita in modo casuale da entrambe le macchine virtuali.

  3. Nel menu del portale di Azure o nella Home page selezionare Tutte le risorse. Selezionare quindi webVM1 e selezionare Arresta.

  4. Tornare alla scheda che mostra il sito Web e forzare un aggiornamento della pagina Web. Tutte le richieste vengono restituite da webVM2.