Neste documento, você vê instruções para configurar o balanceamento de carga do proxy SSL. Antes de começar, leia Visão geral do balanceamento de carga de proxy SSL para informações sobre como esse balanceamento funciona.
Como configurar o balanceamento de carga do proxy SSL
Este exemplo demonstra a configuração do balanceamento de carga de proxy SSL global para um serviço
simples que existe em duas regiões: us-central1
e us-east1
. Você
fará a configuração do seguinte:
- Quatro instâncias espalhadas por duas regiões
- Grupos para manter as instâncias
- Os componentes de back-end a seguir:
- Verificação de integridade: usada para monitorar a integridade da instância.
- Serviço de back-end: monitora grupos de instâncias e os impede de exceder o uso configurado.
- Back-ends: mantêm os grupos de instâncias.
- Os componentes de front-end a seguir:
- Um recurso de certificado SSL. É possível usar um certificado autogerenciado, em que você fornece o próprio certificado SSL, ou um gerenciado pelo Google, em que o Google emite um certificado válido para todos os domínios. Para mais informações, consulte Tipos de certificados SSL.
- O próprio proxy SSL com o certificado SSL.
- Um endereço IPv4 estático e externo, além de uma regra de encaminhamento que envia o tráfego do usuário ao proxy.
- Um endereço IPv6 estático e externo, além de uma regra de encaminhamento que envia o tráfego do usuário ao proxy.
- Uma regra de firewall que permite o tráfego do balanceador de carga e do verificador de integridade para as instâncias.
- Opcional: uma política de SSL para controlar os recursos SSL que o balanceador de carga do proxy SSL negocia com clientes.
Depois disso, você testará a configuração.
Permissões
Para seguir as instruções deste guia, você precisa ser capaz de criar instâncias e modificar uma rede em um projeto. É necessário ser um proprietário ou editor de projeto, ou ter todos os seguintes papéis do IAM do Compute Engine:
Tarefa | Papel necessário |
---|---|
Criar componentes do balanceador de carga, sub-redes e redes | Administrador de rede |
Adicionar e remover regras de firewall | Administrador de segurança |
Criar instâncias | Administrador da instância do Compute |
Para mais informações, consulte estes guias:
Configurar instâncias e grupos de instâncias
Esta seção mostra como criar instâncias e grupos de instâncias e, em seguida, adicioná-las a esses grupos. Um sistema de produção normalmente usa grupos de instâncias gerenciadas com base em modelos de instância. No entanto, a configuração desta página é mais rápida para os testes iniciais.
Criar instâncias
Para fins de teste, instale o Apache em quatro instâncias, duas em cada um dos dois grupos de instâncias. Normalmente, você não usaria o balanceamento de carga de proxy SSL para tráfego HTTP, mas o Apache é comumente usado e fácil de configurar para testes.
Crie essas instâncias com a tag ssl-lb
, que a regra de firewall usará
posteriormente.
Console
Criar instâncias
Acesse a página "Instâncias de VM" no Console do Google Cloud.
Clique em Criar instância.
Defina o Nome como
ig-us-central1-1
.Defina Zona como us-central1-b.
Clique em Gerenciamento, segurança, discos, rede, locatário único para ver as configurações avançadas.
Em Gerenciamento, preencha o campo Tags com
ssl-lb
.Defina o Script de inicialização como
sudo apt-get update sudo apt-get install apache2 -y sudo a2ensite default-ssl sudo a2enmod ssl sudo service apache2 restart echo '<!doctype html><html><body><h1>ig-us-central1-1</h1></body></html>' | sudo tee /var/www/html/index.html
Mantenha os valores padrão para os outros campos.
Clique em Criar.
Crie
ig-us-central1-2
com as mesmas configurações, mas o Script de inicialização precisa estar definido comosudo apt-get update sudo apt-get install apache2 -y sudo a2ensite default-ssl sudo a2enmod ssl sudo service apache2 restart echo '<!doctype html><html><body><h1>ig-us-central1-2</h1></body></html>' | sudo tee /var/www/html/index.html
Crie
ig-us-east1-1
com as mesmas configurações, mas a Zona precisa estar definida comous-east1-b
e o Script de inicialização comosudo apt-get update sudo apt-get install apache2 -y sudo a2ensite default-ssl sudo a2enmod ssl sudo service apache2 restart echo '<!doctype html><html><body><h1>ig-us-east1-1</h1></body></html>' | sudo tee /var/www/html/index.html
Crie
ig-us-east1-2
com as mesmas configurações, mas a Zona precisa estar definida comous-east1-b
e o Script de inicialização comosudo apt-get update sudo apt-get install apache2 -y sudo a2ensite default-ssl sudo a2enmod ssl sudo service apache2 restart echo '<!doctype html><html><body><h1>ig-us-east1-2</h1></body></html>' | sudo tee /var/www/html/index.html
gcloud
Crie
ig-us-central1-1
na zonaus-central1-b
.gcloud compute instances create ig-us-central1-1 \ --image-family debian-9 \ --image-project debian-cloud \ --tags ssl-lb \ --zone us-central1-b \ --metadata startup-script="#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y sudo a2ensite default-ssl sudo a2enmod ssl sudo service apache2 restart echo '<!doctype html><html><body><h1>SSL load balanced instance - US central 1</h1></body></html>' | tee /var/www/html/index.html EOF"
Created [https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/us-central1-b/instances/ig-us-central1-1]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS ig-us-central1-1 us-central1-b n1-standard-1 10.240.0.8 23.251.150.133 RUNNING
Crie
ig-us-central1-2
na zonaus-central1-b
gcloud compute instances create ig-us-central1-2 \ --image-family=debian-9 \ --image-project=debian-cloud \ --tags=ssl-lb \ --zone=us-central1-b \ --metadata=startup-script="#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y sudo a2ensite default-ssl sudo a2enmod ssl sudo service apache2 restart echo '<!doctype html><html><body><h1>SSL load balanced instance - US central 2</h1></body></html>' | tee /var/www/html/index.html EOF"
Created [https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/us-central1-b/instances/ig-us-central1-2]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS ig-us-central1-2 us-central1-b n1-standard-1 10.240.0.11 23.251.148.160 RUNNING
Crie
ig-us-east1-1
na zonaus-east1-b
gcloud compute instances create ig-us-east1-1 \ --image-family=debian-9 \ --image-project=debian-cloud \ --tags=ssl-lb \ --zone=us-east1-b \ --metadata=startup-script="#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y sudo a2ensite default-ssl sudo a2enmod ssl sudo service apache2 restart echo '<!doctype html><html><body><h1>SSL load balanced instance - US east 1</h1></body></html>' | tee /var/www/html/index.html EOF"
Created [https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/us-east1-b/instances/ig-us-east1-1]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS ig-us-east1-1 us-east1-b n1-standard-1 10.240.0.12 104.196.31.214 RUNNING
Crie
ig-us-east1-2
na zonaus-east1-b
.gcloud compute instances create ig-us-east1-2 \ --image-family=debian-9 \ --image-project=debian-cloud \ --tags=ssl-lb \ --zone=us-east1-b \ --metadata=startup-script="#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y sudo a2ensite default-ssl sudo a2enmod ssl sudo service apache2 restart echo '<!doctype html><html><body><h1>SSL load balanced instance - US east 2</h1></body></html>' | tee /var/www/html/index.html EOF"
Created [https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/us-east1-b/instances/ig-us-east1-2]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS ig-us-east1-2 us-east1-b n1-standard-1 10.240.0.13 104.196.25.101 RUNNING
Criar um grupo de instâncias para cada zona e adicionar instâncias
Console
Acesse a página "Grupos de instâncias" no Console do Google Cloud.
Clique em Criar grupo de instâncias.
Defina o Nome como
us-ig1
.Defina a Zona como
us-central1-b
.Clique em Especificar mapeamento de nomes de porta. Um balanceador de carga envia tráfego a um grupo de instâncias por meio de uma porta nomeada. Crie uma porta nomeada para mapear o tráfego de entrada em um número de porta específico.
- Em Mapeamento de nomes de porta, clique em Adicionar item.
- Insira
ssl-lb
como o Nome da porta e443
como os Números da porta.
Em Definição de instância, clique em Selecionar instâncias atuais.
Em Instâncias de VM, selecione
ig-us-central1-1
eig-us-central1-2
.Não altere as outras configurações.
Clique em Criar.
Repita as etapas, mas faça as seguintes configurações:
- Nome:
us-ig2
- Zona:
us-east1-b
ssl-lb
como o Nome da porta e443
como os Números da porta- Instâncias: ig-us-east1-1 e ig-us-east1-2
- Nome:
Verifique se você tem agora dois grupos de instâncias, cada um com duas instâncias.
gcloud
Crie o grupo de instâncias
us-ig1
.gcloud compute instance-groups unmanaged create us-ig1 --zone us-central1-b
Created [https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/us-central1-b/instanceGroups/us-ig1]. NAME ZONE NETWORK MANAGED INSTANCES us-ig1 us-central1-b 0
Defina uma porta nomeada para o grupo de instâncias.
gcloud compute instance-groups set-named-ports us-ig1 \ --named-ports=ssl-lb:443 \ --zone=us-central1-b
Adicione
ig-us-central1-1
eig-us-central1-2
aus-ig1
.gcloud compute instance-groups unmanaged add-instances us-ig1 \ --instances=ig-us-central1-1,ig-us-central1-2 \ --zone=us-central1-b
Updated [https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/us-central1-b/instanceGroups/us-ig1].
Crie o grupo de instâncias
us-ig2
.gcloud compute instance-groups unmanaged create us-ig2 --zone us-east1-b
Created [https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/us-east1-b/instanceGroups/us-ig2]. NAME ZONE NETWORK MANAGED INSTANCES us-ig2 us-east1-b 0
Defina uma porta nomeada para o grupo de instâncias.
gcloud compute instance-groups set-named-ports us-ig2 \ --named-ports=ssl-lb:443 \ --zone=us-east1-b
Adicione
ig-us-east1-1
eig-us-east1-2
aus-ig2
gcloud compute instance-groups unmanaged add-instances us-ig2 \ --instances=ig-us-east1-1,ig-us-east1-2 \ --zone=us-east1-b
Updated [https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/us-east1-b/instanceGroups/us-ig2].
Agora você tem um grupo de instâncias em ambas as regiões, cada um com duas instâncias.
Configurar o balanceador de carga
Console
Criar o balanceador de carga e configurar um serviço de back-end
Acesse a página "Balanceamento de carga" no Console do Google Cloud.
Clique em Criar balanceador de carga.
Em Balanceamento de carga TCP, clique em Iniciar configuração.
Em Somente voltado para a Internet ou interno, selecione Da Internet para minhas VMs.
Em Várias regiões ou região única, selecione Várias regiões (ou ainda não tenho certeza).
Defina o Nome do balanceador de carga como
my-ssl-lb
.Clique em Configuração de back-end.
Deixe o Protocolo definido como TCP ou, se quiser, selecione SSL.
Em Porta nomeada, insira
ssl-lb
.Aceite o valor padrão de Tempo limite.
Deixe o Tipo de back-end definido como Grupos de instâncias.
Em Novo back-end, selecione o grupo de instâncias
us-ig1
.Defina Números de portas como
443
.Não altere as outras configurações.
Em Novo back-end, selecione o grupo de instâncias
us-ig2
.Defina Números de portas como
443
.Não altere as outras configurações.
Clique em Concluído.
Em Verificação de integridade, selecione Criar verificação de integridade.
- Defina o Nome da verificação de integridade como
my-ssl-health-check
. - Defina o Protocolo como
SSL
. - Não altere as outras configurações.
- Clique em Salvar e continuar.
- Defina o Nome da verificação de integridade como
Verifique se há uma marca de seleção verde ao lado de Configuração de back-end no Console do Google Cloud. Se não houver, verifique se você concluiu todas as etapas acima.
Configurar serviços de front-end
- Clique em Configuração de front-end.
- Em Novo IP e porta de front-end, insira
my-ssl-lb-forwarding-rule
como o Nome. - Defina o Protocolo como
SSL
. - Em Endereço IP, selecione Criar endereço IP.
- Informe um Nome de
ssl-lb-static-ip
. - Clique em Reservar.
- Informe um Nome de
- Em Certificado, selecione Criar um novo certificado.
- Informe um Nome de
my-ssl-cert
. - Se você escolher Fazer upload do meu certificado, siga estas etapas:
- Nos campos apropriados, faça o upload do
seguinte:
- Certificado de chave pública (arquivo .crt)
- Cadeia de certificados (arquivo .csr)
- Chave privada (arquivo .key)
- Para adicionar outro certificado SSL, clique em Adicionar certificado. Depois escolha essa opção no menu suspenso Certificados ou selecione Criar um novo certificado e siga as instruções acima.
- Ative o Protocolo de proxy se quiser.
- Clique em Criar.
- Nos campos apropriados, faça o upload do
seguinte:
- Se você escolher Criar um certificado gerenciado pelo Google, insira um Domínio. Sempre que você pressiona Enter, outro campo vazio é exibido. É possível inserir mais domínios nesses campos.
- Clique em Concluído.
- Clique em Adicionar IP e porta de front-end.
- Informe um Nome de
my-ssl-lb-ipv6-forwarding-rule
. - Defina Versão do IP como
IPv6
. - Em Endereço IP, selecione Criar endereço IP.
- Informe um Nome de
ssl-lb-static-ipv6
. - Clique em Reservar.
- Informe um Nome de
- Em Certificado, selecione
my-ssl-cert
. - Clique em Concluído.
- Para adicionar recursos de certificado além do certificado SSL
principal:
- Selecione um certificado na lista Certificados ou clique em Criar um novo certificado e siga as instruções acima.
- Clique em Concluído.
- Se preferir, crie uma política de SSL:
- Em Política de SSL, selecione Criar política.
- Informe um Nome de
my-ssl-policy
. - Selecione TLS 1.0 em Versão mínima de TLS.
- Selecione MODERNO em Perfil. Serão exibidos Recursos ativados e Recursos desativados.
- Clique em Criar.
- Verifique se há uma marca de seleção verde ao lado de Configuração de front-end no Console do Google Cloud. Se não houver, verifique se você concluiu todas as etapas acima.
Revisar e finalizar
- Clique em Revisar e finalizar.
- Verifique suas configurações.
- Clique em Criar.
gcloud
Criar verificação de integridade
gcloud compute health-checks create ssl my-ssl-health-check --port=443
Created [https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/healthChecks/my-ssl-health-check]. NAME PROTOCOL my-ssl-health-check SSL
Criar serviço de back-end
gcloud compute backend-services create my-ssl-lb \ --global-health-checks \ --protocol=SSL \ --port-name=ssl-lb \ --health-checks=my-ssl-health-check \ --timeout=5m \ --global
Created [https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/backendServices/my-ssl-lb]. NAME BACKENDS PROTOCOL my-ssl-lb SSL
Se preferir, é possível configurar a comunicação não criptografada entre o balanceador de carga
e as instâncias com --protocol=TCP
.
Adicionar grupos de instância ao serviço de back-end
gcloud compute backend-services add-backend my-ssl-lb \ --instance-group=us-ig1 \ --instance-group-zone=us-central1-b \ --balancing-mode=UTILIZATION \ --max-utilization=0.8 \ --global
Updated [https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/backendServices/my-ssl-lb].
gcloud compute backend-services add-backend my-ssl-lb \ --instance-group=us-ig2 \ --instance-group-zone=us-east1-b \ --balancing-mode=UTILIZATION \ --max-utilization=0.8 \ --global
Updated [https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/backendServices/my-ssl-lb].
Configurar recursos de certificado SSL
Se você usa certificados autogerenciados, já tem pelo menos um certificado SSL para fazer upload. Se você não tem, consulte Certificados SSL. Ao usar vários certificados SSL, é necessário criá-los um de cada vez.
Se você usa certificados SSL autogerenciados e não tem uma chave privada e um certificado assinado, crie e utilize um certificado autoassinado (em inglês) para fins de teste.
Para criar um recurso de certificado SSL autogerenciado:
gcloud compute ssl-certificates create my-ssl-cert \ --certificate=[CRT_FILE_PATH] \ --private-key=[KEY_FILE_PATH]
Created [https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/sslCertificates/my-ssl-cert]. NAME CREATION_TIMESTAMP my-ssl-cert 2016-02-20T20:53:33.584-08:00
Para criar um recurso de certificado SSL gerenciado pelo Google:
gcloud beta compute ssl-certificates create www-ssl-cert \ --domains=[DOMAIN_1],[DOMAIN_2]
Configurar um proxy SSL de destino
O balanceamento de carga de proxy SSL é compatível com a criação de um proxy SSL de destino que tenha de um a 15 certificados SSL. Antes de executar este comando, é necessário criar um recurso de certificado SSL para cada certificado.
Se quiser ativar o cabeçalho proxy, defina-o como
PROXY_V1
em vez de none
.
Se quiser, anexe uma política de SSL
ao proxy de destino. Primeiro, crie a política.
gcloud compute ssl-policies create my-ssl-policy \ --profile=MODERN \ --min-tls-version=1.0
Depois, anexe a política ao proxy de destino.
gcloud compute target-ssl-proxies create my-ssl-lb-target-proxy \ --backend-service=my-ssl-lb \ --ssl-certificates=[SSL_CERT_1][,[SSL_CERT_2],...] \ --ssl-policy=my-ssl-policy \ --proxy-header=NONE
Created [https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/targetSslProxies/my-ssl-lb-target-proxy]. NAME PROXY_HEADER SERVICE SSL_CERTIFICATES my-ssl-lb-target-proxy NONE my-ssl-lb my-ssl-cert
Reservar endereços IP estáticos globais
Os clientes usam esses endereços IP para acessar seu serviço com carga balanceada.
gcloud compute addresses create ssl-lb-static-ipv4 \ --ip-version=IPV4 \ --global
Created [https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/addresses/ssl-lb-static-ip]. NAME REGION ADDRESS STATUS ssl-lb-static-ip [LB_STATIC_IP] RESERVED
gcloud compute addresses create ssl-lb-static-ipv6 \ --ip-version=IPV6 \ --global
Created [https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/addresses/ssl-lb-static-ipv6]. NAME REGION ADDRESS STATUS ssl-lb-static-ipv6 [LB_STATIC_IPV6] RESERVED
Configurar regras de encaminhamento global
Crie regras de encaminhamento global associadas ao proxy de destino.
Substitua [LB_STATIC_IP]
e [LB_STATIC_IPV6]
pelos endereços IP
gerados em Reservar endereços IP estáticos globais.
gcloud compute forwarding-rules create my-ssl-lb-forwarding-rule \ --global \ --target-ssl-proxy=my-ssl-lb-target-proxy \ --address=[LB_STATIC_IP] \ --ports=443
Created [https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/forwardingRules/my-ssl-lb-forwarding-rule]. NAME REGION IP_ADDRESS IP_PROTOCOL TARGET my-ssl-lb-forwarding-rule [LB_STATIC_IP] SSL my-ssl-lb-target-proxy
gcloud compute forwarding-rules create my-ssl-lb-ipv6-forwarding-rule \ --global \ --target-ssl-proxy=my-ssl-lb-target-proxy \ --address=[LB_STATIC_IPV6] \ --ports=443
Created [https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/forwardingRules/my-ssl-lb-ipv6-forwarding-rule]. NAME REGION IP_ADDRESS IP_PROTOCOL TARGET my-ssl-lb-ipv6-forwarding-rule [LB_STATIC_IPV6] SSL my-ssl-lb-target-proxy
Criar uma regra de firewall para o balanceador de carga SSL
Configure o firewall para permitir o tráfego proveniente do balanceador de carga e do verificador de integridade para as instâncias.
Console
- Acesse a página "Firewall" no Console do Google Cloud.
Acessar a página "Firewall" - Clique em Criar regra de firewall.
- Informe um Nome de
allow-ssl-lb-and-health
. - Em Rede, selecione
default
. - Em Destinos, selecione Tags de destino especificadas.
- Defina Tags de destino para
ssl-lb
. - Defina Filtro de origem como
IP ranges
. - Defina Intervalos IP de origem como
130.211.0.0/22
e35.191.0.0/16
. - Defina Portas e protocolos permitidos como
tcp:443
. - Clique em Criar.
gcloud
gcloud compute firewall-rules create allow-ssl-lb-and-health \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --target-tags=ssl-lb \ --allow=tcp:443
Created [https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/firewalls/allow-ssl-lb-and-health]. NAME NETWORK SRC_RANGES RULES SRC_TAGS TARGET_TAGS allow-ssl-lb-and-health default 130.211.0.0/22,35.191.0.0/16 tcp:443 ssl-lb
Se você usa um certificado gerenciado pelo Google, confirme se o status do recurso do certificado é "ATIVO". Para mais informações, consulte Status do recurso de certificado SSL gerenciado pelo Google.
gcloud beta compute ssl-certificates list
Testar o balanceador de carga
No navegador da Web, conecte-se ao seu endereço IP estático usando o HTTPS. Nesta
configuração de teste, as instâncias usam certificados autoassinados. Portanto, você
verá um aviso no navegador na primeira vez que acessar uma página. Clique
no aviso para ver a página real. Substitua [IP_ADDRESS]
pelo endereço IPv4 ou IPv6 que você criou anteriormente.
https://[IP_ADDRESS]
Você verá um dos hosts da região mais próxima de você. Recarregue a página até ver a outra instância nessa região. Para ver instâncias da outra região, interrompa as instâncias na região mais próxima.
Se preferir, use a curl
na linha de comando da sua máquina local.
Se você usa um certificado autoassinado no proxy SSL, também é necessário
especificar -k
. Com a opção curl -k
, o curl funcionará mesmo se você tiver um
certificado autoassinado ou nenhum. Se você tiver um certificado
normal, remova esse parâmetro. Use o parâmetro -k
somente para testar seu próprio site. Em circunstâncias normais, um certificado
válido é uma medida de segurança importante. Não ignore
os avisos de certificados.
Substitua [IP_ADDRESS]
pelo endereço IPv4 ou IPv6 que você criou anteriormente.
curl -k https://[IP_ADDRESS]
Comandos adicionais de proxy SSL
Listar proxies SSL de destino
Console
Acesse a página "Lista de proxies de destino" no Console do Google Cloud.
gcloud
gcloud compute target-ssl-proxies list
NAME PROXY_HEADER SERVICE SSL_CERTIFICATES my-ssl-lb-target-proxy NONE my-ssl-lb my-ssl-cert
Descrever proxies SSL de destino
Console
Acesse a página "Lista de proxies de destino" no Console do Google Cloud.
Clique no nome de seu proxy SSL de destino.
gcloud
gcloud compute target-ssl-proxies describe [PROXY_NAME]
creationTimestamp: '2016-02-20T20:55:17.633-08:00' id: '9208913598676794842' kind: compute#targetSslProxy name: my-ssl-lb-target-proxy proxyHeader: NONE selfLink: https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/targetSslProxies/my-ssl-lb-target-proxy service: https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/backendServices/my-ssl-lb sslCertificates: – https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/sslCertificates/my-ssl-cert
Excluir proxy SSL de destino
Para excluir um proxy de destino, primeiro é preciso excluir quaisquer regras de encaminhamento global que fazem referência a ele.
Console
Acesse a página "Lista de regras de encaminhamento globais" no Console do Google Cloud.
Marque a caixa de seleção ao lado de sua regra de encaminhamento global.
Clique em
Excluir.Acesse a página "Lista de proxies de destino" no Console do Google Cloud.
Marque a caixa de seleção ao lado de seu proxy SSL de destino.
Clique em
Excluir.
Como alternativa, você pode excluir todos os componentes do balanceador de carga fazendo o seguinte:
Acesse a página "Balanceamento de carga" no Console do Google Cloud.
Clique no ícone de lixeira no lado direito da linha desejada.
Clique em Excluir balanceador de carga para confirmar.
gcloud
Exclua a regra de encaminhamento global:
gcloud compute forwarding-rules delete my-ssl-lb-forwarding-rule \ --global
The following global forwarding rules will be deleted: – [my-ssl-lb-forwarding-rule] Do you want to continue (Y/n)? y Deleted [https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/forwardingRules/my-ssl-lb-forwarding-rule].
Exclua o proxy SSL.
gcloud compute target-ssl-proxies delete my-ssl-lb-target-proxy
The following target ssl proxies will be deleted: – [my-ssl-lb-target-proxy] Do you want to continue (Y/n)? y Deleted [https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/targetSslProxies/my-ssl-lb-target-proxy].
Atualizar um serviço de back-end para o proxy SSL de destino
Use o comando update
para apontar o proxy SSL a um serviço de back-end
diferente. Neste exemplo, você cria um novo serviço de back-end e aponta o proxy
para ele. Depois, você faz uma atualização e aponta o proxy de volta para o serviço de back-end original.
Console
Use a ferramenta de linha de comando gcloud
nesta etapa.
gcloud
Crie um segundo serviço de back-end usando a mesma verificação de integridade.
gcloud compute backend-services create my-other-backend-service \ --protocol=SSL \ --port-name=ssl-lb \ --health-checks=my-ssl-health-check \ --global
Created [https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/backendServices/my-other-backend-service]. NAME BACKENDS PROTOCOL my-other-backend-service SSL
Aponte o proxy SSL para o novo back-end.
gcloud compute target-ssl-proxies update my-ssl-lb-target-proxy \ --backend-service=my-other-backend-service
Updated [https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/targetSslProxies/my-ssl-lb-target-proxy].
Como o serviço de back-end não tem instâncias, se você tentar usar o proxy agora, não verá as páginas da Web. Para continuar o teste da configuração original, aponte o proxy SSL para o primeiro serviço de back-end.
gcloud compute target-ssl-proxies update my-ssl-lb-target-proxy \ --backend-service=my-ssl-lb
Updated [https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/targetSslProxies/my-ssl-lb-target-proxy].
Atualizar o recurso de certificado SSL para o proxy SSL de destino
Utilize este comando para substituir o certificado SSL no proxy SSL. Você já terá criado outros recursos de certificado SSL necessários.
Console
Acesse a página "Balanceamento de carga" no Console do Google Cloud.
Clique em Editar
ao lado de seu balanceador de carga.Clique em Configuração de front-end.
No menu suspenso Certificado, selecione o novo certificado.
Clique em
Add certificate
se precisar adicionar mais certificados.Clique em Concluído.
gcloud
É possível configurar o número documentado de certificados SSL por proxy SSL de destino.
gcloud compute target-ssl-proxies set-ssl-certificates [PROXY_NAME] \ --ssl-certificates=[SSL_CERT_1][,[SSL_CERT_2],...]
Updated [https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/targetSslProxies/my-ssl-lb-target-proxy].
Outras opções de configuração
Nesta seção, o exemplo é detalhado para fornecer outras opções de configuração. Todas as tarefas são opcionais. É possível realizá-las em qualquer ordem.
Definir o protocolo PROXY para manter as informações de conexão do cliente
O Google Cloud Load Balancing com o proxy SSL encerra as conexões SSL do cliente e cria novas para as instâncias. Portanto, as informações originais de porta e IP do cliente não são mantidas por padrão.
Para preservar e enviar as informações de conexão originais para suas instâncias, ative o protocolo PROXY (versão 1) no front-end do balanceador de carga. Esse protocolo envia um cabeçalho extra que contém os endereços IP de origem e de destino e os números de porta à instância como parte da solicitação.
Também é possível definir o protocolo PROXY das verificações de integridade SSL e TCP.
Verifique se as instâncias de back-end do balanceador de carga do proxy SSL estão executando servidores HTTP(S) compatíveis com cabeçalhos de protocolo PROXY. Se os servidores HTTP(S) não estiverem configurados para aceitar cabeçalhos de protocolo PROXY, as instâncias de back-end retornarão respostas vazias.
Normalmente, o cabeçalho do protocolo PROXY é uma linha de texto legível no formato a seguir:
PROXY TCP4 <client IP> <load balancing IP> <source port> <dest port>\r\n
Neste exemplo, o endereço IP do cliente é 192.0.2.1
, o endereço
IP do balanceamento de carga é 198.51.100.1
, a porta do cliente é 15221
e a porta de
destino é 443
:
PROXY TCP4 192.0.2.1 198.51.100.1 15221 443\r\n
Quando o endereço IP do cliente não é conhecido, o balanceador de carga gera um cabeçalho do protocolo PROXY no formato a seguir:
PROXY UNKNOWN\r\n
Atualizar cabeçalho do protocolo PROXY para o proxy
Use este comando para alterar o cabeçalho do protocolo PROXY para um proxy SSL de destino existente.
Console
Acesse a página "Balanceamento de carga" no Console do Google Cloud.
Clique em Editar
para seu balanceador de carga.Clique em Configuração de front-end.
Altere o valor do campo Protocolo de proxy.
Clique em Update to save your changes.
gcloud
gcloud compute target-ssl-proxies update my-ssl-lb-target-proxy \ --proxy-header=[NONE | PROXY_V1]
Como ativar a diminuição da conexão
Ative a diminuição da conexão em serviços de back-end para garantir interrupção mínima aos usuários quando uma instância que está veiculando tráfego é encerrada, removida manualmente ou removida por um autoescalador. Para saber mais sobre a diminuição da conexão, consulte a documentação Como ativar a diminuição da conexão.
Como ativar a afinidade da sessão
Estes procedimentos mostram como atualizar um serviço de back-end para o balanceador de carga de proxy SSL de exemplo para que o serviço de back-end use a afinidade de IP do cliente.
Quando a afinidade de IP do cliente está ativada, o balanceador de carga direciona as solicitações de um determinado cliente para a mesma VM de back-end. Isso é feito com base em um hash criado a partir do endereço IP do cliente e do endereço IP do balanceador de carga (o endereço IP externo de uma regra de encaminhamento externo).
Console
Para ativar a afinidade da sessão de IP do cliente:
Acesse a página "Balanceamento de carga" no Console do Google Cloud.
Clique em Back-ends.
Clique em my-ssl-lb (o nome do serviço de back-end que você criou para este exemplo) e clique em Editar.
Na página Detalhes do serviço de back-end, clique em Configuração avançada.
Em Afinidade da sessão, selecione IP do cliente no menu.
Clique em Atualizar.
gcloud
Use o comando gcloud a seguir para atualizar o serviço de back-end my-ssl-lb
,
especificando a afinidade da sessão de IP do cliente:
gcloud compute backend-services update my-ssl-lb \ --global \ --session-affinity=CLIENT_IP
API
Para definir a afinidade da sessão de IP do cliente, faça uma solicitação PATCH
para o
método
backendServices/patch
.
PATCH https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/us-west1/backendServices/my-ssl-lb
{
"sessionAffinity": "CLIENT_IP"
}
Componentes do balanceador de carga
Verificação de integridade
As verificações de integridade determinam quais instâncias podem receber novas conexões. Configure uma verificação de integridade TCP, SSL, HTTP ou HTTPS para determinar a integridade das instâncias.
- Se o serviço em execução nas instâncias de back-end for baseado em HTTP, use uma verificação de integridade HTTP.
- Se o serviço em execução nas instâncias de back-end for baseado em HTTPS, use uma verificação de integridade HTTPS.
- Se o serviço em execução nas instâncias de back-end usar SSL, utilize uma verificação de integridade SSL.
- A menos que você tenha uma razão explícita para utilizar um tipo diferente de verificação de integridade, use uma verificação de integridade TCP.
Regras de firewall da verificação de integridade
As sondagens da verificação de integridade nas instâncias vêm de endereços nos intervalos
130.211.0.0/22
e 35.191.0.0/16
. É necessário que as regras de firewall permitam essas
conexões na porta relevante. Para mais instruções, consulte
Criar uma regra de firewall para o balanceador de carga SSL.
Consulte Verificações de integridade para mais informações sobre elas.
Serviço de back-end
Um recurso de serviço de back-end fornece informações de configuração ao balanceador de carga, incluindo as seguintes.
- Os serviços de back-end direcionam o tráfego de entrada a um ou mais back-ends anexados, dependendo do modo de balanceamento de carga, abordado mais adiante. Cada back-end consiste em um grupo de instâncias e uma configuração extra para balancear o tráfego entre as instâncias no grupo de instâncias. Cada grupo de instâncias é composto por uma ou mais instâncias.
- Cada serviço de back-end também especifica quais verificações de integridade são realizadas nas instâncias dos grupos de instâncias adicionados ao serviço de back-end.
- A duração das conexões de proxy SSL inativas por meio do balanceador de carga é limitada pelo tempo limite do serviço de back-end.
Ao configurar um serviço de back-end, você precisa adicionar instâncias e especificar um modo de balanceamento que determine a quantidade de tráfego que o balanceador de carga pode enviar às instâncias. Quando o limite é alcançado, solicitações extras são enviadas para a instância que está mais próxima do usuário, se tiver capacidade.
O proxy SSL é compatível com os seguintes modos de balanceamento:
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 entre0.0
(0%) e1.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 a média do grupo não ultrapassa 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.
Certificados SSL
Para usar o balanceamento de carga de proxy SSL, é necessário criar pelo menos um certificado SSL que seja usado pelo proxy de destino para o balanceador de carga. É possível configurar o proxy de destino com até 15 certificados SSL.
Esses certificados podem ser gerenciados por você ou pelo Google.
Se você usa certificados SSL autogerenciados e não tem uma chave privada e um certificado assinado, crie e utilize um certificado autoassinado (em inglês) para fins de teste. Para mais informações, consulte Como criar uma chave privada e um certificado. Não use um certificado autoassinado para fins de produção. Se você usa vários certificados SSL, é necessário criar um recurso de certificado SSL para cada certificado.
Regra de encaminhamento
Crie uma regra de encaminhamento para enviar portas e endereços IP específicos para o proxy SSL de destino. Quando o tráfego do cliente chega ao endereço IP externo, essa regra de encaminhamento indica à rede para enviar esse tráfego ao seu proxy SSL.
Consulte Regras de encaminhamento para mais informações.
Recomendações
- Você precisa configurar o balanceador de carga para preceder um cabeçalho de versão 1 do protocolo PROXY se é necessário manter as informações de conexão do cliente.
- Se o tráfego for HTTPS, use o balanceamento de carga HTTPS, não o balanceamento de carga de proxy SSL.
Monitoring
Para mais informações sobre como monitorar o balanceamento de carga do proxy SSL, consulte Como monitorar o proxy TCP/SSL.
Solução de problemas
As páginas não são carregadas do IP de um balanceador de carga
Verificar a integridade das instâncias
Verifique se as instâncias são ÍNTEGRAS.
gcloud compute backend-services get-health my-ssl-lb
--- backend: https://www.googleapis.com/resourceviews/v1/projects/[PROJECT_ID]/zones/us-central1-b/resourceViews/us-ig1 status: kind: compute#backendServiceGroupHealth --- backend: https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/us-east1-b/instanceGroups/us-ig2 status: kind: compute#backendServiceGroupHealth
Confirmar se a regra de firewall está correta
- O verificador de integridade e o balanceador de carga exigem estes endereços IP
para permitir o tráfego:
130.211.0.0/22
e35.191.0.0/16
. - Se você usa SSL entre o balanceador de carga e as instâncias, utilize as verificações
de integridade SSL. Verifique se a regra de firewall permite
tcp:443
dos intervalos de endereços IP de origem130.211.0.0/22
e35.191.0.0/16
. - Se você usa TCP entre o balanceador de carga e as instâncias, utilize as verificações
de integridade TCP. Verifique se a regra de firewall permite
tcp:80
dos intervalos de IP de origem130.211.0.0/22
e35.191.0.0/16
. - Se você usa tags de instância, verifique se elas estão listadas em
TARGET_TAGS na regra de firewall e se todas as instâncias
têm essa tag. Neste exemplo, as instâncias estão marcadas com
ssl-lb
.
gcloud compute firewall-rules list
NAME NETWORK SRC_RANGES RULES SRC_TAGS TARGET_TAGS allow-ssl-lb-and-health default 130.211.0.0/22,35.191.0.0/16 tcp:443 ssl-lb
Tentar alcançar instâncias individuais
Defina uma regra de firewall temporária que permita o acesso a suas instâncias individualmente. Depois, tente carregar uma página em uma instância específica.
Abra o firewall para permitir o tráfego de qualquer origem para as instâncias com tag. Para isso, crie um filtro de origem que defina o intervalo de IP de origem como
0.0.0.0/0
para o tráfego HTTPS às instâncias com a tagssl-lb
.gcloud compute firewall-rules create allow-ssl-0-0-0-0 \ --source-ranges=0.0.0.0/0 \ --target-tags=ssl-lb \ --allow=tcp:443
Created [https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/firewalls/allow-ssl-0-0-0-0]. NAME NETWORK SRC_RANGES RULES SRC_TAGS TARGET_TAGS allow-ssl-0-0-0-0 default 0.0.0.0/0 tcp:443 ssl-lb
Procure o endereço
EXTERNAL_IP
de uma das instâncias.gcloud compute instances list
NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS ig-us-central1-1 us-central1-b n1-standard-1 10.240.0.8 EXTERNAL_IP RUNNING ig-us-central1-2 us-central1-b n1-standard-1 10.240.0.11 EXTERNAL_IP RUNNING ig-us-east1-1 us-east1-b n1-standard-1 10.240.0.12 EXTERNAL_IP RUNNING ig-us-east1-2 us-east1-b n1-standard-1 10.240.0.13 EXTERNAL_IP RUNNING
Acesse uma ou mais instâncias diretamente no navegador.
https://[EXTERNAL_IP]
Se não for possível acessar as instâncias por este método, verifique se o software está funcionando corretamente. Se estiver, veja se a regra de firewall do balanceador de carga está correta.
gcloud compute firewall-rules describe allow-ssl-lb-and-health
allowed: IPProtocol: tcp ports: '443' creationTimestamp: '2016-02-20T22:27:15.094-08:00' description: '' id: '5304629236729177644' kind: compute#firewall name: allow-130-211-0-0-22-ssl network: https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/networks/default selfLink: https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/firewalls/allow-ssl-lb-and-health sourceRanges: 130.211.0.0/22,35.191.0.0/16 targetTags: ssl-lb
Quando tiver certeza de que as instâncias estão funcionando, remova a regra de firewall "from anywhere".
gcloud compute firewall-rules delete allow-ssl-0-0-0-0
The following firewalls will be deleted: [allow-ssl-0-0-0-0] Do you want to continue (Y/n)? y Deleted [https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/firewalls/allow-ssl-0-0-0-0].
A seguir
- Consulte Visão geral do balanceamento de carga de proxy SSL para informações sobre como esse balanceamento funciona.
- Para mais informações sobre como o monitoramento do balanceamento de carga de proxy SSL funciona, consulte Monitoramento de proxy TCP/SSL.
- Consulte Visão geral da política de SSL para mais informações sobre como as políticas de SSL funcionam.
- Para mais informações sobre como configurar políticas de SSL, consulte Como usar políticas de SSL.