Esercizio - Configurare un servizio di bilanciamento del carico pubblico
È 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:
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
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>
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.
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.
Nella casella di ricerca Search services and marketplace (Cerca nei servizi e nel marketplace) immettere Load Balancer e premere INVIO.
Nell'elenco di seguito selezionare Load Balancer - Microsoft e quindi Crea.
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
Aggiungere una configurazione IP front-end
Selezionare Avanti: Configurazione IP front-end.
Selezionare + Aggiungi una configurazione IP front-end. Viene visualizzato il riquadro Aggiungere configurazione IP front-end.
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 Selezionare Salva per chiudere la finestra di dialogo. Viene visualizzato il riquadro Crea servizio di bilanciamento del carico.
Aggiungere un pool back-end
Selezionare Avanti: Pool back-end.
Selezionare +Aggiungi un pool back-end. Viene visualizzato il riquadro Aggiungi pool back-end.
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. In Configurazioni IP selezionare Aggiungi. Viene visualizzato il riquadro Aggiungi configurazioni IP al pool back-end.
In Macchina virtuale selezionare le macchine virtuali webVM1 e webVM2, quindi selezionare Aggiungi.
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.
Aggiungere una regola di bilanciamento del carico
Infine, si vedrà come creare una regola per il servizio di bilanciamento del carico.
Selezionare Avanti: Regole in ingresso.
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.
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à. 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. Selezionare Salva per chiudere la finestra di dialogo. Viene visualizzato di nuovo il riquadro Aggiungi regola di bilanciamento del carico.
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). Selezionare Salva per completare la configurazione della regola di bilanciamento del carico.
Viene visualizzato di nuovo la schermata Crea servizio di bilanciamento del carico. Selezionare Rivedi e crea.
Al termine della convalida, selezionare Crea. Al termine della distribuzione, selezionare Vai alla risorsa.
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.
In Cloud Shell avviare PowerShell eseguendo questo comando:
pwsh
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"
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.
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"
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 "/"
È 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
È 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
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
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.
Creare un nuovo indirizzo IP pubblico.
az network public-ip create \ --resource-group <rgn>[sandbox resource group name]</rgn> \ --allocation-method Static \ --name myPublicIP
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
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
È 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
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
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à.
In una nuova scheda del browser passare all'indirizzo IP pubblico annotato. Nel browser viene visualizzata una risposta da una delle macchine virtuali.
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.
Nel menu del portale di Azure o nella Home page selezionare Tutte le risorse. Selezionare quindi webVM1 e selezionare Arresta.
Tornare alla scheda che mostra il sito Web e forzare un aggiornamento della pagina Web. Tutte le richieste vengono restituite da webVM2.