Più front-end per Azure Load BalancerMultiple Frontends for Azure Load Balancer

Azure Load Balancer consente di eseguire il bilanciamento del carico dei servizi su più porte, più indirizzi IP o entrambi.Azure Load Balancer allows you to load balance services on multiple ports, multiple IP addresses, or both. È possibile usare le definizioni di servizio di bilanciamento del carico interno e pubblico per eseguire il bilanciamento del carico dei flussi in un set di macchine virtuali.You can use public and internal load balancer definitions to load balance flows across a set of VMs.

Questo articolo descrive i principi fondamentali di questa funzionalità, i concetti importanti e i vincoli.This article describes the fundamentals of this ability, important concepts, and constraints. Se si intende esporre i servizi in un solo indirizzo IP, sono disponibili istruzioni semplificate per le configurazioni di servizi di bilanciamento del carico pubblici o interni.If you only intend to expose services on one IP address, you can find simplified instructions for public or internal load balancer configurations. L'aggiunta di più front-end è un'operazione incrementale rispetto a una configurazione con un solo front-end.Adding multiple frontends is incremental to a single frontend configuration. Usando i concetti illustrati in questo articolo è possibile espandere una configurazione semplificata in qualsiasi momento.Using the concepts in this article, you can expand a simplified configuration at any time.

Quando si definisce un'istanza di Azure Load Balancer, viene connessa una configurazione di pool front-end e back-end con regole.When you define an Azure Load Balancer, a frontend and a backend pool configuration are connected with rules. Il probe di integrità a cui fa riferimento la regola viene usato per determinare il modo in cui i nuovi flussi vengono inviati a un nodo nel pool back-end.The health probe referenced by the rule is used to determine how new flows are sent to a node in the backend pool. Il front-end (noto anche come VIP, indirizzo IP virtuale) è definito da una tupla di 3 elementi costituita da un indirizzo IP (pubblico o interno), un protocollo di trasporto (UDP o TCP) e un numero di porta della regola di bilanciamento del carico.The frontend (aka VIP) is defined by a 3-tuple comprised of an IP address (public or internal), a transport protocol (UDP or TCP), and a port number from the load balancing rule. Il pool back-end è una raccolta di configurazioni IP di macchine virtuali (parte della risorsa NIC) cui fa riferimento il pool back-end di bilanciamento del carico.The backend pool is a collection of Virtual Machine IP configurations (part of the NIC resource) which reference the Load Balancer backend pool.

La tabella seguente contiene alcune configurazioni front-end di esempio:The following table contains some example frontend configurations:

Front-endFrontend Indirizzo IPIP address protocolprotocol portport
11 65.52.0.165.52.0.1 TCPTCP 8080
22 65.52.0.165.52.0.1 TCPTCP 80808080
33 65.52.0.165.52.0.1 UDPUDP 8080
44 65.52.0.265.52.0.2 TCPTCP 8080

La tabella descrive quattro front-end diversi.The table shows four different frontends. I front-end 1, 2 e 3 rappresentano un unico front-end con più regole.Frontends #1, #2 and #3 are a single frontend with multiple rules. Viene usato lo stesso indirizzo IP, ma la porta o il protocollo sono diversi per ogni front-end.The same IP address is used but the port or protocol is different for each frontend. I front-end 1 e 4 sono un esempio di più front-end, in cui lo stesso protocollo e la stessa porta front-end vengono riusati in più front-end.Frontends #1 and #4 are an example of multiple frontends, where the same frontend protocol and port are reused across multiple frontends.

Azure Load Balancer offre flessibilità nella definizione di regole del servizio di bilanciamento del carico.Azure Load Balancer provides flexibility in defining the load balancing rules. Una regola dichiara il modo in cui viene eseguito il mapping di un indirizzo e una porta nel front-end all'indirizzo e alla porta di destinazione nel back-end.A rule declares how an address and port on the frontend is mapped to the destination address and port on the backend. L'eventuale riutilizzo delle porte back-end tra regole dipende dal tipo di regola.Whether or not backend ports are reused across rules depends on the type of the rule. Ogni tipo di regola presenta requisiti specifici che possono influire sulla configurazione degli host e la progettazione dei probe.Each type of rule has specific requirements that can affect host configuration and probe design. Esistono due tipi di regole:There are two types of rules:

  1. La regola predefinita senza riutilizzo delle porte back-endThe default rule with no backend port reuse
  2. La regola con indirizzo IP mobile che prevede il riutilizzo delle porte back-endThe Floating IP rule where backend ports are reused

Azure Load Balancer consente di combinare i due tipi di regole nella stessa configurazione del servizio di bilanciamento del carico.Azure Load Balancer allows you to mix both rule types on the same load balancer configuration. Il servizio di bilanciamento del carico può usare le regole contemporaneamente per una determinata macchina virtuale o una qualsiasi combinazione, purché siano rispettati i vincoli della regola.The load balancer can use them simultaneously for a given VM, or any combination, as long as you abide by the constraints of the rule. Il tipo di regola scelto dipende dai requisiti dell'applicazione e dalla complessità correlata al supporto della configurazione.Which rule type you choose depends on the requirements of your application and the complexity of supporting that configuration. È necessario valutare quali tipi di regole siano più adatti allo scenario.You should evaluate which rule types are best for your scenario.

Questi scenari verranno approfonditi iniziando con il comportamento predefinito.We explore these scenarios further by starting with the default behavior.

Regola di tipo 1: nessun riutilizzo delle porte back-endRule type #1: No backend port reuse

Figura con più front-end e un front-end in colore verde e viola

In questo scenario i front-end sono configurati nel modo seguente:In this scenario, the frontends are configured as follows:

Front-endFrontend Indirizzo IPIP address protocolprotocol portport
front-end verde 11 65.52.0.165.52.0.1 TCPTCP 8080
front-end viola 22 65.52.0.265.52.0.2 TCPTCP 8080

Il DIP è la destinazione del flusso in ingresso.The DIP is the destination of the inbound flow. Nel pool di back-end, ogni macchina virtuale espone il servizio desiderato su una porta univoca in un DIP.In the backend pool, each VM exposes the desired service on a unique port on a DIP. Questo servizio è associato al front-end tramite una definizione di regole.This service is associated with the frontend through a rule definition.

Si definiscono due regole:We define two rules:

RegolaRule Mapping frontendMap frontend Al pool back-endTo backend pool
11 front-end verde Frontend1:80Frontend1:80 back-end DIP1:80,DIP1:80, back-end DIP2:80DIP2:80
22 Indirizzo VIP Frontend2:80Frontend2:80 back-end DIP1:81,DIP1:81, back-end DIP2:81DIP2:81

Il mapping completo in Azure Load Balancer sarà ora il seguente:The complete mapping in Azure Load Balancer is now as follows:

RegolaRule Indirizzo IP front-endFrontend IP address protocolprotocol portport DestinationDestination portport
regola verde 11 65.52.0.165.52.0.1 TCPTCP 8080 Indirizzo IP DIPDIP IP Address 8080
regola viola 22 65.52.0.265.52.0.2 TCPTCP 8080 Indirizzo IP DIPDIP IP Address 8181

Ogni regola deve produrre un flusso con una combinazione univoca di indirizzo IP di destinazione e porta di destinazione.Each rule must produce a flow with a unique combination of destination IP address and destination port. Modificando la porta di destinazione del flusso, più regole possono inviare flussi allo stesso DIP in porte diverse.By varying the destination port of the flow, multiple rules can deliver flows to the same DIP on different ports.

I probe di integrità vengono sempre indirizzati al DIP di una macchina virtuale.Health probes are always directed to the DIP of a VM. È necessario assicurarsi che il probe rifletta lo stato della VM.You must ensure you that your probe reflects the health of the VM.

Regola di tipo 2: riutilizzo delle porte back-end tramite indirizzo IP mobileRule type #2: backend port reuse by using Floating IP

Azure Load Balancer consente di riusare la porta front-end in più front-end indipendentemente dal tipo di regola usato.Azure Load Balancer provides the flexibility to reuse the frontend port across multiple frontends regardless of the rule type used. Alcuni scenari di applicazione preferiscono o richiedono l'uso della stessa porta da parte di più istanze dell'applicazione in una singola macchina virtuale nel pool back-end.Additionally, some application scenarios prefer or require the same port to be used by multiple application instances on a single VM in the backend pool. Esempi comuni di riutilizzo delle porte includono il clustering per la disponibilità elevata, le appliance virtuali di rete e l'esposizione di più endpoint TLS senza rieseguire la crittografia di rete.Common examples of port reuse include clustering for high availability, network virtual appliances, and exposing multiple TLS endpoints without re-encryption.

Per riutilizzare la porta di back-end tra più regole, è necessario abilitare l'indirizzo IP mobile nella definizione della regola.If you want to reuse the backend port across multiple rules, you must enable Floating IP in the rule definition.

Il termine "indirizzo IP mobile" appartiene alla terminologia di Azure e fa riferimento a una parte di ciò che è noto come Direct Server Return (DSR)."Floating IP" is Azure's terminology for a portion of what is known as Direct Server Return (DSR). Il DSR è costituito da due parti: una topologia di flussi e uno schema di mappatura degli indirizzi IP.DSR consists of two parts: a flow topology and an IP address mapping scheme. A livello di piattaforma, Azure Load Balancer viene sempre eseguito in una topologia di flussi DSR indipendentemente dal fatto che l'indirizzo IP mobile sia abilitato o meno.At a platform level, Azure Load Balancer always operates in a DSR flow topology regardless of whether Floating IP is enabled or not. Ciò significa che la parte in uscita di un flusso viene sempre correttamente riscritta in un flusso direttamente nell'origine.This means that the outbound part of a flow is always correctly rewritten to flow directly back to the origin.

Con il tipo di regola predefinito, Azure espone uno schema di mappatura degli indirizzi IP tradizionale per il servizio di bilanciamento del carico per semplificarne l'uso.With the default rule type, Azure exposes a traditional load balancing IP address mapping scheme for ease of use. L'abilitazione dell'indirizzo IP mobile modifica lo schema di mappatura degli indirizzi IP per consentire una maggiore flessibilità, come illustrato di seguito.Enabling Floating IP changes the IP address mapping scheme to allow for additional flexibility as explained below.

Il diagramma seguente illustra questa configurazione:The following diagram illustrates this configuration:

Figura con più front-end e un front-end in colore verde e viola con DSR

Per questo scenario, ogni macchina virtuale nel pool back-end ha tre interfacce di rete:For this scenario, every VM in the backend pool has three network interfaces:

  • DIP: scheda di interfaccia di rete virtuale associata alla macchina virtuale (configurazione IP della risorsa interfaccia di rete di Azure)DIP: a Virtual NIC associated with the VM (IP configuration of Azure's NIC resource)
  • Front-end 1: un'interfaccia di loopback all'interno del sistema operativo guest configurato con l'indirizzo IP di Front-end 1Frontend 1: a loopback interface within guest OS that is configured with IP address of Frontend 1
  • Front-end 2: un'interfaccia di loopback all'interno del sistema operativo guest configurato con l'indirizzo IP di Front-end 2Frontend 2: a loopback interface within guest OS that is configured with IP address of Frontend 2

Importante

La configurazione delle interfacce di loopback viene eseguita all'interno del sistema operativo guest.The configuration of the loopback interfaces is performed within the guest OS. Questa configurazione non viene eseguita o gestita da Azure.This configuration is not performed or managed by Azure. Senza questa configurazione, le regole non funzionano.Without this configuration, the rules will not function. Le definizioni dei probe di integrità usano il DIP della macchina virtuale anziché l'interfaccia di loopback che rappresenta il front-end DSR.Health probe definitions use the DIP of the VM rather than the loopback interface representing the DSR Frontend. Il servizio deve quindi mettere a disposizione le risposte probe su una porta DIP che rifletta lo stato del servizio offerto nell'interfaccia di loopback che rappresenta il front-end DSR.Therefore, your service must provide probe responses on a DIP port that reflect the status of the service offered on the loopback interface representing the DSR Frontend.

Si supponga la stessa configurazione front-end dello scenario precedente:Let's assume the same frontend configuration as in the previous scenario:

Front-endFrontend Indirizzo IPIP address protocolprotocol portport
front-end verde 11 65.52.0.165.52.0.1 TCPTCP 8080
front-end viola 22 65.52.0.265.52.0.2 TCPTCP 8080

Si definiscono due regole:We define two rules:

RegolaRule Front-endFrontend Mapping al pool back-endMap to backend pool
11 Regola Frontend1:80Frontend1:80 back-end Frontend1:80 (in VM1 e VM2)Frontend1:80 (in VM1 and VM2)
22 Regola Frontend2:80Frontend2:80 back-end Frontend2:80 (in VM1 e VM2)Frontend2:80 (in VM1 and VM2)

La tabella seguente illustra il mapping completo nel servizio di bilanciamento del carico:The following table shows the complete mapping in the load balancer:

RegolaRule Indirizzo IP front-endFrontend IP address protocolprotocol portport DestinationDestination portport
regola verde 11 65.52.0.165.52.0.1 TCPTCP 8080 uguale a front-end (65.52.0.1)same as frontend (65.52.0.1) uguale a front-end (80)same as frontend (80)
regola viola 22 65.52.0.265.52.0.2 TCPTCP 8080 uguale a front-end (65.52.0.2)same as frontend (65.52.0.2) uguale a front-end (80)same as frontend (80)

La destinazione del flusso in ingresso è l'indirizzo IP del front-end nell'interfaccia di loopback della macchina virtuale.The destination of the inbound flow is the frontend IP address on the loopback interface in the VM. Ogni regola deve produrre un flusso con una combinazione univoca di indirizzo IP di destinazione e porta di destinazione.Each rule must produce a flow with a unique combination of destination IP address and destination port. Modificando l'indirizzo IP di destinazione del flusso, è possibile riusare la porta nella stessa macchina virtuale.By varying the destination IP address of the flow, port reuse is possible on the same VM. Il servizio viene esposto al servizio di bilanciamento del carico associandolo all'indirizzo IP del front-end e alla porta dell'interfaccia di loopback corrispondente.Your service is exposed to the load balancer by binding it to the frontend’s IP address and port of the respective loopback interface.

Si noti che in questo esempio non viene modificata la porta di destinazione.Notice that this example does not change the destination port. Anche se questo è uno scenario con indirizzo IP mobile, Azure Load Balancer supporta anche la definizione di una regola per la riscrittura della porta di destinazione back-end e per differenziarla dalla porta di destinazione front-end.Even though this is a Floating IP scenario, Azure Load Balancer also supports defining a rule to rewrite the backend destination port and to make it different from the frontend destination port.

Il tipo di regola con indirizzo IP mobile è alla base di diversi modelli di configurazione del servizio di bilanciamento di carico.The Floating IP rule type is the foundation of several load balancer configuration patterns. Un esempio attualmente disponibile è la configurazione SQL AlwaysOn con più listener .One example that is currently available is the SQL AlwaysOn with Multiple Listeners configuration. Altri scenari di questo tipo verranno documentati nel tempo.Over time, we will document more of these scenarios.

LimitazioniLimitations

  • Le configurazioni di più front-end sono supportate solo con le macchine virtuali IaaS.Multiple frontend configurations are only supported with IaaS VMs.
  • Con la regola dell'indirizzo IP mobile, l'applicazione deve usare la configurazione IP primaria per i flussi in uscita.With the Floating IP rule, your application must use the primary IP configuration for outbound flows. Se l'applicazione si associa all'indirizzo IP del front-end configurato nell'interfaccia di loopback del sistema operativo guest, SNAT di Azure non potrà riscrivere il flusso in uscita e il flusso avrà esito negativo.If your application binds to the frontend IP address configured on the loopback interface in the guest OS, Azure's SNAT is not available to rewrite the outbound flow and the flow fails.
  • Gli indirizzi IP pubblici hanno un effetto sulla fatturazione.Public IP addresses have an effect on billing. Per altre informazioni, vedere Prezzi per gli indirizzi IPFor more information, see IP Address pricing
  • Si applicano i limiti delle sottoscrizioni.Subscription limits apply. Per altre informazioni, vedere i limiti del servizio .For more information, see Service limits for details.

Passaggi successiviNext steps

  • Verificare le connessioni in uscita per comprendere l'impatto di più server front-end sul comportamento delle connessioni in uscita.Review Outbound connections to understand the impact of multiple frontends on outbound connection behavior.