Funzionamento di Azure Load Balancer

Completato

Azure Load Balancer opera a livello trasporto del modello OSI. Questa funzionalità di livello 4 consente la gestione del traffico in base a proprietà specifiche del traffico. Proprietà, tra cui indirizzo di origine e di destinazione, tipo di protocollo TCP o UDP e numero di porta.

Load Balancer include diversi elementi che interagiscono tra loro per garantire disponibilità e prestazioni elevate di un'applicazione:

  • Indirizzo IP front-end
  • Regole del servizio di bilanciamento del carico
  • Pool back-end
  • Probe di integrità
  • Regole NAT in ingresso
  • Porte a disponibilità elevata
  • Regole in uscita

Indirizzo IP front-end

L'indirizzo IP front-end è l'indirizzo usato dai client che si connettono all'applicazione Web. Un indirizzo IP front-end può essere pubblico o privato. Le soluzioni di bilanciamento del carico di Azure possono avere più indirizzi IP front-end. La selezione di un indirizzo IP pubblico o privato determina il tipo di servizio di bilanciamento del carico da creare:

  • Indirizzo IP pubblico: un servizio di bilanciamento del carico pubblico: un servizio di bilanciamento del carico pubblico esegue il mapping dell'indirizzo IP pubblico e della porta del traffico in ingresso all'indirizzo IP privato e alla porta della macchina virtuale. Se si applicano le regole di bilanciamento del carico, è possibile distribuire tipi specifici di traffico in più macchine virtuali o servizi. È ad esempio possibile dividere il carico del traffico delle richieste Web tra più server Web. Il servizio di bilanciamento del carico esegue il mapping del traffico di risposta dall'IP privato e dalla porta della macchina virtuale all'indirizzo IP pubblico e alla porta del servizio di bilanciamento del carico. Trasmette quindi la risposta al client richiedente.

  • Indirizzo IP privato: un servizio di bilanciamento del carico interno: un servizio di bilanciamento del carico interno distribuisce il traffico alle risorse all'interno di una rete virtuale. Azure limita l'accesso agli indirizzi IP front-end con carico bilanciato di una rete virtuale. Gli indirizzi IP front-end e le reti virtuali non sono mai esposti direttamente a un endpoint di Internet. Le applicazioni line-of-business interne vengono eseguite in Azure e sono accessibili da Azure o da risorse locali attraverso una connessione VPN o ExpressRoute.

    Diagram that depicts how public and internal load balancers work in Azure Load Balancer.

Regole di bilanciamento del carico

Una regola di bilanciamento del carico definisce come verrà distribuito il traffico al pool backend. La regola esegue il mapping di una specifica combinazione di IP e porte front-end a un set di combinazioni di indirizzi IP e porte back-end.

Diagram that depicts how load balancer rules work in Azure Load Balancer.

Il traffico viene gestito usando un hash a cinque tuple creato dagli elementi seguenti:

  • IP di origine: indirizzo IP del client richiedente.
  • Porta di origine: porta del client richiedente.
  • IP di destinazione: l'indirizzo IP di destinazione della richiesta.
  • Porta di destinazione: porta di destinazione della richiesta.
  • Tipo di protocollo: il tipo di protocollo specificato, TCP o UDP.
  • Affinità di sessione: garantisce che lo stesso nodo del pool gestisca sempre il traffico per un client.

Load Balancer consente di eseguire il bilanciamento del carico dei servizi su più porte, più indirizzi IP o entrambi. È possibile configurare regole di bilanciamento del carico diverse per ogni indirizzo IP front-end. Le configurazioni di più front-end sono supportate solo con le macchine virtuali IaaS.

Load Balancer non può applicare regole diverse in base al contenuto del traffico interno perché opera al livello 4 (livello di trasporto) del modello OSI. Se è necessario gestire il traffico in base alle relative proprietà di livello 7 (livello applicazione), è necessario distribuire una soluzione come app Azure lication Gateway.

Pool back-end

Con il termine pool back-end si intende un gruppo di macchine virtuali o istanze all'interno di un set di scalabilità di macchine virtuali che risponde alla richiesta in ingresso. Per un ridimensionamento a costi contenuti in base ai volumi elevati del traffico in ingresso, le linee guida per il calcolo raccomandano in genere di aggiungere altre istanze al pool back-end.

Load Balancer implementa la riconfigurazione automatica per ridistribuire il carico nel numero modificato di istanze quando si aumentano o si riducono le istanze. Ad esempio, se sono state aggiunte altre due istanze di macchine virtuali al pool back-end, Load Balancer si riconfigurerà per avviare il bilanciamento del traffico verso tali istanze in base alle regole di bilanciamento del carico già configurate.

Probe di integrità

Un probe di integrità viene usato per determinare lo stato integrità delle istanze nel pool back-end. Questo probe di integrità determina se un'istanza è integra e può ricevere traffico. È possibile definire la soglia di non integrità per i probe di integrità. Se un probe non risponde, il servizio di bilanciamento del carico interrompe l'invio di nuove connessioni alle istanze non integre. Un errore di probe non influisce sulle connessioni esistenti. La connessione continua fino a quando:

  • L'applicazione termina il flusso.
  • Si verifica un timeout di inattività.
  • La VM viene arrestata.

Load Balancer consente di configurare diversi tipi di probe di integrità per endpoint: TCP, HTTP e HTTPS.

  • Probe TCP personalizzato: questo probe si basa sulla corretta attivazione di una sessione TCP in una porta probe definita. Se nella macchina virtuale è presente il listener specificato, il probe avrà esito positivo. Se la connessione viene rifiutata, il probe avrà esito negativo. È possibile specificare i valori Porta, Intervallo e Soglia di non integrità.
  • Probe personalizzato HTTP o HTTPS: il servizio di bilanciamento del carico esegue regolarmente probe sull'endpoint (ogni 15 secondi per impostazione predefinita). L'istanza è integra se risponde con HTTP 200 entro il periodo di timeout, che per impostazione predefinita è di 31 secondi. Qualsiasi stato diverso da HTTP 200 provoca un esito negativo del probe. È possibile specificare la porta (Porta), l'URI per richiedere lo stato di integrità dal back-end (URI), l'intervallo di tempo tra tentativi di probe (Intervallo) e il numero di errori che devono verificarsi affinché l'istanza venga considerata non integra (Soglia di non integrità).

Persistenza della sessione

Per impostazione predefinita, Load Balancer distribuisce il traffico di rete in modo uniforme tra più istanze di macchine virtuali. La persistenza viene mantenuta solo all'interno di una sessione di trasporto. La persistenza della sessione specifica il modo in cui deve essere gestito il traffico proveniente da un client. Il comportamento predefinito (Nessuno) è che qualsiasi macchina virtuale integra può gestire richieste successive da un client.

La persistenza della sessione è nota anche come affinità di sessione, affinità IP di origine o affinità IP client. Questa modalità di distribuzione usa un hash a due tuple (IP di origine e IP di destinazione) o a tre tuple (IP di origine, IP di destinazione e tipo di protocollo) per eseguire il routing verso le istanze back-end. Quando si usa la persistenza della sessione, le connessioni dallo stesso client passano alla stessa istanza back-end all'interno del pool back-end. È possibile configurare una delle opzioni di persistenza della sessione seguenti:

  • Nessuno (impostazione predefinita): specifica che qualsiasi macchina virtuale integra può gestire la richiesta.
  • IP client (2 tuple): specifica che la stessa istanza back-end può gestire le richieste successive dallo stesso indirizzo IP client.
  • IP client e protocollo (3 tuple): specifica che la stessa istanza back-end può gestire le richieste successive dalla stessa combinazione di indirizzo IP e protocollo client.

È possibile modificare questo comportamento configurando una delle opzioni descritte nelle sezioni seguenti.

Porte a disponibilità elevata

Una regola di bilanciamento del carico configurata con protocol - all and port - 0 è detta regola per porta a disponibilità elevata. Consente di specificare una sola regola per eseguire il bilanciamento del carico di tutti i flussi TCP e UDP in arrivo su tutte le porte di un bilanciamento del carico standard interno.

La decisione di bilanciamento del carico viene presa per ogni flusso Questa azione è basata sulla seguente connessione a cinque tuple:

  • Indirizzo IP di origine
  • Porta di origine
  • Indirizzo IP di destinazione
  • Porta di destinazione
  • Protocollo

Le regole di bilanciamento del carico per porte a disponibilità elevata permettono di gestire scenari critici, ad esempio la disponibilità elevata e il ridimensionamento per appliance virtuali di rete all'interno di reti virtuali. Questa funzionalità può essere utile quando è necessario eseguire il bilanciamento del carico di un numero elevato di porte.

Diagram that shows how high availability ports work in Azure Load Balancer.

Regole NAT in ingresso

È possibile usare le regole di bilanciamento del carico in combinazione con le regole NAT (Network Address Translation). È possibile, ad esempio, usare NAT dall'indirizzo pubblico del servizio di bilanciamento del carico alla porta TCP 3389 di una macchina virtuale specifica. Questa combinazione di regole consente l'accesso desktop remoto dall'esterno di Azure.

Diagram that shows how inbound NAT rules work in Azure Load Balancer.

Regole in uscita

Una regola in uscita configura il processo SNAT (Source Network Address Translation) per tutte le macchine virtuali o le istanze identificate dal pool back-end. In questo modo, le istanze del back-end comunicano (in uscita) con Internet o altri endpoint pubblici.

Diagram that shows how outbound rules work in Azure Load Balancer.