Visão geral do balanceador de carga de aplicativo

O balanceador de carga de aplicativo é um balanceador de carga de camada 7 baseado em proxy que permite executar e escalonar os serviços. O balanceador de carga de aplicativo distribui o tráfego HTTP e HTTPS para back-ends hospedados em várias plataformas do Google Cloud, como o Compute Engine, Google Kubernetes Engine (GKE), Cloud Storage e Cloud Run, bem como back-ends externos conectados pela Internet ou usando conectividade híbrida.

Os balanceadores de carga de aplicativo estão disponíveis nos seguintes modos de implantação:

  • Balanceador de carga de aplicativo externo: faz o balanceamento de carga do tráfego proveniente de clientes na Internet. Para obter detalhes de arquitetura, consulte Arquitetura do balanceador de carga de aplicativo externo.

    Modo de implantação Nível de serviço da rede Esquema de balanceamento de carga Endereço IP Portas de front-end
    Global externo Nível Premium EXTERNAL_MANAGED IPv4
    IPv6

    Pode referenciar exatamente uma porta de 1 a 65535.

    Regional externo Nível Premium ou Standard EXTERNAL_MANAGED IPv4
    Clássico

    Global no nível Premium.

    Regional no nível Standard

    EXTERNAL IPv4
    IPv6 (exige o nível Premium)
  • Balanceador de carga de aplicativo interno: faz o balanceamento de carga do tráfego na rede VPC ou nas redes conectadas à rede VPC. Para obter detalhes de arquitetura, consulte Arquitetura do balanceador de carga de aplicativo interno.

    Modo de implantação Nível de serviço da rede Esquema de balanceamento de carga Endereço IP Portas de front-end
    Regional interno Nível Premium INTERNAL_MANAGED IPv4

    Pode referenciar exatamente uma porta de 1 a 65535.

    Interno entre regiões*

    Nível Premium INTERNAL_MANAGED IPv4

O esquema de balanceamento de carga é um atributo na regra de encaminhamento e no serviço de back-end de um balanceador de carga e indica se o balanceador de carga pode ser usado para tráfego interno ou externo. O termo *_MANAGED no esquema de balanceamento de carga indica que o balanceador de carga é implementado como um serviço gerenciado no Google Front Ends (GFEs) ou no código aberto Proxy Envoy. Em um esquema de balanceamento de carga *_MANAGED, as solicitações são roteadas para o GFE ou o proxy Envoy.

* O balanceador de carga usa recursos globais e pode ser implantado em uma ou várias regiões do Google Cloud escolhidas.

Balanceador de carga de aplicativo externo

Os balanceadores de carga de aplicativos externos são implementados usando front-ends do Google (GFEs) ou proxies gerenciados. Os balanceadores de carga de aplicativo externos globais e os balanceadores de carga de aplicativo clássicos usam GFEs distribuídos globalmente, que funcionam juntos usando a rede global e o plano de controle do Google. Os GFEs oferecem balanceamento de carga multirregional no nível Premium, direcionando o tráfego para o back-end íntegro mais próximo que tem capacidade e encerrando o tráfego HTTP(S) o mais próximo possível de seus usuários. Os balanceadores de carga de aplicativo externos globais e externos regionais usam o software de proxy Envoy de código aberto para ativar recursos avançados de gerenciamento de tráfego.

Eles podem ser implantados em um dos seguintes modos: global, regional ou clássico.

Os balanceadores de carga de aplicativo externos são compatíveis com os seguintes recursos:

O diagrama a seguir mostra um exemplo de arquitetura do balanceador de carga de aplicativo externo.

Arquitetura do balanceador de carga de aplicativo externo.
Arquitetura do balanceador de carga de aplicativo externo.

Para uma visão geral completa, consulte Visão geral da arquitetura para balanceadores de carga de aplicativos externos.

Balanceador de carga de aplicativo interno

Os balanceadores de carga de aplicativo internos são balanceadores de carga regionais de camada 7 baseados em proxy do Envoy que permitem executar e escalonar o tráfego de aplicativo HTTP por trás de um endereço IP interno. Os balanceadores de carga de aplicativo internos são compatíveis com back-ends em uma região, mas podem ser configurados para serem acessados globalmente por clientes de qualquer região do Google Cloud.

O balanceador de carga distribui o tráfego para back-ends hospedados no Google Cloud, no local ou em outros ambientes de nuvem. Os balanceadores de carga de aplicativo internos também são compatíveis com os seguintes recursos:

  • Políticas de localidade. Em um grupo de instâncias de back-end ou de endpoint de rede, é possível configurar como as solicitações são distribuídas para instâncias ou endpoints de membro. Para detalhes, consulte Gerenciamento de tráfego.
  • Acesso global. Quando o acesso global está ativado, clientes de qualquer região podem acessar o balanceador de carga. Para detalhes, consulte Ativar acesso global.
  • Acesso a partir de redes conectadas. É possível tornar seu balanceador de carga acessível para clientes de redes além da própria rede de nuvem privada virtual (VPC) do Google Cloud. As outras redes precisam estar conectadas à rede VPC do balanceador de carga usando o peering de rede VPC, o Cloud VPN ou o Cloud Interconnect. Para detalhes, consulte Acessar redes conectadas.
  • Compatibilidade com o GKE usando o Ingress (totalmente orquestrado). Para mais detalhes, consulte Configurar o Ingress para balanceadores de carga de aplicativos internos.
  • Os balanceadores de carga de aplicativo internos regionais são compatíveis com o App Hub, que está em pré-lançamento.
Arquitetura do balanceador de carga de aplicativo interno.
Arquitetura do balanceador de carga de aplicativo interno.

Para uma visão geral completa, consulte Visão geral da arquitetura para balanceadores de carga internos do aplicativo.

Casos de uso

As seções a seguir apresentam alguns casos de uso comuns para balanceadores de carga de aplicativo.

Serviços da Web de três camadas

É possível implantar uma combinação de balanceadores de carga de aplicativo e de rede para dar suporte a serviços da Web de três camadas tradicionais. O exemplo a seguir mostra como implantar cada nível, dependendo do tipo de tráfego:

  • Nível da Web. O front-end do aplicativo é disponibilizado por um balanceador de carga de aplicativo externo com back-ends de grupos de instâncias. O tráfego entra da Internet e é enviado por proxy do balanceador de carga para um conjunto de back-ends de grupos de instâncias em várias regiões. Esses back-ends enviam tráfego HTTP(S) para um conjunto de balanceadores de carga de aplicativos internos.
  • Nível do aplicativo. O middleware do aplicativo é implantado e escalonado usando um balanceador de carga de aplicativo interno e back-ends de grupos de instâncias. Os balanceadores de carga distribuem o tráfego para grupos de instâncias de middleware. Esses grupos de instâncias de middleware enviam o tráfego para balanceadores de carga de rede de passagem interna.
  • Nível do banco de dados. Os balanceadores de carga de rede servem como front-ends para o nível do banco de dados. Eles distribuem o tráfego para back-ends de armazenamento de dados em várias regiões.
Roteamento baseado na camada 7 em um aplicativo da Web de três camadas.
Roteamento baseado na camada 7 em um aplicativo da Web de três camadas.

Acesso global para balanceadores de carga de aplicativo regionais internos

Se você ativar o acesso global para o balanceador de carga de aplicativo interno regional, as VMs de cliente da camada da Web poderão estar em outra região.

Neste exemplo de aplicativo de vários níveis, mostramos o seguinte:

  • Uma camada da Web voltada à Internet e disponível globalmente que balanceia a carga usando um balanceador de carga de aplicativo externo.
  • Uma camada interna de banco de dados de balanceamento de carga de back-end na região us-east1 acessada pela camada global da Web.
  • Uma VM cliente que faz parte da camada da Web na região europe-west1 com acesso à camada do banco de dados de balanceamento de carga interno localizada em us-east1.
App da Web de três camadas com um balanceador de carga de aplicativo externo, acesso global e um balanceador de carga de aplicativo interno.
App da Web de três camadas com um balanceador de carga de aplicativo externo, acesso global e um balanceador de carga de aplicativo interno (clique para ampliar).

Cargas de trabalho com compliance com jurisdição

Algumas cargas de trabalho com requisitos regulatórios ou de conformidade exigem que as configurações de rede e a terminação de tráfego estejam em uma região específica. Para essas cargas de trabalho, um balanceador de carga de aplicativo regional geralmente é a opção preferencial para fornecer os controles jurisdicionais que essas cargas de trabalho exigem.

Gerenciamento de tráfego avançado

Os balanceadores de carga de aplicativo são compatíveis com recursos avançados de gerenciamento de tráfego que oferecem controle refinado sobre como seu tráfego é processado. Esses recursos incluem o seguinte:

  • É possível atualizar a forma como o tráfego é gerenciado sem precisar modificar o código do aplicativo.
  • Você pode rotear o tráfego de maneira inteligente com base nos parâmetros HTTP(S), como host, caminho, cabeçalhos e outros parâmetros de solicitação. Por exemplo, é possível usar buckets do Cloud Storage para processar qualquer conteúdo de vídeo estático e grupos de instâncias ou NEGs para processar todas as outras solicitações.
  • É possível reduzir os riscos ao implantar uma nova versão do aplicativo usando a divisão de tráfego baseada em peso. Por exemplo, é possível enviar 95% do tráfego à versão anterior do serviço e 5% à nova versão dele. Depois de validar se a nova versão funciona conforme o esperado, é possível alterar gradualmente as porcentagens até que 100% do tráfego chegue à nova versão do serviço. A divisão de tráfego normalmente é usada para implantar novas versões, testes A/B, migração de serviços, modernização de serviços legados e processos semelhantes.

Veja a seguir um exemplo de roteamento baseado em caminho implementado usando um balanceador de carga de aplicativo interno. Cada caminho é processado por um back-end diferente.

Roteamento baseado em caminho com balanceadores de carga de aplicativos internos
Roteamento baseado em caminho com balanceadores de carga de aplicativos internos

Para ver mais detalhes, consulte os seguintes tópicos:

Extensibilidade com extensões de serviço

Com as chamadas de extensões de serviço, é possível injetar lógica personalizada no caminho de dados de balanceamento de carga. Com essas extensões, você instrui os balanceadores de carga de aplicativo compatíveis a fazer chamadas gRPC para aplicativos ou serviços gerenciados pelo usuário durante o processamento de dados.

Para mais informações, consulte Visão geral das extensões de serviço.

Como migrar serviços legados para o Google Cloud

Migrar um serviço para o Google Cloud permite que você libere a capacidade local e reduza o custo e o custo de manutenção de uma infraestrutura local. É possível configurar temporariamente uma implantação híbrida que permite rotear o tráfego para o serviço local atual e para um endpoint de serviço do Google Cloud correspondente.

O diagrama a seguir demonstra essa configuração com um balanceador de carga de aplicativo interno. Se você estiver usando um balanceador de carga interno, é possível configurar o balanceador de carga do Google Cloud para usar a divisão de tráfego baseada em peso para dividir o tráfego entre os dois serviços. A divisão de tráfego permite que você comece enviando 0% do tráfego para o serviço do Google Cloud e 100% para o serviço local. Em seguida, é possível aumentar gradualmente a proporção de tráfego enviado para o serviço do Google Cloud. Em algum momento, você enviará 100% do tráfego para o serviço do Google Cloud e poderá desativar o serviço local.

Migre serviços legados para o Google Cloud.
Migre serviços legados para o Google Cloud.

Balanceamento de carga para aplicativos do GKE

Há três maneiras de implantar balanceadores de carga de aplicativo em clusters do GKE:

Balanceamento de carga para aplicativos do Cloud Run, do Cloud Functions e do App Engine

É possível usar um balanceador de carga de aplicativo como front-end para seus aplicativos sem servidor do Google Cloud. Isso permite que você configure os aplicativos sem servidor para atender às solicitações de um endereço IP dedicado que não é compartilhado com outros serviços.

Para configurar essa opção, use um NEG sem servidor para o back-end do balanceador de carga. Os diagramas a seguir mostram como um aplicativo sem servidor é integrado a um balanceador de carga de aplicativo.

Global externo

Este diagrama mostra como um NEG sem servidor se encaixa em uma arquitetura global de balanceador de carga de aplicativo externo.

Arquitetura regional de balanceador de carga de aplicativo externo para aplicativos sem servidor.
Arquitetura global do balanceador de carga de aplicativo externo para apps sem servidor.

Regional externo

Este diagrama mostra como um NEG sem servidor se encaixa em uma arquitetura regional de balanceador de carga de aplicativo externo. Esse balanceador de carga é compatível apenas com back-ends do Cloud Run.

Arquitetura regional de balanceador de carga de aplicativo externo para aplicativos sem servidor.
Arquitetura regional do balanceador de carga de aplicativo externo para aplicativos sem servidor.

Regional interno

Este diagrama mostra como um NEG sem servidor se encaixa no modelo do balanceador de carga de aplicativo interno. Esse balanceador de carga é compatível apenas com back-ends do Cloud Run.

Balanceador de carga de aplicativo externo regional para aplicativos sem servidor.
Arquitetura do balanceador de carga de aplicativo interno regional para aplicativos sem servidor.

Interno entre regiões

Este diagrama mostra como um NEG sem servidor se encaixa no modelo de balanceador de carga de aplicativo interno entre regiões. Esse balanceador de carga é compatível apenas com back-ends do Cloud Run.

Arquitetura do balanceador de carga de aplicativo interno entre regiões para aplicativos sem servidor.
Arquitetura do balanceador de carga de aplicativo interno entre regiões para aplicativos sem servidor (clique para ampliar).

Documentação relacionada:

Balanceamento de carga para back-ends fora do Google Cloud

Os balanceadores de carga de aplicativo são compatíveis com o tráfego de balanceamento de carga para endpoints que se estendem além do Google Cloud, como data centers locais e outros ambientes de nuvem. Normalmente, os back-ends externos são acessíveis de uma das seguintes maneiras:

  • Acessível pela Internet pública. Para esses endpoints, use um NEG da Internet como back-end do balanceador de carga. O NEG da Internet está configurado para apontar para um único endpoint FQDN:Port ou IP:Port no back-end externo. Os NEGs da Internet podem ser globais ou regionais.

    O diagrama a seguir demonstra como se conectar a back-ends externos acessíveis pela Internet pública usando um NEG global da Internet.

    Balanceador de carga de aplicativo externo global com um back-end externo.
    Balanceador de carga de aplicativo externo global com um back-end externo.

    Para mais detalhes, consulte Visão geral de NEGs da Internet.

  • Acessível usando conectividade híbrida (Cloud Interconnect ou Cloud VPN). Para esses endpoints, use um NEG híbrido como o back-end do balanceador de carga. O NEG híbrido está configurado para apontar para endpoints de IP:Port no back-end externo.

    Os diagramas a seguir demonstram como se conectar a back-ends externos acessíveis usando o Cloud Interconnect ou o Cloud VPN.

    Externo

    Conectividade híbrida com balanceadores de carga globais de aplicativos externos.
    Conectividade híbrida com balanceadores de carga globais de aplicativos externos.

    Interno

    Conectividade híbrida com balanceadores de carga de aplicativo internos.
    Conectividade híbrida com balanceadores de carga de aplicativo interno.

    Para mais detalhes, consulte Visão geral de NEGs híbridos.

Integração com o Private Service Connect

O Private Service Connect permite o consumo privado de serviços em redes VPC que pertencem a diferentes grupos, equipes, projetos ou organizações. Use o Private Service Connect para acessar APIs e serviços do Google ou serviços gerenciados em outra rede VPC.

É possível usar um balanceador de carga de aplicativo externo global para acessar serviços publicados usando o Private Service Connect. Para mais informações, consulte Sobre back-ends do Private Service Connect.

É possível usar um balanceador de carga de aplicativo interno para enviar solicitações a serviços e APIs regionais do Google compatíveis. Para mais informações, consulte Acessar APIs do Google por meio de back-ends.

Alta disponibilidade e failover entre regiões

O failover entre regiões só está disponível com balanceadores de carga de aplicativo externos globais, balanceadores de carga de aplicativo clássicos e balanceadores de carga de aplicativo internos entre regiões. Esses balanceadores de carga permitem melhorar a disponibilidade do serviço ao criar serviços de back-end globais com back-ends em várias regiões. Se os back-ends de uma determinada região estiverem inativos, o tráfego fará automaticamente o failover para outra região.

Para saber mais sobre como o failover funciona, consulte os seguintes tópicos: