Neste documento, apresentamos os conceitos necessários para configurar um balanceador de carga de aplicativo externo.
O balanceador de carga de aplicativo externo é um balanceador de carga global da camada 7 baseado em proxy que permite executar e escalonar serviços atrás de um único endereço IP externo. O balanceador de carga de aplicativo externo distribui o tráfego HTTP e HTTPS para back-ends hospedados em várias plataformas doGoogle Cloud , como Compute Engine, Google Kubernetes Engine (GKE) e Cloud Storage, bem como back-ends externos conectados pela Internet ou por conectividade híbrida. Para detalhes, consulte Visão geral do balanceador de carga de aplicativo: casos de uso.
Modos de operação
É possível configurar um balanceador de carga de aplicativo externo nos seguintes modos:
- Balanceador de carga de aplicativo externo global. Esse é um balanceador de carga global que é implementado como um serviço gerenciado no Google Front Ends (GFEs). Ele usa o proxy Envoy de código aberto para oferecer suporte a recursos de gerenciamento de tráfego avançado, como espelhamento de tráfego, divisão de tráfego baseada em peso e transformações de cabeçalho com base em solicitação ou resposta.
- Balanceador de carga de aplicativo clássico. Este é o balanceador de carga de aplicativo externo clássico que é global no nível Premium, mas pode ser configurado para ser regional no nível Standard. Esse balanceador de carga é implementado no Google Front Ends (GFEs). Os GFEs são distribuídos globalmente e funcionam em conjunto usando a rede global e o plano de controle do Google.
- Balanceador de carga de aplicativo externo regional. Esse é um balanceador de carga regional implementado como um serviço gerenciado no proxy Envoy de código aberto. Ele inclui recursos avançados de gerenciamento de tráfego, como espelhamento de tráfego, divisão de tráfego baseada em peso e transformações de cabeçalho com base em solicitação ou resposta.
Modo balanceador de carga | Casos de uso recomendados | Recursos |
---|---|---|
Balanceador de carga de aplicativo externo global | Use esse balanceador de carga para cargas de trabalho HTTP(S) externas com usuários dispersos globalmente ou serviços de back-end em várias regiões. |
|
Balanceador de carga de aplicativo clássico | Esse balanceador de carga é global no nível Premium. No nível do serviço de rede Premium, esse balanceador de carga oferece balanceamento de carga multirregional, tenta direcionar o tráfego para o back-end íntegro mais próximo que tiver capacidade e encerra o tráfego HTTP(S) o mais próximo possível dos usuários. Para detalhes sobre o processo de distribuição de solicitações, consulte Distribuição de tráfego. No nível de serviço de rede padrão, esse balanceador de carga pode distribuir tráfego apenas para back-ends em uma única região. |
|
Balanceador de carga de aplicativo externo regional | Esse balanceador de carga contém muitos dos recursos do balanceador de carga clássico do aplicativo atual, além de recursos de gerenciamento de tráfego avançado. Use este balanceador de carga se quiser veicular conteúdo de apenas uma geolocalização (por exemplo, para atender a regulamentações de conformidade). Este balanceador de carga pode ser configurado no nível Premium ou Standard. |
|
Identificar o modo
Console
No console do Google Cloud , acesse a página Balanceamento de carga.
Na guia Balanceadores de carga, você verá o protocolo, a região e o tipo de balanceador. Se a região estiver em branco, o balanceador de carga será global. A tabela a seguir resume como identificar o modo do balanceador de carga.
Modo balanceador de carga | Tipo do balanceador de carga | Tipo de acesso | Região |
---|---|---|---|
Balanceador de carga de aplicativo externo global | legado | Externos | |
Balanceador de carga de aplicativo clássico | Aplicativo (clássico) | Externos | |
Balanceador de carga de aplicativo externo regional | legado | Externos | Especifica uma região |
gcloud
Para determinar o modo de um balanceador de carga, execute o seguinte comando:
gcloud compute forwarding-rules describe FORWARDING_RULE_NAME
Na saída do comando, verifique o esquema de balanceamento de carga, a região e o nível da rede. Veja na tabela a seguir como identificar o modo do balanceador de carga.
Modo balanceador de carga | Esquema de balanceamento de carga | Regra de encaminhamento | Nível da rede |
---|---|---|---|
Balanceador de carga de aplicativo externo global | EXTERNAL_MANAGED | Global | Premium |
Balanceador de carga de aplicativo clássico | EXTERNO | Global | Padrão ou Premium |
Balanceador de carga de aplicativo externo regional | EXTERNAL_MANAGED | Especifica uma região | Padrão ou Premium |
Arquitetura
Os seguintes recursos são necessários para uma implantação externa do balanceador de carga de aplicativo:
Somente para balanceadores de carga de aplicativo regionais externos, uma sub-rede somente proxy é usada para enviar conexões do balanceador de carga para os back-ends.
Uma regra de encaminhamento externo especifica um endereço IP externo, uma porta e um proxy HTTP(S) de destino. Os clientes usam o endereço IP e a porta para se conectar ao balanceador de carga.
Um proxy HTTP(S) de destino recebe uma solicitação do cliente. O proxy HTTP(S) avalia a solicitação usando o mapa de URLs para tomar decisões de roteamento de tráfego. O proxy também pode autenticar comunicações usando certificados SSL.
- No balanceamento de carga HTTPS, o proxy HTTPS de destino usa certificados SSL para provar a identidade aos clientes. Um proxy HTTPS de destino é compatível com um número documentado de certificados SSL.
O proxy HTTP(S) usa um mapa de URLs para fazer a determinação do roteamento com base em atributos HTTP, como caminho de solicitação, cookies ou cabeçalhos. Com base na decisão de roteamento, o proxy encaminha as solicitações do cliente para serviços ou buckets de back-end específicos. O mapa de URLs pode especificar outras ações, como o envio de redirecionamentos para clientes.
Um serviço de back-end distribui as solicitações para back-ends íntegros. Os balanceadores de carga de aplicativo externos globais também são compatíveis com buckets de back-end. Um ou mais back-ends precisam estar conectados ao serviço de back-end ou bucket de back-end.
Uma verificação de integridade monitora periodicamente a prontidão de seus back-ends. Isso reduz o risco de que solicitações sejam enviadas para back-ends que não podem atender à solicitação.
Regras de firewall para que os back-ends aceitem sondagens de verificação de integridade. Os balanceadores de carga de aplicativo regionais exigem uma regra de firewall extra para permitir que o tráfego da sub-rede somente proxy atinja os back-ends.
- Global
Este diagrama mostra os componentes de uma implantação do balanceador de carga de aplicativo externo global. Essa arquitetura se aplica ao balanceador de carga de aplicativo externo global e ao balanceador de carga de aplicativo clássico no nível Premium.
Componentes do balanceador de carga de aplicativo externo global (clique para ampliar).
- Regional
Este diagrama mostra os componentes de uma implantação do balanceador de carga de aplicativo externo regional.
Componentes do balanceador de carga de aplicativo externo regional (clique para ampliar).
Sub-rede somente proxy
Sub-redes somente proxy são necessárias apenas para balanceadores de carga regionais de aplicativos externos.
A sub-rede somente proxy fornece um conjunto de endereços IP que o Google usa para executar
proxies Envoy em seu nome. É necessário criar uma sub-rede somente proxy em cada
região de uma rede VPC em que você usa balanceadores de carga de aplicativo externos regionais.
A flag --purpose
dessa sub-rede somente proxy está definida como
REGIONAL_MANAGED_PROXY
. Todos os balanceadores de carga regionais baseados em
Envoy na mesma região
e rede VPC compartilham um pool de proxies do Envoy da mesma
sub-rede somente proxy. Além disso:
- As sub-redes somente proxy são usadas apenas para proxies Envoy, não para seus back-ends.
- As VMs de back-end ou os endpoints de todos os balanceadores de carga de aplicativo internos em uma região e uma rede VPC recebem conexões da sub-rede somente proxy.
- O endereço IP do balanceador de carga regional externo do aplicativo não está localizado na sub-rede somente proxy. O endereço IP do balanceador de carga é definido pela regra de encaminhamento gerenciada externa, descrita abaixo.
Se você já tiver criado uma sub-rede somente proxy com
--purpose=INTERNAL_HTTPS_LOAD_BALANCER
, migre a finalidade da sub-rede para
REGIONAL_MANAGED_PROXY
antes de criar outros balanceadores de carga baseados no Envoy
na mesma região da rede
VPC.
Regras de encaminhamento e endereços IP
As regras de encaminhamento roteiam o tráfego por endereço IP, porta e protocolo para uma configuração de balanceamento de carga que consiste em proxy de destino, mapa de URL e um ou mais serviços de back-end.
Especificação de endereço IP. Cada regra de encaminhamento fornece um único endereço IP que pode ser usado em registros DNS do aplicativo. Não é necessário nenhum balanceamento de carga baseado no DNS. É possível especificar o endereço IP a ser usado ou permitir que o Cloud Load Balancing atribua um para você.
Especificação da porta. Cada regra de encaminhamento para um balanceador de carga de aplicativo pode referenciar uma única porta de 1 a 65535. Para permitir várias portas, configure várias regras de encaminhamento. É possível configurar várias regras de encaminhamento para usar o mesmo endereço IP externo (VIP) e ter referência ao mesmo proxy HTTP(S) de destino, desde que a combinação geral de endereço IP, porta e protocolo seja exclusiva para cada regra de encaminhamento. Dessa forma, é possível usar um único balanceador de carga com um mapa de URL compartilhado como um proxy para vários aplicativos.
O tipo de regra de encaminhamento, o endereço IP e o esquema de balanceamento de carga usado por balanceadores de carga de aplicativo externos depende do modo do balanceador de carga e de qual nível de serviço de rede o balanceador está.
Modo balanceador de carga | Nível de serviço de rede | Regra de encaminhamento, endereço IP e esquema de balanceamento de carga | Como rotear da Internet para o front-end do balanceador de carga |
---|---|---|---|
Balanceador de carga de aplicativo externo global | Nível Premium |
Regra de encaminhamento externo global Esquema de balanceamento de carga: |
Solicitações encaminhadas para o GFE mais próximo do cliente na Internet. |
Balanceador de carga de aplicativo clássico | Nível Premium |
Regra de encaminhamento externo global Esquema de balanceamento de carga: |
Solicitações encaminhadas para o GFE mais próximo do cliente na Internet. |
Nível Standard |
Regra de encaminhamento externo regional Esquema de balanceamento de carga: |
Solicitações encaminhadas para um GFE na região do balanceador de carga. | |
Balanceador de carga de aplicativo externo regional | Nível Premium ou Standard |
Regra de encaminhamento externo regional Esquema de balanceamento de carga: |
As solicitações chegam ao Google Cloud no PoP mais próximo do cliente. As solicitações são encaminhadas pela rede principal premium do Google Cloudaté chegarem aos proxies do Envoy na mesma região que o balanceador de carga. |
EXTERNAL_MANAGED
a
regras de encaminhamento EXTERNAL
. No entanto, os serviços de back-end EXTERNAL
não podem ser anexados a regras de encaminhamento EXTERNAL_MANAGED
.
Para aproveitar os novos recursos disponíveis
apenas com o balanceador de carga de aplicativo externo global, recomendamos
migrar os recursos EXTERNAL
atuais para
EXTERNAL_MANAGED
usando o processo de migração descrito em
Migrar
recursos do balanceador de carga de aplicativo clássico para o externo global.
Confira a lista completa de protocolos compatíveis com as regras de encaminhamento do balanceador de carga de aplicativo em cada modo em Recursos do balanceador de carga.
Regras de encaminhamento e redes VPC
Esta seção descreve como as regras de encaminhamento usadas por balanceadores de carga de aplicativo externos são associadas às redes VPC.
Modo balanceador de carga | Associação de rede VPC |
---|---|
Balanceador de carga de aplicativo externo global Balanceador de carga de aplicativo clássico |
Nenhuma rede VPC associada. A regra de encaminhamento sempre usa um endereço IP que está fora da rede VPC. Portanto, a regra de encaminhamento não tem uma rede VPC associada. |
Balanceador de carga de aplicativo externo regional | A rede VPC da regra de encaminhamento é a rede em que a sub-rede somente proxy foi criada. Você especifica a rede ao criar a regra de encaminhamento. Dependendo se você usa um endereço IPv4 ou um intervalo de endereços IPv6, sempre há uma rede VPC explícita ou implícita associada à regra de encaminhamento.
|
Proxies de destino
Os proxies de destino encerram as conexões HTTP(S) dos clientes. Uma ou mais regras de encaminhamento direcionam o tráfego para o proxy de destino, que consulta o mapa de URLs para determinar como rotear o tráfego para os back-ends.
Não espere que o proxy mantenha a capitalização dos nomes de cabeçalho de solicitação ou
resposta. Por exemplo, um cabeçalho de resposta Server: Apache/1.0
pode aparecer no cliente como server: Apache/1.0
.
A tabela a seguir especifica o tipo de proxy de destino exigido pelos balanceadores de carga de aplicativo externos.
Modo balanceador de carga | Tipos de proxy de destino | Cabeçalhos adicionados pelo proxy | Cabeçalhos personalizados compatíveis |
---|---|---|---|
Balanceador de carga de aplicativo externo global | HTTP global, HTTPS global |
Os proxies definem cabeçalhos de solicitação/resposta HTTP da seguinte maneira:
Os proxies também definem o cabeçalho |
Configurado no
serviço ou bucket de back-end
Sem suporte ao Cloud CDN |
Balanceador de carga de aplicativo clássico | HTTP global, HTTPS global |
Os proxies definem cabeçalhos de solicitação/resposta HTTP da seguinte maneira:
Os proxies também definem o cabeçalho |
Configurado no serviço ou bucket de back-end |
Balanceador de carga de aplicativo externo regional | HTTP regional, HTTPS regional |
|
Configurado no mapa de URL |
Além dos cabeçalhos adicionados pelo proxy de destino, o balanceador de carga ajusta outros cabeçalhos HTTP das seguintes maneiras:
Para o balanceador de carga de aplicativo externo global, os cabeçalhos de solicitação e resposta podem ser convertidos em letras minúsculas.
A única exceção é quando você usa back-ends globais de NEG da Internet com HTTP/1.1. Para detalhes sobre como os cabeçalhos HTTP/1.1 são processados com NEGs globais da Internet, consulte a Visão geral de NEGs da Internet.
Para o balanceador de carga de aplicativo clássico, os cabeçalhos de solicitação e resposta são convertidos em letras minúsculas, exceto quando você usa HTTP/1.1. No HTTP/1.1, os cabeçalhos são inseridos corretamente. A primeira letra da chave do cabeçalho e todas as letras após um hífen (
-
) são exibidas em maiúsculas para preservar a compatibilidade com clientes HTTP/1.1. Por exemplo,user-agent
é alterado paraUser-Agent
econtent-encoding
é alterado paraContent-Encoding
.
- Alguns cabeçalhos são agrupados. Quando houver várias instâncias da mesma
chave de cabeçalho (por exemplo,
Via
), o balanceador de carga combinará os valores delas em uma lista separada por vírgulas para uma chave de cabeçalho. Serão agrupados somente cabeçalhos com valores que possam ser representados como uma lista separada por vírgulas. Outros cabeçalhos, comoSet-Cookie
, nunca são agrupados.
Cabeçalho Host
Quando o balanceador de carga faz a solicitação HTTP, o balanceador de carga preserva o cabeçalho Host da solicitação original.
Cabeçalho X-Forwarded-For
O balanceador de carga anexa dois endereços IP ao cabeçalho
X-Forwarded-For
, separados por uma única vírgula, na seguinte ordem:
- O endereço IP do cliente que se conecta ao balanceador de carga
- O endereço IP da regra de encaminhamento do balanceador de carga
Se a solicitação recebida não incluir um cabeçalho X-Forwarded-For
,
o cabeçalho resultante será o seguinte:
X-Forwarded-For: <client-ip>,<load-balancer-ip>
Se a solicitação recebida já incluir um cabeçalho X-Forwarded-For
,
o balanceador de carga vai anexar os valores dele ao cabeçalho existente:
X-Forwarded-For: <existing-value>,<client-ip>,<load-balancer-ip>
Remover valores de cabeçalho atuais usando um cabeçalho de solicitação personalizado
É possível remover valores de cabeçalho usando cabeçalhos de solicitação personalizados no serviço de back-end. O exemplo a seguir usa a flag --custom-request-header
para recriar o cabeçalho X-Forwarded-For
usando as variáveis
client_ip_address
e server_ip_address
. Essa configuração substitui o cabeçalho X-Forwarded-For
de entrada apenas pelo cliente e o endereço IP do balanceador de
carga.
--custom-request-header=x-forwarded-for:{client_ip_address},{server_ip_address}
Como o software de proxy reverso de back-end pode modificar o cabeçalho X-Forwarded-For
Se os back-ends do balanceador de carga executarem um software de proxy HTTP reverso,
ele poderá anexar um ou os dois endereços IP a seguir ao
final do cabeçalho X-Forwarded-For
:
O endereço IP do GFE que se conectou ao back-end. Os endereços IP da GFE estão nos intervalos
130.211.0.0/22
e35.191.0.0/16
.O endereço IP do próprio sistema de back-end.
Como resultado, um sistema upstream pode ver um cabeçalho X-Forwarded-For
estruturado da seguinte forma:
<existing-value>,<client-ip>,<load-balancer-ip>,<GFE-ip>,<backend-ip>
Suporte do Cloud Trace
O rastreamento não é compatível com balanceadores de carga de aplicativo. Os balanceadores de carga de aplicativo globais e clássicos adicionam o cabeçalho X-Cloud-Trace-Context
se ele não estiver presente. O balanceador de carga de aplicativo externo regional não adiciona esse cabeçalho. Se o cabeçalho X-Cloud-Trace-Context
já estiver presente, ele passará pelos balanceadores de carga sem modificações. No entanto, nenhum rastreamento ou intervalo é exportado pelo balanceador de carga.
Mapas de URL
Os mapas de URL definem os padrões de correspondência do roteamento de solicitações baseado em URL aos serviços de back-end apropriados. O mapa de URL permite dividir o tráfego examinando os componentes do URL para enviar solicitações a diferentes conjuntos de back-ends. Um serviço padrão é definido para processar qualquer solicitação que não corresponda a uma regra de host ou de correspondência de caminho especificada.
Em algumas situações, como o exemplo de balanceamento de carga entre regiões, é possível não definir nenhuma regra de URL e depender apenas do serviço padrão.
Os mapas de URL oferecem suporte a vários recursos avançados de gerenciamento de tráfego, como direcionamento de tráfego com base em cabeçalho, divisão de tráfego com base em peso e espelhamento de solicitações. Para ver mais informações, consulte os seguintes tópicos:
A tabela a seguir especifica o tipo de mapa de URL exigido pelos balanceadores de carga de aplicativo externos em cada modo.
Modo balanceador de carga | Tipo de mapa de URL |
---|---|
Balanceador de carga de aplicativo externo global | Global |
Balanceador de carga de aplicativo clássico | Global (com apenas um subconjunto de recursos compatíveis) |
Balanceador de carga de aplicativo externo regional |