Visão geral do balanceamento de carga do proxy SSL

O balanceamento de carga do proxy SSL é 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 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 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 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 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:

  • Terminação IPv6 O balanceamento de carga de proxy SSL é compatível com os endereços IPv6 e IPv4 do tráfego do cliente. 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.

  • Gerenciamento de certificados. Seus certificados SSL voltados para o cliente podem ser conseguidos e gerenciados por você (certificados autogerenciados) ou certificados que o Google recebe e gerencia para você (certificados gerenciados pelo Google). Os certificados SSL gerenciados pelo Google são compatíveis com até 100 domínios. Vários domínios são compatíveis com certificados gerenciados pelo Google. Você só precisa provisionar certificados no balanceador de carga. Em suas VMs, simplifique o gerenciamento usando certificados autoassinados.

  • 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 as seguintes portas conhecidas: 25, 43, 110, 143, 195, 443, 465, 587, 700, 993, 995, 1883, 3389, 5222, 5432, 5671 , 5672, 5900, 5901, 6379, 8085, 8099, 9909, 9200 e 9300. Quando usar certificados SSL gerenciados pelo Google com balanceamento de carga de proxy SSL, a porta de tráfego de front-end precisa ser a 443 para permitir que os certificados SSL gerenciados pelo Google sejam provisionados e renovados.

  • 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 negocia com os clientes.

  • Controle geográfico sobre o local em que o TLS é encerrado. O balanceador de carga de proxy SSL 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.

Comportamento do balanceador de carga em níveis de serviço de rede

O balanceamento de carga do proxy TCP 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.

Nível Premium

É possível ter apenas um serviço de back-end que pode ter back-ends em várias regiões. Para balanceamento de carga global, você implanta seus back-ends em várias regiões, e o balanceador de carga direciona automaticamente o tráfego para a região mais próxima do usuário. Se uma região estiver no limite da capacidade, novas conexões serão direcionadas para outra região que tenha capacidade disponível por meio do balanceador de carga. As conexões de usuário atuais permanecem na região em que estão.

O tráfego é alocado para back-ends da seguinte forma:

  1. Quando um cliente envia uma solicitação, o serviço de balanceamento de carga determina a origem aproximada da solicitação a partir do endereço IP de origem.
  2. O serviço de balanceamento de carga determina os locais dos back-ends pertencentes ao serviço de back-end, sua capacidade geral e seu uso geral atual.
  3. Se as instâncias de back-end mais próximas ao usuário tiverem capacidade disponível, a solicitação será encaminhada para o conjunto mais próximo de back-ends.
  4. As solicitações de entrada para a região determinada são distribuídas uniformemente em todas as instâncias de back-end disponíveis em tal região. No entanto, com cargas muito pequenas, a distribuição pode parecer irregular.
  5. Se não houver instâncias de back-end íntegras com capacidade disponível em uma determinada região, o balanceador de carga enviará a solicitação para a região mais próxima com capacidade disponível.

Nível Standard

Com o nível Standard, o balanceamento de carga de proxy TCP é um serviço regional. Todos os back-ends precisam estar localizados na região usada pelo endereço IP externo do balanceador de carga e pela regra de encaminhamento.

Arquitetura

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

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.

Proxies de destino

O balanceamento de carga de proxy SSL encerra as conexões SSL do cliente e cria novas conexões com os back-ends. O proxy de destino encaminha as solicitações recebidas diretamente 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

Você precisa instalar um ou mais certificados SSL no proxy SSL de destino.

Eles são usados por proxies SSL de destino para proteger comunicações entre um front-end do Google (GFE, na sigla em inglês) e o cliente. Esses certificados podem ser autogerenciados ou SSL gerenciados pelo Google.

Saiba mais sobre limites e cotas de certificados SSL nesta seção da página de cotas de balanceamento de carga.

Para ter a melhor segurança, use a criptografia de ponta a ponta na implantação do balanceador de carga de proxy SSL. Saiba mais em Criptografia do balanceador de carga nos back-ends.

Saiba mais sobre como o Google criptografa o tráfego dos usuários no artigo Criptografia em trânsito no Google Cloud.

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.

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.

Regras de firewall

As instâncias de back-end precisam permitir conexões dos intervalos de verificação de integridade/GFE do balanceador de carga. Isso significa que você precisa criar uma regra de firewall que permita que o tráfego de 130.211.0.0/22 e 35.191.0.0/16 alcance suas instâncias ou endpoints de back-end. Esses intervalos de endereços IP são usados como origens para pacotes de verificação de integridade e para todos os pacotes com carga balanceada enviados aos back-ends.

As portas configuradas para essa regra de firewall precisam permitir o tráfego para instâncias ou endpoints de back-end:

  • É preciso permitir as portas usadas por cada regra de encaminhamento
  • É preciso permitir as portas usadas por cada verificação de integridade configurada para cada serviço de back-end

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

Saiba mais sobre sondagens de verificação de integridade e por que é necessário permitir tráfego de 130.211.0.0/22 e 35.191.0.0/16 em Intervalos de IP de sondagem e regras de firewall.

Endereços IP de origem

Os endereços IP de origem dos pacotes, conforme vistos por cada instância ou contêiner de máquina virtual (VM) de back-end, são um endereço IP destes intervalos:

  • 35.191.0.0/16
  • 130.211.0.0/22

O endereço IP de origem para o tráfego real com carga balanceada é o mesmo que o intervalo de IP da sondagem das verificações de integridade.

Os endereços IP de origem para o tráfego, conforme vistos pelos back-ends, não são o endereço IP externo do Google Cloud do balanceador de carga. Em outras palavras, há duas sessões HTTP, SSL ou TCP:

  • Sessã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 usando NAT.
    • Endereço IP de destino: o endereço IP do seu balanceador de carga.
  • Sessão 2: do balanceador de carga (GFE) para a VM ou contêiner de back-end:

    • Endereço IP de origem: um endereço IP em um destes intervalos: 35.191.0.0/16 ou 130.211.0.0/22.

      Não é possível prever o endereço de origem real.

    • Endereço IP de destino: o endereço IP interno da VM ou contêiner de back-end na rede da nuvem privada virtual (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 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. A funcionalidade de proxy reverso é fornecida pelo front-ends do Google (GFEs).

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.

Os balanceadores de carga do proxy SSL têm diversas portas abertas para oferecer suporte a outros serviços do Google, executados na mesma arquitetura. Se você executar uma verificação de segurança ou de porta em relação ao endereço IP externo do balanceador de carga, terá a impressão de que outras portas estão abertas.

Isso não afeta os balanceadores de carga do proxy SSL. As regras de encaminhamento externas, usadas na definição de um balanceador de carga SSL, podem fazer referência somente às portas TCP 25, 43, 110, 143, 195, 443, 465, 587, 700, 993, 995, 1883, 3389, 5222, 5432, 5671, 5672, 5900, 5901, 6379, 8085, 8099, 9092, 9200 e 9300. O tráfego com uma porta de destino TCP diferente não é encaminhado para o back-end do balanceador de carga.

Distribuição de tráfego

A maneira como um balanceador de carga do proxy TCP 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).

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, 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 TCP 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.

Observações e limitações de uso

  • O envio de tráfego por TCP não criptografado entre a camada do balanceamento de carga e as instâncias de back-end permite descarregar o processamento SSL de seus back-ends. No entanto, ele também reduz a segurança. Portanto, não recomendamos isso.

  • Crie políticas de SSL usando a ferramenta de linha de comando gcloud.

  • Os balanceadores de carga do proxy SSL têm 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 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 o balanceamento de carga de proxy SSL possa lidar com o tráfego HTTPS, isso não é recomendável. Em vez disso, use o balanceamento de carga HTTP(S) para o tráfego HTTPS. O balanceamento de carga HTTP(S) também faz o seguinte, o que o torna uma escolha melhor na maioria dos casos:

    • Negocia HTTP/2 e SPDY/3.1.
    • Rejeita respostas ou solicitações HTTP inválidas.
    • Encaminha solicitações para diferentes VMs com base no host e no caminho do URL.
    • Integra-se ao Cloud CDN
    • Propaga a carga da solicitação de maneira mais uniforme entre as instâncias de back-end, proporcionando melhor utilização do back-end. O HTTPS faz o balanceamento de carga de cada solicitação separadamente, enquanto o balanceamento de carga de proxy SSL envia todos os bytes da mesma conexão SSL ou TCP para a mesma instância de back-end.
  • Para balanceadores de carga de proxy SSL com certificados SSL gerenciados pelo Google, as portas de front-end precisam incluir 443 para os certificados a serem provisionados e renovados com sucesso.

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

A seguir

  • Para informações sobre como configurar um balanceador de carga de proxy SSL, consulte esta página.
  • Para detalhes sobre como criar, modificar ou excluir uma política SSL, consulte esta página.
  • Para mais informações sobre como configurar o monitoramento para seu balanceador de carga de proxy SSL, consulte esta página.
  • Para uma lista dos pontos de presença do Google (PoPs, na sigla em inglês), consulte locais GFE.