Visão geral do balanceamento de carga do proxy SSL externo

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

O balanceamento de carga do proxy SSL externo é um balanceador de carga do proxy reverso que distribui o tráfego SSL proveniente das instâncias de Internet para máquinas virtuais (VM) na rede VPC do Google Cloud.

Ao usar o balanceamento de carga de proxy SSL externo para o tráfego SSL, as conexões SSL (TLS) do usuário são encerradas na camada de balanceamento de carga e, em seguida, encaminhadas por proxy para as instâncias de back-end mais próximas disponíveis usando SSL (recomendado) ou TCP. Para os tipos de back-ends que são compatíveis, consulte esta página.

Com o nível Premium, o balanceamento de carga do proxy SSL externo pode ser configurado como um serviço de balanceamento de carga global. Com o nível Padrão, o balanceador de carga do proxy SSL externo processa o balanceamento de carga por região. Para mais detalhes, consulte Comportamento do balanceador de carga em níveis de serviço de rede.

Neste exemplo, o tráfego de usuários em Iowa e Boston é encerrado na camada do balanceamento de carga e uma conexão separada é estabelecida para o back-end selecionado.

Cloud Load Balancing com terminação SSL (clique para ampliar)
Cloud Load Balancing com terminação SSL (clique para ampliar)

O balanceamento de carga de proxy SSL externo destina-se ao tráfego não HTTP(S). Para o tráfego HTTP(S), recomendamos que você use o balanceamento de carga HTTP(S).

Conheça as diferenças entre os balanceadores de carga do Google Cloud nos documentos a seguir:

Vantagens

Veja a seguir algumas vantagens do uso do balanceamento de carga de proxy SSL externo:

  • Terminação IPv6 O balanceamento de carga do proxy SSL externo é compatível com o tráfego do cliente nos endereços IPv4 e IPv6. As solicitações IPv6 do cliente são encerradas na camada de balanceamento de carga e transmitidas por proxy pelo IPv4 para suas VMs.

  • Roteamento inteligente. O balanceador de carga pode encaminhar solicitações para locais de back-end em que houver capacidade. Por outro lado, um balanceador de carga L3/L4 precisa ser encaminhado para back-ends regionais sem considerar a capacidade. O uso do encaminhamento mais inteligente permite o aprovisionamento em N+1 ou N+2, em vez de x*N.

  • Melhor utilização dos back-ends. O processamento de SSL pode exigir muito da CPU se as criptografias usadas não forem eficientes. Para maximizar o desempenho da CPU, use certificados SSL ECDSA e TLS 1.2 e prefira o pacote de criptografia ECDHE-ECDSA-AES128-GCM-SHA256 para SSL entre o balanceador de carga e suas instâncias de back-end.

  • Patch de segurança. Se surgirem vulnerabilidades na pilha de SSL ou TCP, aplicamos os patches no balanceador de carga automaticamente para manter suas VMs seguras.

  • Suporte para todas as portas. Cada regra de encaminhamento para um balanceador de carga do proxy SSL for compatível com uma porta TCP de 1 para 65535. Para usar certificados SSL gerenciados pelo Google, é necessário configurar a regra de encaminhamento para usar a porta TCP 443. Assim, o provisionamento e a renovação do certificado são bem-sucedidos.

  • Políticas de SSL. As políticas de SSL permitem que você controle os recursos de SSL que o balanceador de carga de proxy SSL externo negocia com os clientes.

  • Controle geográfico sobre o local em que o TLS é encerrado. O balanceador de carga do proxy SSL externo encerra o TLS em locais que são distribuídos globalmente, de modo a minimizar a latência entre os clientes e o balanceador de carga. Se você precisar de controle geográfico sobre o local em que o TLS é encerrado, use o Balanceamento de carga de rede e encerre o TLS nos back-ends localizados em regiões adequadas às suas necessidades.

  • Integração com o Google Cloud Armor. É possível usar as políticas de segurança do Google Cloud Armor para proteger sua infraestrutura contra ataques distribuídos de negação de serviço (DDoS) e outros ataques direcionados.

Arquitetura

A seguir, veja os componentes dos balanceadores de carga do proxy SSL externo.

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 e serviço de back-end.

Cada regra de encaminhamento fornece um endereço IP que pode ser usado nos registros DNS para seu aplicativo. Não é necessário nenhum balanceamento de carga baseado no DNS. É possível reservar um endereço IP estático que possa ser usado ou permitir que o Cloud Load Balancing atribua um para você. Recomendamos a reserva de um endereço IP estático; caso contrário, será necessário atualizar seu registro DNS com o endereço IP temporário recém-atribuído sempre que uma regra de encaminhamento for excluída e uma nova for criada.

Cada regra de encaminhamento externa usada em um balanceador de carga de proxy SSL externo pode referenciar a exatamente uma das portas listadas em: Especificações de porta para regras de encaminhamento.

O balanceador de carga do proxy SSL externo oferece suporte a uma única porta no intervalo de portas (contíguo). Para dar suporte a várias portas consecutivas, você precisa configurar várias regras de encaminhamento. É possível configurar várias regras de encaminhamento com o mesmo endereço IP virtual e portas diferentes. Portanto, é possível fazer proxy de vários aplicativos com portas personalizadas separadas para o mesmo endereço IP virtual do proxy SSL.

Proxies de destino

O balanceamento de carga de proxy SSL externo encerra as conexões SSL do cliente e cria novas conexões com os back-ends. O proxy de destino encaminha essas novas conexões para o serviço de back-end.

Por padrão, o endereço IP do cliente original e as informações da porta não são preservados. É possível preservar essas informações usando o protocolo PROXY.

Certificados SSL

Os balanceadores de carga de proxy SSL externos que usam proxies SSL de destino exigem chaves privadas e certificados SSL como parte da configuração do balanceador de carga:

  • O Google Cloud fornece dois métodos de configuração para atribuir chaves privadas e certificados SSL a destinos de SSL: certificados SSL do Compute Engine e Gerenciador de certificados. Para uma descrição de cada configuração, consulte Métodos de configuração de certificado na visão geral dos certificados SSL.

  • O Google Cloud oferece dois tipos de certificado: autogerenciados e gerenciados pelo Google. Para ver uma descrição de cada tipo, consulte Tipos de certificado na visão geral de certificados SSL.

Serviços de back-end

O tráfego de entrada é direcionado pelos serviços de back-end a um ou mais back-ends anexados. Cada back-end é composto de um grupo de instâncias ou grupo de endpoint da rede e informações sobre a capacidade de serviço do back-end. A capacidade de exibição do back-end pode ser baseada em CPU ou solicitações por segundo (RPS, na sigla em inglês).

Cada serviço de back-end especifica as verificações de integridade a serem executadas para os back-ends disponíveis.

O balanceador de carga do proxy SSL externo é compatível com os modos de balanceamento a seguir:

  • UTILIZATION (padrão): as instâncias aceitarão tráfego se a utilização do back-end do grupo de instâncias estiver abaixo de um valor especificado. Para definir esse valor, use o parâmetro --max-utilization e transmita um valor entre 0.0 (0%) e 1.0 (100%). O padrão é 0.8 (80%).
  • CONNECTION: as instâncias aceitam tráfego se o número de conexões está abaixo de um valor especificado. Esse valor pode ser um dos seguintes:
    • --max-connections: o número máximo de conexões em todas as instâncias de back-end no grupo de instâncias.
    • --max-connections-per-instance: o número máximo de conexões que uma instância pode processar. As solicitações são encaminhadas se o número médio de conexões do grupo de instâncias não excede esse número.

É possível especificar --max-connections ou --max-connections-per-instance mesmo ao definir o modo de balanceamento como UTILIZATION. Se --max-utilization e um parâmetro de conexão forem especificados, o grupo será considerado em pleno uso quando o limite for alcançado.

Para mais informações sobre o recurso de serviço de back-end, consulte Visão geral dos serviços de back-end.

Para garantir o mínimo possível de interrupções aos usuários, ative a diminuição das conexões nos serviços de back-end. Essas interrupções podem acontecer quando um back-end é encerrado, removido manualmente ou removido por um escalonador automático. Para saber mais sobre como usar a diminuição da conexão para minimizar as interrupções do serviço, consulte Ativar a diminuição da conexão.

Back-ends e redes VPC

Todos os back-ends precisam estar localizados no mesmo projeto, mas podem estar em redes VPC diferentes. As diferentes redes VPC não precisam ser conectadas usando o peering de rede VPC, porque os sistemas de proxy GFE se comunicam diretamente com back-ends nas respectivas redes VPC.

Regras de firewall

O balanceamento de carga do proxy TCP externo e do balanceamento SSL externo exige as seguintes regras de firewall:

  • Uma regra de firewall de permissão de entrada para permitir que o tráfego dos Google Front Ends (GFEs) alcance seus back-ends.

  • Uma regra de firewall de permissão de entrada para permitir que o tráfego dos intervalos de sondagens de verificação de integridade alcance seus back-ends. Saiba mais sobre sondagens de verificação de integridade e por que é necessário permitir tráfego delas em Intervalos de IP de sondagem e regras de firewall.

As regras de firewall são implementadas no nível da instância de VM, não nos proxies do GFE. Não é possível usar regras de firewall do Google Cloud para impedir que o tráfego chegue ao balanceador de carga.

As portas dessas regras de firewall precisam ser configuradas da seguinte maneira:

  • Permite o tráfego para a porta de destino da verificação de integridade de cada serviço de back-end.

  • Para back-ends de grupos de instâncias: determine as portas a serem configuradas pelo mapeamento entre a porta nomeada do serviço de back-end e os números de porta associados a essa porta nomeada em cada grupo de instâncias. Os números podem variar entre os grupos de instâncias atribuídos ao mesmo serviço de back-end.

  • Para back-ends NEG de GCE_VM_IP_PORT: permite tráfego para os números de portas dos endpoints.

Os intervalos de endereços IP de origem com permissão a serem permitidos são os seguintes:

  • 35.191.0.0/16
  • 130.211.0.0/22

Esses intervalos se aplicam a verificações de integridade e solicitações do GFE.

Endereços IP de origem

O endereço IP de origem dos pacotes, como visto pelos back-ends, não é o endereço IP externo do Google Cloud do balanceador de carga. Em outras palavras, há duas conexões TCP:

  • Conexão 1, do cliente original para o balanceador de carga (GFE):

    • Endereço IP de origem: o cliente original (ou endereço IP externo se o cliente estiver atrás de NAT ou de um proxy de encaminhamento).
    • Endereço IP de destino: o endereço IP do seu balanceador de carga.
  • Conexão 2, do balanceador de carga (GFE) para o endpoint ou VM de back-end:

    • Endereço IP de origem: um endereço IP em um dos intervalos especificados nas regras de firewall.

    • Endereço IP de destino: o endereço IP interno da VM ou contêiner de back-end na rede VPC.

Preservação dos endereços IP de origem do cliente

Para manter os endereços IP de origem originais das conexões de entrada no balanceador de carga, configure o balanceador de carga para preceder um cabeçalho de versão 1 do protocolo PROXY para manter as informações de conexão originais. Para mais informações, consulte Atualizar cabeçalho do protocolo proxy para o proxy.

Portas abertas

Os balanceadores de carga do proxy SSL externo são do tipo de proxy reverso. O balanceador de carga encerra as conexões de entrada e depois abre novas conexões do balanceador de carga para os back-ends. Esses balanceadores de carga são implementados usando proxies do Google Front End (GFE) em todo o mundo.

Os GFEs têm várias portas abertas para oferecer suporte a outros serviços do Google, executados na mesma arquitetura. Para ver uma lista de algumas das portas que provavelmente estarão abertas nos GFEs, consulte Regra de encaminhamento: especificações de porta. Pode haver outras portas abertas para outros serviços do Google em execução nos GFEs.

Executar uma verificação de porta no endereço IP de um balanceador de carga baseado no GFE não é útil do ponto de vista de auditoria pelos seguintes motivos:

  • Uma verificação de porta (por exemplo, com nmap) geralmente não espera nenhum pacote de resposta ou um pacote TCP RST ao realizar a sondagem de TCP SYN. Os GFEs vão enviar pacotes SYN-ACK em resposta a sondagens SYN somente para portas em que você configurou uma regra de encaminhamento e nas portas 80 e 443 se o balanceador de carga usar um endereço IP de nível Premium. Os GFEs só enviam pacotes para os back-ends em resposta aos enviados para o endereço IP do balanceador de carga e para a porta de destino configurada na regra de encaminhamento. Pacotes enviados para diferentes endereços IP do balanceador de carga ou o endereço IP do balanceador de carga em uma porta não configurada na regra de encaminhamento não resultam no envio de pacotes para os back-ends do balanceador de carga

  • Os pacotes enviados para o endereço IP do balanceador de carga poderiam ser respondidos por qualquer GFE na frota do Google; No entanto, a verificação de uma combinação de endereço IP e porta de balanceador de carga interroga apenas um único GFE por conexão TCP. O endereço IP do seu balanceador de carga não é atribuído a um único dispositivo ou sistema. Portanto, a verificação do endereço IP de um balanceador de carga baseado em GFE não verifica todos os GFEs na frota do Google.

Com isso em mente, veja a seguir algumas maneiras mais eficazes de auditar a segurança das instâncias de back-end:

  • Um auditor de segurança precisa inspecionar a configuração das regras de encaminhamento para a configuração do balanceador de carga. As regras de encaminhamento definem a porta de destino para a qual o balanceador de carga aceita pacotes e os encaminha para os back-ends. Para balanceadores de carga baseados em GFE, cada regra de encaminhamento externo só pode referir-se a uma única porta TCP de destino.

  • Um auditor de segurança precisa inspecionar a configuração da regra de firewall aplicável às VMs de back-end. As regras de firewall que você define bloqueiam o tráfego dos GFEs para as instâncias de back-end, mas não bloqueiam o tráfego de entrada para os GFEs. Para ver as práticas recomendadas, consulte a seção de regras de firewall.

Arquitetura da VPC compartilhada

O balanceamento de carga do proxy SSL externo dá suporte a redes que usam a VPC compartilhada. A VPC compartilhada permite manter uma separação clara de responsabilidades entre administradores de rede e desenvolvedores de serviços. Suas equipes de desenvolvimento podem se concentrar na criação de serviços em projetos de serviço, enquanto as equipes de infraestrutura de rede podem provisionar e administrar o balanceamento de carga. Se você ainda não estiver familiarizado com a VPC compartilhada, leia a documentação de visão geral da VPC compartilhada.

Endereço IP Regra de encaminhamento Proxy de destino Componentes de back-end
Um endereço IP externo precisa ser definido no mesmo projeto que o balanceador de carga. A regra de encaminhamento externo precisa ser definida no mesmo projeto que as instâncias de back-end (o projeto de serviço). O proxy SSL de destino precisa ser definido no mesmo projeto que as instâncias de back-end. Um serviço de back-end global precisa ser definido no mesmo projeto que as instâncias de back-end. Essas instâncias precisam estar em grupos de instâncias anexados ao serviço de back-end como back-ends. As verificações de integridade associadas aos serviços de back-end também precisam ser definidas no mesmo projeto que o serviço de back-end.

Distribuição de tráfego

A maneira como um balanceador de carga do proxy SSL externo distribui o tráfego para os back-ends depende do modo de balanceamento e do método de hash selecionado para escolher um back-end (afinidade da sessão).

Como as conexões são distribuídas

O balanceamento de carga do proxy TCP externo pode ser configurado como um serviço de balanceamento de carga global com o nível Premium e como um serviço regional no nível Standard.

Para o nível Premium:

  • O Google divulga o endereço IP do balanceador de carga de todos os pontos de presença em todo o mundo. Cada endereço IP do balanceador de carga é anycast global.
  • Se você configurar um serviço de back-end com back-ends em várias regiões, o Google Front Ends (GFEs) tentará direcionar solicitações para grupos de instâncias de back-end íntegros ou NEGs na região mais próxima ao usuário. Os detalhes do processo estão documentados nesta página.

Para o nível Standard:

  • O Google divulga o endereço IP do balanceador de carga a partir dos pontos de presença associados à região da regra de encaminhamento. O balanceador de carga usa um endereço IP externo regional.

  • É possível configurar back-ends na mesma região que a regra de encaminhamento. O processo documentado aqui ainda se aplica, mas o balanceador de carga direciona apenas as solicitações para back-ends íntegros nessa região.

Processo de distribuição de solicitações:

  1. O endereço IP externo da regra de encaminhamento é divulgado pelos roteadores de borda nas bordas da rede do Google. Cada anúncio lista um próximo salto para um sistema de balanceamento de carga de camada 3/4 (Maglev).
  2. Os sistemas Maglev encaminham o tráfego para o Google Front End (GFE) de primeira camada. O GFE de primeira camada encerra o TLS, se necessário, e depois direciona o tráfego para os GFEs de segunda camada de acordo com este processo:
    1. Se um serviço de back-end usar grupos de instâncias ou back-ends de NEG GCE_VM_IP_PORT, os primeiros GFEs de camada preferem os GFEs de segunda camada localizados ou próximos à região que contém o grupo de instâncias ou o NEG.
    2. Para buckets de back-end e serviços de back-end com NEGs híbridos, NEGs sem servidor e NEGs da Internet, os GFEs de primeira camada escolhem GFEs da segunda camada em um subconjunto de regiões, de modo que o tempo de retorno entre os dois GFEs seja minimizado.

      A preferência de GFE de segunda camada não é uma garantia e pode mudar dinamicamente com base nas condições de rede e na manutenção do Google.

      Os GFEs de segunda camada estão cientes do status da verificação de integridade e do uso real da capacidade do back-end.

  3. O GFE de segunda camada direciona solicitações para back-ends em zonas de sua região.
  4. Para o nível Premium, às vezes os GFEs de segunda camada enviam solicitações para back-ends em zonas de diferentes regiões. Esse comportamento é chamado de spillover.
  5. O spillover é regido por dois princípios:

    • O spillover é possível quando todos os back-ends conhecidos de um GFE de segunda camada estiverem no limite da capacidade ou não estiverem íntegros.
    • O GFE em segunda camada tem informações para back-ends íntegros e disponíveis em zonas de uma região diferente.

    Os GFEs de segunda camada normalmente são configurados para exibir um subconjunto de locais de back-end.

    O comportamento de spillover não esgota todas as zonas possíveis do Google Cloud. Se você precisar direcionar o tráfego para longe de back-ends em uma zona específica ou em uma região inteira, defina o escalonador de capacidade como zero. Configurar back-ends para que eles falhem nas verificações de integridade não garante que o GFE de segunda camada se estenda para back-ends em zonas de uma região diferente.

  6. Ao distribuir solicitações para back-ends, os GFEs operam em um nível zonal.

Modo de balanceamento

Ao adicionar um back-end ao serviço respectivo, você define um modo de balanceamento de carga.

Para o balanceamento de carga do proxy SSL externo, esse modo pode ser CONNECTION ou UTILIZATION.

Se ele for CONNECTION, a carga será distribuída com base em quantas conexões simultâneas o back-end pode processar. Você também precisa especificar exatamente um dos seguintes parâmetros: maxConnections (exceto para grupos regionais de instâncias gerenciadas), maxConnectionsPerInstance ou maxConnectionsPerEndpoint.

Se o modo de balanceamento de carga for UTILIZATION, a carga será distribuída com base na utilização das instâncias em um grupo.

Para obter informações sobre como comparar os tipos do balanceador de carga e os modos de balanceamento compatíveis, consulte Métodos de balanceamento de carga.

Afinidade da sessão

Afinidade da sessão envia todas as solicitações do mesmo cliente para o mesmo back-end, caso o back-end esteja íntegro e tenha capacidade.

O balanceamento de carga do proxy SSL externo oferece afinidade de IP do cliente, que encaminha todas as solicitações do mesmo endereço IP de cliente para o mesmo back-end.

Failover

Se um back-end se tornar não íntegro, o tráfego será redirecionado automaticamente para back-ends íntegros na mesma região. Se todos os back-ends de uma região não forem íntegros, o tráfego será distribuído para back-ends íntegros em outras regiões (apenas nível Premium). Se nenhum back-end estiver íntegro, o balanceador de carga descartará o tráfego.

Balanceamento de carga para aplicativos do GKE

Se você estiver criando aplicativos no Google Kubernetes Engine, poderá usar NEGs independentes para balancear a carga do tráfego diretamente para contêineres. Com os NEGs independentes, você é responsável por criar o objeto Serviço que cria o NEG e, em seguida, associar o NEG ao serviço de back-end para que o balanceador de carga possa conectar aos pods.

Documentação relacionada do GKE:

Limitações

  • Cada balanceador de carga do proxy SSL externo tem um único recurso de serviço de back-end. As alterações no serviço de back-end não são instantâneas. Pode levar vários minutos para que as alterações sejam propagadas para o Google Front ends (GFEs).

  • Os balanceadores de carga de proxy SSL externo não são compatíveis com a autenticação baseada no certificado de cliente, também conhecida como autenticação de TLS mútua.

  • Embora os balanceadores de carga de proxy SSL externos possam aceitar tráfego HTTPS, considere o uso de um balanceador de carga HTTP(S) externo para o tráfego HTTPS. Os balanceadores de carga HTTP(S) externos oferecem suporte a vários recursos específicos do HTTP, incluindo roteamento por caminho de solicitação HTTP e balanceamento por taxa de solicitação. Saiba mais sobre os recursos compatíveis com os balanceadores de carga HTTP(S) externos em Visão geral do balanceamento de carga HTTP(S) externo.

  • O balanceamento de carga de proxy SSL externo pode ser usado para outros protocolos que usam SSL, como WebSockets e IMAP sobre SSL.

  • Os balanceadores de carga de proxy SSL externos são compatíveis apenas com caracteres minúsculos nos domínios em um atributo de nome comum (CN) ou em um atributo de nome alternativo do assunto (SAN) do certificado. Os certificados com caracteres maiúsculos em domínios são retornados somente quando definidos como o certificado principal no proxy de destino.

A seguir