Vários front-ends para Azure Load BalancerMultiple frontends for Azure Load Balancer

O Azure Load Balancer permite que você equilibre a carga de serviços em várias portas, vários endereços IP ou ambos.Azure Load Balancer allows you to load balance services on multiple ports, multiple IP addresses, or both. Você pode usar definições de balanceador de carga públicas e internas para fluxos de balanceamento de carga em um conjunto de VMs.You can use public and internal load balancer definitions to load balance flows across a set of VMs.

Este artigo descreve os conceitos básicos dessa capacidade, conceitos importantes e restrições.This article describes the fundamentals of this ability, important concepts, and constraints. Se você pretende expor serviços em um endereço IP, encontre instruções simplificadas para configurações do balanceador de carga público ou interno.If you only intend to expose services on one IP address, you can find simplified instructions for public or internal load balancer configurations. A adição de vários front-ends é um complemento a uma única configuração de front-end.Adding multiple frontends is incremental to a single frontend configuration. Com os conceitos deste artigo, você pode expandir uma configuração simplificada quanto quiser.Using the concepts in this article, you can expand a simplified configuration at any time.

Quando você define um Azure Load Balancer, uma configuração de pool de front-end e back-end são conectadas às regras.When you define an Azure Load Balancer, a frontend and a backend pool configuration are connected with rules. A investigação de integridade referenciada pela regra é usada para determinar como os novos fluxos serão enviados para um nó no pool de 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. O front-end (ou seja, VIP) é definido por uma tupla de 3 composta por um endereço IP (público ou interno), um protocolo de transporte (UDP ou TCP) e um número de porta da regra de balanceamento de carga.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. O pool de back-end é uma coleção de configurações de IP de Máquinas Virtuais (parte do recurso NIC) que referenciam o pool de back-end do Load Balancer.The backend pool is a collection of Virtual Machine IP configurations (part of the NIC resource) which reference the Load Balancer backend pool.

A tabela a seguir contém alguns exemplos de configurações de front-end:The following table contains some example frontend configurations:

Front-endFrontend Endereço IPIP address protocolprotocol portaport
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

A tabela mostra quatro front-ends diferentes.The table shows four different frontends. Os front-ends 1, 2 e 3 são um único front-ends com várias regras.Frontends #1, #2 and #3 are a single frontend with multiple rules. O mesmo endereço IP é usado, mas a porta ou o protocolo é diferente para cada front-end.The same IP address is used but the port or protocol is different for each frontend. Os front-ends 1 e 4 são um exemplo de vários front-ends, onde o mesmo protocolo de front-end e porta são reutilizados em vários front-ends.Frontends #1 and #4 are an example of multiple frontends, where the same frontend protocol and port are reused across multiple frontends.

O Azure Load Balancer fornece flexibilidade na definição de regras de balanceamento de carga.Azure Load Balancer provides flexibility in defining the load balancing rules. Uma regra declara como um endereço e porta no front-end são mapeados para o endereço de destino e porta no back-end.A rule declares how an address and port on the frontend is mapped to the destination address and port on the backend. A reutilização de portas de back-end nas regras depende do tipo de regra.Whether or not backend ports are reused across rules depends on the type of the rule. Cada tipo de regra tem requisitos específicos que podem afetar a configuração do host o design da investigação.Each type of rule has specific requirements that can affect host configuration and probe design. Há dois tipos de regras:There are two types of rules:

  1. A regra padrão sem reutilização de porta de back-endThe default rule with no backend port reuse
  2. A regra de IP Flutuante onde as portas de back-end são reutilizadasThe Floating IP rule where backend ports are reused

O Azure Load Balancer permite que você misture os dois tipos de regra na mesma configuração de balanceador de carga.Azure Load Balancer allows you to mix both rule types on the same load balancer configuration. O balanceador de carga pode usá-los simultaneamente para uma determinada VM ou qualquer combinação, desde que você concorde com as restrições da regra.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. O tipo de regra que você escolhe depende dos requisitos de seu aplicativo e da complexidade do suporte a essa configuração.Which rule type you choose depends on the requirements of your application and the complexity of supporting that configuration. Você deve avaliar quais tipos de regras são melhores para seu cenário.You should evaluate which rule types are best for your scenario.

Vamos explorar esses cenários ainda mais, começando com o comportamento padrão.We explore these scenarios further by starting with the default behavior.

Tipo de regra 1: nenhuma reutilização de porta de back-endRule type #1: No backend port reuse

Ilustração de vários front-ends com front-end verde e roxo

Nesse cenário, os front-ends são configurados da seguinte maneira:In this scenario, the frontends are configured as follows:

Front-endFrontend Endereço IPIP address protocolprotocol portaport
front-end verde 11 65.52.0.165.52.0.1 TCPTCP 8080
front-end roxo 22 65.52.0.265.52.0.2 TCPTCP 8080

O DIP é o destino do fluxo de entrada.The DIP is the destination of the inbound flow. No pool de back-end, cada VM expõe o serviço desejado em uma porta exclusiva em um DIP.In the backend pool, each VM exposes the desired service on a unique port on a DIP. Esse serviço é associado ao front-end por meio de uma definição de regra.This service is associated with the frontend through a rule definition.

Definimos duas regras:We define two rules:

RegraRule Mapear front-endMap frontend Para pool de back-endTo backend pool
11 front-end verde Frontend1:80Frontend1:80 back-end DIP1:80,DIP1:80, back-end DIP2:80DIP2:80
22 VIP Frontend2:80Frontend2:80 back-end DIP1:81,DIP1:81, back-end DIP2:81DIP2:81

O mapeamento completo no Azure Load Balancer agora é o seguinte:The complete mapping in Azure Load Balancer is now as follows:

RegraRule Endereço IP de front-endFrontend IP address protocolprotocol portaport DestinoDestination portaport
regra de verde 11 65.52.0.165.52.0.1 TCPTCP 8080 Endereço IP DIPDIP IP Address 8080
regra de roxo 22 65.52.0.265.52.0.2 TCPTCP 8080 Endereço IP DIPDIP IP Address 8181

Cada regra deve produzir um fluxo com uma combinação exclusiva de endereço IP de destino e porta de destino.Each rule must produce a flow with a unique combination of destination IP address and destination port. Ao variar a porta de destino do fluxo, várias regras podem proporcionar fluxos ao mesmo DIP em portas diferentes.By varying the destination port of the flow, multiple rules can deliver flows to the same DIP on different ports.

Investigações de integridade são sempre direcionadas ao DIP de uma VM.Health probes are always directed to the DIP of a VM. É necessário garantir que sua investigação reflita a integridade da VM.You must ensure you that your probe reflects the health of the VM.

Tipo de regra 2: reutilização de porta de back-end usando o IP FlutuanteRule type #2: backend port reuse by using Floating IP

O Azure Load Balancer oferece a flexibilidade para reutilizar a porta de front-end em vários front-ends, independentemente do tipo de regra usado.Azure Load Balancer provides the flexibility to reuse the frontend port across multiple frontends regardless of the rule type used. Além disso, alguns cenários de aplicativos preferem ou exigem a utilização da mesma porta por várias instâncias do aplicativo em uma única VM no pool de 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. Exemplos comuns de reutilização de porta incluem clusters de alta disponibilidade, dispositivos virtuais de rede e exposição de vários pontos de extremidade TLS sem nova criptografia.Common examples of port reuse include clustering for high availability, network virtual appliances, and exposing multiple TLS endpoints without re-encryption.

Se você quiser reutilizar a porta de back-end em várias regras, habilite o IP Flutuante na definição da regra.If you want to reuse the backend port across multiple rules, you must enable Floating IP in the rule definition.

"IP flutuante" é a terminologia do Azure para uma parte do que é conhecido como DSR (Retorno de Servidor Direto)."Floating IP" is Azure's terminology for a portion of what is known as Direct Server Return (DSR). O DSR é formado por duas partes: uma topologia de fluxo e um esquema de mapeamento de endereço IP.DSR consists of two parts: a flow topology and an IP address mapping scheme. Em um nível de plataforma, o Azure Load Balancer sempre opera em uma topologia de fluxo de DSR, independentemente de o IP Flutuante estar habilitado ou não.At a platform level, Azure Load Balancer always operates in a DSR flow topology regardless of whether Floating IP is enabled or not. Isso significa que a parte de saída de um fluxo é sempre reescrita corretamente para fluir diretamente de volta para a origem.This means that the outbound part of a flow is always correctly rewritten to flow directly back to the origin.

Com o tipo de regra padrão, o Azure expõe um esquema de mapeamento de endereço IP de balanceamento de carga tradicional para facilitar o uso.With the default rule type, Azure exposes a traditional load balancing IP address mapping scheme for ease of use. A habilitação do IP Flutuante altera o esquema de mapeamento de endereço IP a fim de permitir flexibilidade adicional, conforme explicado abaixo.Enabling Floating IP changes the IP address mapping scheme to allow for additional flexibility as explained below.

O diagrama a seguir ilustra essa configuração:The following diagram illustrates this configuration:

Ilustração de vários front-ends com front-end verde e roxo com DSR

Para este cenário, todas as VMs no pool de back-end têm três interfaces de rede:For this scenario, every VM in the backend pool has three network interfaces:

  • DIP: uma NIC Virtual associada à VM (configuração de IP do recurso NIC do Azure)DIP: a Virtual NIC associated with the VM (IP configuration of Azure's NIC resource)
  • Front-end 1: uma interface de loopback no SO Convidado que está configurado com o endereço IP do Front-end 1Frontend 1: a loopback interface within guest OS that is configured with IP address of Frontend 1
  • Front-end 2: uma interface de loopback no SO Convidado que está configurado com o endereço IP do Front-end 2Frontend 2: a loopback interface within guest OS that is configured with IP address of Frontend 2

Importante

A configuração das interfaces de loopback é executada no SO Convidado.The configuration of the loopback interfaces is performed within the guest OS. Essa configuração não é executada ou gerenciada pelo Azure.This configuration is not performed or managed by Azure. Sem essa configuração, as regras não funcionarão.Without this configuration, the rules will not function. As definições de investigação de integridade usam o DIP da VM em vez da interface de loopback que representa o front-end de DSR.Health probe definitions use the DIP of the VM rather than the loopback interface representing the DSR Frontend. Portanto, o serviço deve fornecer respostas de investigação em uma porta DIP que refletem o status do serviço oferecido na interface de loopback que representa o front-end de 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.

Vamos supor a mesma configuração de front-end que no cenário anterior:Let's assume the same frontend configuration as in the previous scenario:

Front-endFrontend Endereço IPIP address protocolprotocol portaport
front-end verde 11 65.52.0.165.52.0.1 TCPTCP 8080
front-end roxo 22 65.52.0.265.52.0.2 TCPTCP 8080

Definimos duas regras:We define two rules:

RegraRule Front-endFrontend Mapa para pool de back-endMap to backend pool
11 Regra Frontend1:80Frontend1:80 back-end Frontend1:80 (em VM1 e VM2)Frontend1:80 (in VM1 and VM2)
22 Regra Frontend2:80Frontend2:80 back-end Frontend2:80 (em VM1 e VM2)Frontend2:80 (in VM1 and VM2)

A tabela a seguir mostra o mapeamento completo no balanceador de carga:The following table shows the complete mapping in the load balancer:

RegraRule Endereço IP de front-endFrontend IP address protocolprotocol portaport DestinoDestination portaport
regra de verde 11 65.52.0.165.52.0.1 TCPTCP 8080 mesmo que front-end (65.52.0.1)same as frontend (65.52.0.1) mesmo que front-end (80)same as frontend (80)
regra de roxo 22 65.52.0.265.52.0.2 TCPTCP 8080 mesmo que front-end (65.52.0.2)same as frontend (65.52.0.2) mesmo que front-end (80)same as frontend (80)

O destino do fluxo de entrada é o endereço IP de front-end na interface de loopback na VM.The destination of the inbound flow is the frontend IP address on the loopback interface in the VM. Cada regra deve produzir um fluxo com uma combinação exclusiva de endereço IP de destino e porta de destino.Each rule must produce a flow with a unique combination of destination IP address and destination port. Ao variar o endereço IP de destino do fluxo, a reutilização de porta é possível na mesma VM.By varying the destination IP address of the flow, port reuse is possible on the same VM. O serviço é exposto ao balanceador de carga vinculando-o à porta e endereço IP de front-end da respectiva interface de loopback.Your service is exposed to the load balancer by binding it to the frontend’s IP address and port of the respective loopback interface.

Observe que este exemplo não altera a porta de destino.Notice that this example does not change the destination port. Embora esse seja um cenário de IP Flutuante, o Azure Load Balancer também oferece suporte à definição de uma regra para reescrever a porta de destino de back-end e diferenciar da porta de destino do 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.

O tipo de regra de IP Flutuante é a base de vários padrões de configuração do balanceador de carga.The Floating IP rule type is the foundation of several load balancer configuration patterns. Um exemplo disponível atualmente é a configuração AlwaysOn com vários ouvintes .One example that is currently available is the SQL AlwaysOn with Multiple Listeners configuration. Ao longo do tempo, documentaremos mais esses cenários.Over time, we will document more of these scenarios.

LimitaçõesLimitations

  • Há suporte para várias configurações de front-ends apenas com VMs de IaaS.Multiple frontend configurations are only supported with IaaS VMs.
  • Com a regra de IP flutuante, seu aplicativo deve usar a configuração de IP primário para fluxos SNAT de saída.With the Floating IP rule, your application must use the primary IP configuration for outbound SNAT flows. Se seu aplicativo se associar ao endereço IP de front-end configurado na interface de loopback no SO convidado, o SNAT de saída do Azure não estará disponível para regravar o fluxo de saída e o fluxo falhará.If your application binds to the frontend IP address configured on the loopback interface in the guest OS, Azure's outbound SNAT is not available to rewrite the outbound flow and the flow fails. Examine os cenários de saída.Review outbound scenarios.
  • Endereços IP públicos têm um efeito sobre a cobrança.Public IP addresses have an effect on billing. Para saber mais, confira Preços de endereço IPFor more information, see IP Address pricing
  • Limites de assinatura são aplicados.Subscription limits apply. Para saber mais, confira Limites de serviço .For more information, see Service limits for details.

Próximas etapasNext steps

  • Consulte Conexões de saída para entender o impacto de vários front-ends no comportamento da conexão de saída.Review Outbound connections to understand the impact of multiple frontends on outbound connection behavior.