Condividi tramite


Affidabilità in Azure Load Balancer

Azure Load Balancer è un servizio di bilanciamento del carico di livello 4 per tcp (Transmission Control Protocol) e il traffico UDP (User Datagram Protocol) che distribuisce le richieste in ingresso tra istanze integre dei servizi. Load Balancer offre prestazioni di rete a disponibilità elevata e a bassa latenza.

Quando si usa Azure, l'affidabilità è una responsabilità condivisa. Microsoft offre una gamma di funzionalità per supportare la resilienza e il ripristino. L'utente è responsabile della comprensione del funzionamento di tali funzionalità all'interno di tutti i servizi usati e della selezione delle funzionalità necessarie per soddisfare gli obiettivi aziendali e gli obiettivi di tempo di attività.

Questo articolo descrive come rendere il servizio di bilanciamento del carico resiliente a un'ampia gamma di potenziali interruzioni e problemi, tra cui errori temporanei, interruzioni della zona di disponibilità e interruzioni dell'area. Vengono inoltre evidenziate informazioni chiave sul contratto di servizio di Load Balancer.

Importante

L'affidabilità della soluzione complessiva dipende dalla configurazione delle istanze back-end (server) come macchine virtuali di Azure o set di scalabilità di macchine virtuali a cui il servizio di bilanciamento del carico instrada il traffico.

Questo articolo non illustra le istanze back-end, ma le configurazioni di disponibilità influiscono direttamente sulla resilienza dell'applicazione. Esaminare le guide all'affidabilità per i servizi di Azure nella soluzione per informazioni su come ogni servizio supporta i requisiti di affidabilità. Quando si configurano le istanze back-end per l'alta disponibilità e la ridondanza delle zone, è possibile ottenere un'affidabilità completa per l'applicazione.

Raccomandazioni per la distribuzione di produzione

Azure Well-Architected Framework offre raccomandazioni su affidabilità, sicurezza, costi, operazioni e prestazioni. Per informazioni su come queste aree influiscono tra loro e contribuiscono a una soluzione di bilanciamento del carico affidabile, vedere Procedure consigliate per l'architettura per Load Balancer.

Panoramica dell'architettura di affidabilità

Un servizio di bilanciamento del carico può essere pubblico o interno. Un servizio di bilanciamento del carico pubblico è raggiungibile da Internet tramite una risorsa indirizzo IP pubblico. Un servizio di bilanciamento del carico interno è raggiungibile solo dall'interno della rete virtuale e da altre reti connesse alla rete virtuale.

Ogni bilanciatore di carico è costituito da più componenti:

  • Configurazioni del front-end IP che ricevono traffico. Un servizio di bilanciamento del carico pubblico riceve il traffico su un indirizzo IP pubblico. Un servizio di bilanciamento del carico interno riceve il traffico su un indirizzo IP all'interno della rete virtuale.

  • Pool back-end che contengono una raccolta di istanze back-end che possono ricevere traffico, ad esempio singole macchine virtuali che eseguono la tua applicazione.

  • Regole di bilanciamento del carico che definiscono il modo in cui il servizio di bilanciamento del carico distribuisce il traffico da un front-end a un pool back-end.

  • Probe di integrità che monitorano la disponibilità delle istanze back-end.

Per altre informazioni, vedere Componenti di Load Balancer.

Per le soluzioni distribuite a livello globale, è possibile distribuire un servizio di bilanciamento del carico globale, ovvero un tipo univoco di servizio di bilanciamento del carico pubblico per il routing del traffico tra distribuzioni a livello di area diverse della soluzione. Un servizio di bilanciamento del carico globale fornisce un singolo indirizzo IP anycast e instrada il traffico al servizio di bilanciamento del carico regionale più vicino in base alla prossimità del client e allo stato di integrità a livello di area. Per altre informazioni, vedere Resilienza agli errori a livello di area.

Resilienza a errori temporanei

Gli errori temporanei sono errori brevi e intermittenti nei componenti. Si verificano spesso in un ambiente distribuito come il cloud e fanno parte delle normali operazioni. Gli errori temporanei si correggono dopo un breve periodo di tempo. È importante che le applicazioni possano gestire gli errori temporanei, in genere ritentando le richieste interessate.

Tutte le applicazioni ospitate nel cloud devono seguire le indicazioni sulla gestione degli errori temporanei di Azure quando comunicano con qualsiasi API, database e altri componenti ospitati nel cloud. Per altre informazioni, vedere Raccomandazioni per la gestione degli errori temporanei.

Quando si usa Load Balancer, prendere in considerazione le procedure consigliate seguenti per ridurre al minimo il rischio di errori temporanei che interessano l'applicazione:

  • Implementare la logica di ripetizione dei tentativi. I client devono implementare meccanismi di ritentativo appropriati per gli errori di connessione temporanei, che includono strategie di backoff esponenziali.

  • Configurare probe di integrità con tolleranza. Configurare le sonde di integrità per bilanciare il rilevamento rapido dei guasti con la necessità di evitare falsi positivi durante problemi transitori.

  • Monitorare l'allocazione delle porte SNAT. Per le connessioni in uscita, monitorare l'allocazione delle porte SNAT (Source Network Address Translation) e configurare le regole in uscita per evitare errori di connessione temporanei che si verificano a causa dell'esaurimento delle porte.

Resilienza ai guasti delle zone di disponibilità

Le zone di disponibilità sono gruppi di data center separati fisicamente all'interno di un'area di Azure. In caso di guasto in una zona, i servizi possono passare a una delle zone restanti.

È possibile implementare Load Balancer come a ridondanza di zona configurando ogni configurazione IP front-end creata. Una configurazione IP front-end con ridondanza della zona usa un'infrastruttura indipendente in più zone per gestire il traffico contemporaneamente. Questa configurazione garantisce che gli errori di zona non influiscano sulla capacità del servizio di bilanciamento del carico di ricevere e distribuire il traffico.

Il diagramma seguente illustra un servizio di bilanciamento del carico pubblico con ridondanza della zona, configurato creando un indirizzo IP pubblico con ridondanza della zona.

Diagramma che mostra un bilanciamento del carico pubblico ridondante per zona con un indirizzo IP pubblico ridondante per zona che indirizza il traffico a tre macchine virtuali in zone di disponibilità diverse.

Il diagramma seguente illustra un servizio di bilanciamento del carico interno che usa una configurazione simile con ridondanza della zona.

Diagramma che mostra un bilanciatore di carico interno a ridondanza di zona con un indirizzo IP pubblico a ridondanza di zona che indirizza il traffico a tre macchine virtuali in zone di disponibilità diverse.

Annotazioni

È possibile distribuire servizi di bilanciamento del carico di zona, ma è consigliabile usare i servizi di bilanciamento del carico con ridondanza della zona per tutti i carichi di lavoro, inclusi i carichi di lavoro distribuiti in una singola zona. Microsoft sta eseguendo la migrazione di tutti gli indirizzi IP pubblici e i servizi di bilanciamento del carico alle configurazioni con ridondanza della zona.

Nelle aree senza zone di disponibilità, Azure crea tutti i servizi di bilanciamento del carico in una configurazione nonzonale o a livello di area usando una configurazione front-end senza alcuna zona configurata. Se si verifica un'interruzione della regione, i bilanciatori di carico non di zona potrebbero subire tempi di inattività.

Istanze di back-end e zone di disponibilità

La configurazione della zona di disponibilità delle istanze back-end funziona indipendentemente dalla configurazione IP front-end del servizio di bilanciamento del carico.

Per distribuire le istanze back-end tra zone, configurare il servizio pertinente in base alle funzionalità di affidabilità e ai requisiti di architettura.

Annotazioni

Per ottenere la resilienza, distribuire le istanze back-end tra più zone di disponibilità. Se tutte le istanze back-end vengono eseguite in una singola zona, un'interruzione in tale zona rende l'applicazione non disponibile, anche se si usa un servizio di bilanciamento del carico con ridondanza della zona.

Ad esempio, quando si usano macchine virtuali, un approccio di progettazione comune per i carichi di lavoro di produzione consiste nell'inserire più macchine virtuali di zona nelle zone 1, 2 e 3 per ottenere la resilienza della zona. Per il bilanciamento del carico, è quindi possibile creare un bilanciatore di carico a ridondanza di zona e configurare quelle macchine virtuali (VM) come istanze back-end all'interno del bilanciatore di carico. Le sonde di integrità del bilanciamento del carico rimuovono automaticamente le macchine virtuali non funzionanti dalla rotazione, indipendentemente dalla loro posizione nella zona.

Se si distribuiscono le macchine virtuali nella stessa zona di disponibilità, è possibile distribuire una configurazione IP front-end con ridondanza della zona nel servizio di bilanciamento del carico, come illustrato nel diagramma seguente.

Diagramma che mostra un bilanciamento del carico pubblico a zona ridondante che indirizza il traffico a due diverse VM nella zona 1.

Requisiti

Supporto per la regione: È possibile distribuire bilanciatori di carico ridondanti tra più zone in qualsiasi area che supporta le zone di disponibilità.

Costo

La configurazione della zona di disponibilità non modifica il modo in cui Azure fattura un servizio di bilanciamento del carico. Azure basa la fatturazione sul numero di regole configurate e sui dati elaborati, indipendentemente dalla configurazione della zona. Per altre informazioni, vedere Prezzi di Bilanciamento del carico.

Configurare il supporto delle zone di disponibilità

Quando si usa Load Balancer, si imposta il supporto della zona di disponibilità nella configurazione IP front-end.

  • Crea un nuovo bilanciatore del carico con il supporto per le zone di disponibilità.

  • Modificare la configurazione della zona di disponibilità di un load balancer esistente. Per modificare la configurazione della zona di disponibilità di un servizio di bilanciamento del carico esistente, sostituire la configurazione IP front-end. È possibile utilizzare questo approccio per passare da una configurazione zonale a una configurazione IP front-end a ridondanza di zona.

    1. Creare una nuova configurazione IP front-end con la configurazione della zona di disponibilità desiderata.

      Per i servizi di bilanciamento del carico pubblico, creare un nuovo indirizzo IP pubblico che usa la configurazione della zona di disponibilità desiderata. Riconfigurare quindi il servizio di bilanciamento del carico per aggiungere una configurazione IP front-end che faccia riferimento a tale indirizzo IP pubblico.

      Per i servizi di bilanciamento del carico interni, riconfigurare il servizio di bilanciamento del carico per aggiungere una nuova configurazione IP front-end con la configurazione di disponibilità desiderata. Questo passaggio assegna un nuovo indirizzo IP privato all'interno della subnet.

    2. Riconfigurare le regole di bilanciamento del carico per usare la nuova configurazione IP front-end.

      Importante

      Questa operazione richiede di riconfigurare i client per inviare il traffico al nuovo indirizzo IP front-end. A seconda dei clienti, il processo potrebbe richiedere un'interruzione del servizio.

    3. Rimuovere la configurazione IP front-end precedente.

Comportamento quando tutte le zone sono integre

Questa sezione descrive cosa aspettarsi quando un servizio di bilanciamento del carico usa una configurazione IP front-end con ridondanza della zona e tutte le zone di disponibilità funzionano normalmente.

  • Routing del traffico tra zone: Il bilanciamento del carico può verificarsi in qualsiasi zona di disponibilità. Il bilanciatore di carico invia il traffico alle istanze back-end funzionanti correttamente specificate nel pool back-end, senza considerare quale zona di disponibilità contenga l'istanza back-end.

  • Replica dei dati tra zone: Load Balancer funziona come servizio pass-through di rete che non archivia o replica i dati dell'applicazione. Anche se si configura la persistenza della sessione nel servizio di bilanciamento del carico, il servizio di bilanciamento del carico non archivia alcuno stato. La persistenza della sessione regola il processo di hash per instradare le richieste alla stessa istanza back-end, ma il servizio di bilanciamento del carico non garantisce la persistenza della sessione. Quando il pool back-end cambia, il servizio di bilanciamento del carico ricompila la distribuzione delle richieste client e non archivia o sincronizza lo stato.

    Il servizio mantiene lo stato di configurazione attraverso la replica sincrona tra le zone, garantendo la coerenza immediata delle regole di bilanciamento del carico, delle configurazioni dei probe di integrità e dell'appartenenza ai pool back-end in tutte le zone.

Comportamento durante un errore di zona

Questa sezione descrive cosa aspettarsi quando un servizio di bilanciamento del carico usa una configurazione IP front-end con ridondanza della zona e si verifica un'interruzione della zona di disponibilità.

  • Rilevamento e risposta: La piattaforma Azure è responsabile del rilevamento di un errore in una zona di disponibilità e della risposta. Non è necessario eseguire alcuna operazione per avviare un failover di zona.
  • Richieste attive: Quando una zona ha esito negativo, tutti i flussi TCP e UDP esistenti all'interno della zona vengono reimpostati automaticamente e i client devono ritentare tali flussi. I client devono implementare una gestione degli errori temporanei sufficiente, inclusi i tentativi automatizzati.

  • Perdita di dati prevista: Load Balancer è un servizio di rete senza stato, quindi non archivia i dati dell'applicazione e non si verifica alcuna perdita di dati a livello di bilanciamento del carico.

  • Tempo di inattività previsto: Non è previsto alcun tempo di inattività per i servizi di bilanciamento del carico con ridondanza della zona perché il servizio di bilanciamento del carico continua a funzionare da zone integre.

    Se l'errore influisce sui servizi di calcolo nella zona, le macchine virtuali o altre risorse nella zona interessata potrebbero non essere disponibili. Le sonde di integrità del bilanciamento rilevano questi errori e instradano il traffico verso istanze alternative in base all'algoritmo di bilanciamento, in un'altra zona, e allo stato di integrità delle istanze back-end.

  • Reindirizzamento del traffico: Il servizio di bilanciamento del carico continua a funzionare dalle zone integre. Load Balancer mantiene lo stesso indirizzo IP front-end durante i guasti della zona. Questo comportamento significa che non è necessario applicare gli aggiornamenti DNS (Domain Name System) o riconfigurare i client. La piattaforma Azure stabilisce nuove connessioni client tramite le rimanenti zone sane.

Ripristino della zona

Quando una zona di disponibilità viene ripristinata, Load Balancer riprende automaticamente le normali operazioni. Il front-end a ridondanza di zona inizia automaticamente a gestire il traffico dalla zona recuperata, insieme alle altre zone operative. Le sonde di integrità dalla zona recuperata riprendono la valutazione delle istanze back-end.

Se il guasto della zona influisce anche sui servizi di calcolo nella stessa zona, il Load Balancer aggiunge automaticamente le istanze back-end al pool back-end sano dopo che sono state ripristinate e hanno superato i controlli di integrità. La distribuzione del traffico viene riequilibrata in tutte le zone disponibili in base a un algoritmo di bilanciamento del carico e allo stato di integrità delle istanze back-end.

Verifica dei guasti di zona

La piattaforma Azure gestisce il routing del traffico, la risposta alla caduta della zona e il ripristino della zona di disponibilità, quindi non è necessario avviare o convalidare processi di gestione dei guasti della zona di disponibilità.

È possibile usare Azure Chaos Studio per simulare l'errore di una macchina virtuale in una singola zona. Chaos Studio fornisce errori predefiniti per le macchine virtuali, incluso un errore che arresta una macchina virtuale. È possibile usare queste funzionalità per simulare gli errori della zona e testare i processi di failover.

Resilienza agli errori a livello di area

I servizi di bilanciamento del carico pubblici e interni vengono distribuiti in una singola area di Azure. Se l'area non è più disponibile, anche i servizi di bilanciamento del carico in tale area diventano non disponibili. Load Balancer offre supporto per più aree native tramite un servizio di bilanciamento del carico globale, che supporta il bilanciamento del carico tra aree di Azure. È anche possibile distribuire altri servizi di bilanciamento del carico per instradare ed eseguire il failover tra aree di Azure.

Servizi di bilanciamento del carico globali

I servizi di bilanciamento del carico globali forniscono un singolo indirizzo IP anycast statico che instrada automaticamente il traffico alla distribuzione regionale ottimale in base alla prossimità del client e alla salute regionale. I servizi di bilanciamento del carico globale migliorano l'affidabilità e le prestazioni dell'applicazione.

Con i servizi di bilanciamento del carico globale, si distribuiscono più servizi di bilanciamento del carico pubblici in aree diverse e un servizio di bilanciamento del carico globale funge da front-end globale. Se i server back-end in un'area presentano un problema, il traffico passa automaticamente a aree integre senza modifiche DNS perché l'indirizzo IP anycast rimane costante e instrada il traffico a un'altra area.

Per altre informazioni, vedere Bilanciamento del carico globale.

Soluzioni personalizzate in più aree per la resilienza

Azure offre una gamma di servizi di bilanciamento del carico che soddisfano requisiti diversi. Scegliere un servizio di bilanciamento del carico che soddisfi i requisiti di resilienza e si adatti al tipo di applicazione. Per altre informazioni, vedere Opzioni di bilanciamento del carico.

Contratto di servizio

Il contratto di servizio per i servizi di Azure descrive la disponibilità prevista di ogni servizio e le condizioni che la soluzione deve soddisfare per raggiungere tale aspettativa di disponibilità. Per altre informazioni, vedere Contratti di servizio per Servizi online.

Il contratto di servizio di Load Balancer si applica quando sono configurate almeno due macchine virtuali integre come istanze back-end. Il contratto di servizio esclude il tempo di inattività a causa dell'esaurimento delle porte SNAT o dei gruppi di sicurezza di rete che bloccano il traffico.