Neste guia, você verá como criar um balanceador de carga HTTPS do Google Cloud que:
- seleciona serviços de back-end com base nos caminhos de URL de solicitação;
- roteia solicitações para back-ends próximos aos clientes (balanceamento de carga multirregional).
Antes de começar, familiarize-se com os conceitos de Balanceador de carga de aplicativo externo.
Para um exemplo simplificado, consulte Como configurar um balanceador de carga de aplicativo externo com um back-end do Compute Engine. Para saber mais sobre roteamento avançado, como substituições e redirecionamentos HTTP, consulte Gerenciamento de tráfego para balanceadores de carga de aplicativo externos.
Informações gerais
Este guia fornece instruções para criar um balanceador de carga que direciona o tráfego com base no caminho no URL da solicitação e equilibra o tráfego em várias regiões. Você cria oito instâncias do Compute Engine nas regiões dos EUA (zona us-central1-b) e UE (zona eu-west1-b). Em seguida, você cria um balanceador de carga que direciona o tráfego para essas instâncias.
Depois de concluir as instruções, o balanceador de carga será configurado da maneira a seguir:
- Se o tráfego tiver um caminho de URL que comece com
/video
, ele será encaminhado ao serviço de back-end. - Se o tráfego tiver um caminho de URL que não corresponda a esse padrão, ele será encaminhado para outro serviço de back-end.
Neste documento, você criará a configuração representada no diagrama a seguir:
A sequência de eventos no diagrama é:
- Um cliente acessa o URL
https://www.example.com/video/concert
, enviando uma solicitação de conteúdo para o endereço de IP externo definido na regra de encaminhamento. A solicitação pode usar IPv4 ou IPv6. Há regras de encaminhamento para os dois protocolos. - Uma regra de encaminhamento direciona a solicitação para o proxy HTTPS de destino.
- O proxy de destino usa o conjunto de regras no mapa do URL para determinar qual
serviço de back-end recebe a solicitação. Uma solicitação com
/video
, comohttps://www.example.com/video/concert
, é enviada paravideo-backend-service
. Qualquer outro caminho de URL será enviado para o serviço padrão,web-backend-service
. - Com base no carregamento e na proximidade do cliente, o balanceador de carga determina quais grupos de instâncias do serviço de back-end precisam veicular a solicitação e direciona a solicitação para uma instância nesse grupo.
- A instância veicula o conteúdo solicitado por cada usuário. As instâncias
video
exibem conteúdo em vídeo, enquanto as instânciaswww
veiculam todos os outros conteúdos.
Neste exemplo, o balanceador de carga aceita as solicitações HTTPS dos clientes e as envia por proxy para os back-ends, na forma de HTTP. Também é possível configurar um balanceador de carga para aceitar solicitações HTTP e usar HTTPS quando estiver enviando solicitações aos back-ends por proxy.
Antes de começar
Estas instruções exigem um projeto. Se você ainda não tiver um projeto, crie um agora. As instruções mostram como criar uma rede de nuvem privada virtual (VPC) no modo personalizado. Você também precisa configurar regras de firewall personalizadas para permitir que o tráfego alcance as instâncias.
Se você preferir trabalhar na linha de comando, instale a ferramenta de linha de comando gcloud
. Consulte Visão geral do gcloud para ver informações conceituais e de instalação sobre a ferramenta.
Permissões
Para concluir as etapas deste guia, é necessário ter permissão para criar instâncias do Compute Engine em um projeto. Você precisa ter um papel de proprietário ou editor do projeto, ou os seguintes papéis do IAM do Compute Engine:
Tarefa | Papel necessário |
---|---|
Criar instâncias | Administrador da instância do Compute |
Adicionar e remover regras de firewall | Administrador de segurança |
Criar componentes do balanceador de carga | Administrador de rede |
Criar um projeto (opcional) | Criador do projeto |
Para mais informações, consulte estes guias:
Configuração
Opcional: como criar um projeto novo
Recomendamos que os usuários com a permissão resourcemanager.projects.create
criem um projeto novo antes de continuar o tutorial. Isso simplifica a limpeza no final do guia.
Como configurar uma rede e sub-redes
Neste exemplo, use redes, regiões e sub-redes VPC a seguir:
Rede: uma rede VPC de modo personalizado denominada
lb-network
.Sub-redes em duas regiões diferentes:
us-subnet
usa10.1.10.0/24
como intervalo IP principal e está na regiãous-central1
.eu-subnet
usa10.1.11.0/24
como intervalo IP principal e está na regiãoeurope-west1
.
Para criar a rede e sub-rede do exemplo, siga estas etapas:
Console
No Console do Google Cloud, acesse a página Redes VPC.
Clique em Criar rede VPC.
Informe um Nome de
lb-network
.Na seção Sub-redes, crie a primeira sub-rede:
- Defina o Modo de criação de sub-rede como Personalizado.
- Na seção Nova sub-rede, insira as informações a seguir:
- Name:
us-subnet
- Região:
us-central1
- Intervalo de endereços IP:
10.1.10.0/24
- Clique em Concluído.
- Name:
Ainda na seção Sub-redes, clique em Adicionar sub-rede e crie a segunda sub-rede:
- Na seção Nova sub-rede, insira as informações a seguir:
- Name:
eu-subnet
- Região:
europe-west1
- Intervalo de endereços IP:
10.1.11.0/24
- Clique em Concluído.
- Name:
- Na seção Nova sub-rede, insira as informações a seguir:
Clique em Criar.
gcloud
Crie a rede VPC personalizada:
gcloud compute networks create lb-network --subnet-mode=custom
Crie a
us-subnet
:gcloud compute networks subnets create us-subnet \ --network=lb-network \ --range=10.1.10.0/24 \ --region=us-central1
Crie a
eu-subnet
:gcloud compute networks subnets create eu-subnet \ --network=lb-network \ --range=10.1.11.0/24 \ --region=europe-west1
Como configurar regras de firewall
A regra negar padrão de entrada bloqueia o tráfego de entrada para as instâncias de back-end, incluindo tráfego do balanceador de carga e sistemas de verificação de integridade do Google Cloud. Crie novas regras de firewall para substituir a regra padrão e permitir que o tráfego alcance suas instâncias.
Neste exemplo, você cria as regras de firewall a seguir:
fw-allow-ssh
: uma regra de entrada, aplicável às instâncias submetidas a balanceamento de carga, que permite a conectividade SSH de entrada na porta TCP 22 proveniente de qualquer endereço. É possível escolher um intervalo de IP de origem mais restritivo para essa regra, por exemplo, especificando apenas os intervalos de IP do sistema que iniciará as sessões SSH. Neste exemplo, usamos a tagallow-ssh
de destino para identificar as VMs de back-end a que isso se aplicará.fw-allow-health-check-and-proxy
: uma regra de entrada, aplicável às instâncias submetidas a balanceamento de carga, que permite o tráfego do balanceador de carga e dos sistemas de verificação de integridade do Google Cloud (130.211.0.0/22
e35.191.0.0/16
). Este exemplo usa a tag de destinoallow-health-check
para identificar as VMs de back-end às quais ela deve ser aplicada.
Console
No Console do Google Cloud, acesse a página políticas de Firewall.
Clique em Criar regra de firewall para criar a primeira regra de firewall:
- Informe um Nome de
fw-allow-ssh
. - Em Rede, selecione
lb-network
. - Em Destinos, selecione Tags de destino especificadas.
- Preencha o campo Tags de destino com
allow-ssh
. - Defina Filtro de origem como Intervalos IPv4.
- Defina Intervalos IPv4 de origem como
0.0.0.0/0
. - Em Protocolos e portas, selecione Portas e protocolos especificados.
- Marque a caixa de seleção TCP e insira
22
como o número da porta. - Clique em Criar.
- Informe um Nome de
Clique em Criar regra de firewall para gerar a segunda regra:
- Informe um Nome de
fw-allow-health-check-and-proxy
. - Em Rede, selecione
lb-network
. - Em Destinos, selecione Tags de destino especificadas.
- Preencha o campo Tags de destino com
allow-health-check
. - Defina Filtro de origem como Intervalos IPv4.
- Defina Intervalos IPv4 de origem como
130.211.0.0/22
e35.191.0.0/16
. - Em Protocolos e portas, selecione Portas e protocolos especificados.
- Marque a caixa de seleção TCP e insira
80,443
como números de porta. - Clique em Criar.
- Informe um Nome de
gcloud
Crie a regra de firewall
fw-allow-ssh
que permita a conectividade SSH para VMs com a tag de redeallow-ssh
. Se você omitirsource-ranges
, o Google Cloud interpretará que a regra autoriza a conexão proveniente de qualquer origem.gcloud compute firewall-rules create fw-allow-ssh \ --network=lb-network \ --action=allow \ --direction=ingress \ --target-tags=allow-ssh \ --rules=tcp:22
Crie o
fw-allow-health-check-and-proxy
para permitir que o balanceador de carga e as verificações de integridade do Google Cloud se comuniquem com instâncias de back-end na porta TCP80
e443
:gcloud compute firewall-rules create fw-allow-health-check-and-proxy \ --network=lb-network \ --action=allow \ --direction=ingress \ --target-tags=allow-health-check \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --rules=tcp:80,tcp:443
Como criar instâncias
Para configurar um balanceador de carga com um back-end do Compute Engine, as VMs precisam estar em grupos de instâncias. Neste guia, descrevemos como criar um grupo de instâncias gerenciadas com VMs do Linux que têm o Apache em execução.
O grupo de instâncias gerenciadas fornece VMs que executam os servidores de back-end de um balanceador de carga HTTPS externo. Para fins de demonstração, os back-ends exibem os próprios nomes de host.
Neste exemplo, você cria oito instâncias de máquina virtual (VMs): quatro para veicular conteúdo de vídeo e quatro para veicular todos os outros conteúdos. Você usa um script de inicialização para instalar o software do servidor da Web Apache com uma página inicial exclusiva para cada instância. É possível usar qualquer servidor da Web em suas VMs. O Apache é instalado neste exemplo como uma conveniência.
Console
Crie um modelo de instância.
No Console do Google Cloud, acesse a página Modelos de instância.
- Clique em Criar modelo de instância.
- Em Nome, insira
video-us-template
. - Verifique se o disco de inicialização está definido como uma imagem Debian. Por exemplo, Debian GNU/Linux 10 (buster). Estas instruções usam comandos que
estão disponíveis apenas no Debian, como
apt-get
. - Clique em Opções avançadas.
- Clique em Rede e configure os seguintes campos:
- Em Tags de rede, insira
allow-health-check
eallow-ssh
. - Em Interfaces de rede, selecione o seguinte:
- Rede:
lb-network
- Sub-rede:
us-subnet
- Rede:
- Em Tags de rede, insira
Clique em Gerenciamento. Insira o script a seguir no campo Script de inicialização.
#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" mkdir -p /var/www/html/video echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html /var/www/html/video/index.html systemctl restart apache2
Clique em Criar.
Crie um grupo de instâncias gerenciadas. No console do Google Cloud, acesse a página Grupos de instâncias.
- Clique em Criar grupo de instâncias.
- Selecione Novo grupo gerenciado de instâncias (sem estado). Para mais informações, consulte MIGs sem estado ou com estado.
- Em Nome, insira
ig-video-us
. - Em Local, selecione Única zona.
- Em Região, selecione a região de sua preferência. O exemplo usa
us-central1
. - Em Zona, selecione us-central1-b.
- Em Modelo de instância, selecione
video-us-template
. - Em Modo de escalonamento automático, selecione
Off:do not autoscale
. - Em Número máximo de instâncias, insira
2
. - Clique em Criar.
gcloud
Crie um modelo de instância.
gcloud compute instance-templates create video-us-template \ --region=us-central1 \ --network=lb-network \ --subnet=us-subnet \ --tags=allow-health-check,allow-ssh \ --image-family=debian-10 \ --image-project=debian-cloud \ --metadata=startup-script='#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" mkdir -p /var/www/html/video echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html /var/www/html/video/index.html systemctl restart apache2'
Crie o grupo gerenciado de instâncias com base no modelo.
gcloud compute instance-groups managed create ig-video-us \ --template=video-us-template --size=2 --zone=us-central1-b
Repita esse procedimento quatro vezes nos quatro grupos de instâncias. Altere o nome do grupo de instâncias, o nome do modelo, a região e a zona de cada grupo de instâncias da seguinte maneira:
ig-video-us
,video-us-template
,us-central1-b
(como mostrado no exemplo)ig-video-eu
,video-eu-template
,europe-west1-b
ig-www-us
,www-us-template
,us-central1-b
ig-www-eu
,www-europe-template
,europe-west1-b
Como adicionar uma porta nomeada ao grupo de instâncias
Para cada grupo de instâncias, defina um serviço HTTP e associe um nome à porta relevante. Após a configuração do serviço de balanceamento de carga, o tráfego é encaminhado à porta nomeada.
Console
No Console do Google Cloud, acesse a página Grupos de instâncias.
Clique no nome do grupo de instâncias (por exemplo,
ig-video-us
) e, em seguida, clique em Editar grupo.Clique em Especificar mapeamento de nomes de porta.
Clique em Adicionar item.
Para o nome da porta, insira
http
. Como número de porta, insira80
.Clique em Salvar.
Repita essa etapa para cada grupo de instâncias.
gcloud
gcloud compute instance-groups unmanaged set-named-ports ig-video-us \ --named-ports http:80 \ --zone us-central1-b
gcloud compute instance-groups unmanaged set-named-ports ig-www-us \ --named-ports http:80 \ --zone us-central1-b
gcloud compute instance-groups unmanaged set-named-ports ig-video-eu \ --named-ports http:80 \ --zone europe-west1-b
gcloud compute instance-groups unmanaged set-named-ports ig-www-eu \ --named-ports http:80 \ --zone europe-west1-b
Como reservar endereços IP externos
Agora que as instâncias já estão em execução, configure os serviços necessários para o balanceamento de carga. Nesta seção, você cria dois endereços IP externos estáticos globais que os clientes usam para alcançar seu balanceador de carga.
Console
No console do Google Cloud, acesse a página Endereços IP externos.
Clique em Reservar endereço estático para reservar um endereço IPv4.
Atribua um Nome de
lb-ipv4-1
.Defina o Nível da rede como Premium.
Configure Versão IP como IPv4.
Defina Tipo como Global.
Clique em Reservar.
Clique em Reservar endereço estático novamente para reservar um endereço IPv6.
Atribua um Nome de
lb-ipv6-1
.Defina o nível da rede como Premium.
Defina Versão IP como IPv6.
Certifique-se de que o Tipo esteja definido como Global.
Neste exemplo, o balanceador de carga usa Rede nível Premium. Um balanceador de carga com rede de nível padrão usaria endereços IP regionais. Endereços IPv6 não estão disponíveis no nível padrão.
Clique em Reservar.
gcloud
Reservar um endereço IPv4:
gcloud compute addresses create lb-ipv4-1 \ --ip-version=IPV4 \ --network-tier=PREMIUM \ --global
Reservar um endereço IPv6:
gcloud compute addresses create lb-ipv6-1 \ --ip-version=IPV6 \ --network-tier=PREMIUM \ --global
Como configurar os recursos de balanceamento de carga
A funcionalidade do balanceador de carga envolve vários recursos conectados. Nesta seção, você configura e conecta os recursos. Os efeitos são os seguintes:
- Portas nomeadas, usadas pelo balanceador de carga para direcionar tráfego aos grupos de instâncias.
- Uma verificação de integridade, que consulta as instâncias para conferir se estão íntegras. O balanceador de carga só envia tráfego a instâncias íntegras.
- Serviços de back-end, que acompanham a capacidade, a afinidade de sessões e o status da verificação de integridade. Solicitações diretas de serviços de back-end para VMs ou endpoints de back-ends com base na integridade da capacidade e da instância.
- Um Mapa de URL, que o balanceador de carga usa para direcionar solicitações a serviços de back-end específicos com base no host e no caminho do URL de solicitação.
- Um recurso de certificado SSL. Os recursos do certificado SSL têm informações sobre o certificado SSL que o balanceador de carga usa para interromper o TLS quando os clientes HTTPS se conectam a ele. É possível usar vários certificados SSL, que podem ser qualquer combinação de certificados SSL gerenciados ou autogerenciados. É necessário criar um recurso de certificado SSL para cada certificado usado.
- Um proxy HTTPS de destino, que o balanceador de carga usa para associar o mapa de URL e certificados SSL às regras de encaminhamento global.
Duas regras de encaminhamento global, uma para IPv4 e outra para IPv6, que contêm os recursos de endereço IP externo global. As regras de encaminhamento global direcionam a solicitação recebida para o proxy de destino.
Console
Iniciar a configuração
No console do Google Cloud, acesse a página Balanceamento de carga.
- Clique em Criar balanceador de carga.
- Em Tipo de balanceador de carga, selecione Balanceador de carga de aplicativo (HTTP/HTTPS) e clique em Próxima.
- Em Voltado ao público ou interno, selecione Voltado ao público (externo) e clique em Próxima.
- Em Implantação global ou de região única, selecione Melhor para cargas de trabalho globais e clique em Próxima.
- Em Geração do balanceador de carga, selecione Balanceador de carga de aplicativo clássico e clique em Próxima.
- Clique em Configurar.
Configuração básica
- Em Nome do balanceador de carga, digite
web-map
. - Mantenha a janela aberta para continuar.
Configurar o serviço de back-end e a verificação de integridade das instâncias www
O balanceador de carga requer dois serviços de back-end e uma verificação de integridade para atender a ambos. Neste exemplo, o balanceador de carga encerra solicitações HTTPS do cliente e usa HTTP para se comunicar com os back-ends. Para fazer isso, você especifica o HTTP dos protocolos de back-end e as verificações de integridade.
- Clique em Configuração de back-end.
- No menu suspenso Criar ou selecionar um serviço de back-end, mantenha o ponteiro do mouse sobre Serviços de back-end e selecione Criar um serviço de back-end.
- Defina o Nome do serviço de back-end como
web-backend-service
. - Verifique se o Tipo de back-end está definido como Grupo de instância.
- No menu suspenso Protocolo, selecione HTTP.
- No campo Porta nomeada, insira
http
. - Abaixo de Back-ends, defina Grupo de instâncias como
ig-www-us
. - Para o tráfego entre o balanceador de carga e as instâncias, defina Número de portas como
80
. - Nos campos restantes, mantenha os valores padrão.
- Clique em Concluído na parte inferior da janela Novo back-end.
- Clique em Adicionar back-end e repita as etapas, mas selecione o grupo de instâncias
ig-www-eu
. - Mantenha a janela aberta para continuar.
Configurar a verificação de integridade das instâncias www
- Na janela Configuração do back-end, em Verificação de integridade, selecione Criar verificação de integridade ou Criar outra verificação de integridade.
- Para criar a verificação de integridade HTTP, defina os parâmetros de verificação de integridade a seguir:
- Nome como
http-basic-check-www
- Protocolo como
HTTP
- Porta como
80
.
- Nome como
- Clique em Salvar e continuar.
- Clique em Criar.
Configurar o serviço de back-end e a verificação de integridade das instâncias video
- Repita as etapas acima, mas nomeie o
segundo serviço de back-end
video-backend-service
e atribua a ele os grupos de instânciasig-video-us
eig-video-eu
. - Siga as mesmas etapas para criar uma verificação de integridade, mas nomeie-a como
http-basic-check-video
. Os nomes das verificações de integridade precisam ser exclusivos.
Configurar regras de host e de caminho
As regras de host e de caminho configuram o recurso de mapa do URL do balanceador de carga.
- Na coluna à esquerda da tela, clique em Regras de host e de caminho.
- A primeira linha tem
web-backend-service
na coluna da direita e já está preenchida com a regra padrãoAny unmatched (default)
para Hosts e Caminhos. - Verifique se há uma segunda linha com
video-backend-service
na coluna do lado direito. Se ela não existir, clique em Adicionar regra de host e caminho e selecionevideo-backend-service
no menu suspenso na coluna da direita. Preencha as outras colunas da seguinte forma:- Defina Hosts como
*
. - No campo Caminhos:
- Digite
/video
e pressione a tecla Tab. - Digite
/video/*
e pressione a tecla Tab.
- Digite
- Defina Hosts como
Configure o front-end
A seção de configuração do front-end configura vários recursos para o balanceador de carga, incluindo as regras de encaminhamento e os certificados SSL. Além disso, ela permite selecionar o protocolo usado entre o cliente e o balanceador de carga.
Neste exemplo, você está usando HTTPS entre o cliente e o balanceador de carga. Portanto, é necessário um ou mais recursos de certificado SSL para configurar o proxy. Consulte as informações sobre como criar recursos de certificado SSL em Certificados SSL. Recomendamos o uso de um certificado gerenciado pelo Google.
- No painel esquerdo da página Criar balanceador de carga de aplicativo externo global, clique em Configuração de front-end.
- No campo Nome, use
https-content-rule
. - No campo Protocolo, selecione
HTTPS
. - Mantenha a janela aberta para continuar.
Configurar a regra de encaminhamento de IPv4
- Defina Versão do IP como
IPv4
. - Em Endereço IP, selecione
lb-ipv4-1
, criado anteriormente. - Certifique-se de que Porta esteja definida como
443
, para permitir tráfego HTTPS. - Clique na lista suspensa Certificado.
- Se você tiver um recurso de certificado SSL autogerenciado e quiser usá-lo como o certificado SSL principal, selecione-o no menu suspenso.
- Caso contrário, selecione Criar um novo certificado.
- Preencha um Nome para
www-ssl-cert
. - Selecione Fazer upload do meu certificado ou Criar um certificado gerenciado pelo Google. Para criar um certificado gerenciado pelo Google, você precisa ter um domínio. Se você não tiver um domínio, poderá fazer upload do seu próprio certificado para fins de teste.
- Se você selecionou Fazer upload do meu certificado, siga estas etapas.
- No campo Certificado de chave pública, escolha uma destas opções:
- Clique no botão Upload e selecione o arquivo de certificado no formato PEM.
- Copie e cole o conteúdo de um certificado no formato PEM. O
conteúdo precisa começar com
-----BEGIN CERTIFICATE-----
e terminar com-----END CERTIFICATE-----
.
- No campo Cadeia de certificados, escolha uma destas opções:
- Clique no botão Upload e selecione o arquivo de certificado da sua CA. É recomendável que esse arquivo inclua certificados de CA tanto intermediários como raiz.
- Copie e cole o conteúdo de uma cadeia de certificados. Cada certificado
na cadeia precisa estar no formato PEM, começando com
-----BEGIN CERTIFICATE-----
e terminando com-----END CERTIFICATE-----
. O Google Cloud não valida a cadeia de certificados para você. A validação é responsabilidade sua. - Se você omitir a cadeia de certificados, seu certificado precisará ser assinado por uma CA confiável publicamente, em que os clientes confiem automaticamente.
- No campo Certificado de chave privada, escolha uma destas opções:
- Clique no botão Upload e selecione sua chave privada. Ela precisa estar no formato PEM e não ser protegida por uma senha longa.
- Copie e cole o conteúdo de uma chave privada no formato PEM. As chaves privadas RSA
precisam começar com
-----BEGIN RSA PRIVATE KEY-----
e terminar com-----END RSA PRIVATE KEY-----
. As chaves privadas ECDSA precisam começar com-----BEGIN EC PRIVATE KEY-----
e terminar com-----END EC PRIVATE KEY-----
.
- Clique em Criar.
- No campo Certificado de chave pública, escolha uma destas opções:
- Se você selecionou Criar um certificado gerenciado pelo Google, insira um Domínio.
- Para adicionar recursos de certificado além do certificado SSL principal, siga estas etapas:
- Clique em Adicionar certificado.
- Selecione um certificado na lista Certificados ou clique em Criar um novo certificado e siga as instruções acima.
- Em negociação QUIC, selecione uma das seguintes opções:
- Automático (padrão): permite que o Google controle quando o QUIC é
negociado. O QUIC é desativado quando você
seleciona Automático. Ao selecionar essa opção, você permite que o Google ative
automaticamente as negociações do QUIC e o HTTP/3 no futuro para
este balanceador de carga.
Em
gcloud
e na API, essa opção é chamada deNONE
. - Ativado: permite que o balanceador de carga negocie o QUIC com os clientes.
- Desativado: impede que o balanceador de carga negocie o QUIC com os clientes.
- Automático (padrão): permite que o Google controle quando o QUIC é
negociado. O QUIC é desativado quando você
seleciona Automático. Ao selecionar essa opção, você permite que o Google ative
automaticamente as negociações do QUIC e o HTTP/3 no futuro para
este balanceador de carga.
Em
- Clique em Concluído.
- Mantenha a janela aberta para continuar.
Configurar a regra de encaminhamento de IPv6
- Clique em Adicionar IP e porta de front-end.
- Informe um Nome de
https-content-ipv6-rule
. - No campo Protocolo, selecione
HTTPS
se você quiser usar HTTPS entre o cliente e o balanceador de carga. SelecioneHTTP
se quiser usar HTTP entre o cliente e o balanceador de carga. - Defina Versão do IP como
IPv6
. - Em IP, selecione
lb-ipv6-1
, criado anteriormente. - A Porta padrão
443
é obrigatória. - Se você já tem um recurso de certificado SSL que quer usar, selecione-o no menu suspenso Certificado. Caso
contrário, selecione Criar um novo certificado.
- Preencha um Nome para
www-ssl-cert
. - Nos campos adequados, carregue o Certificado de chave pública (arquivo .crt), a Cadeia de certificados (arquivo .csr) e a Chave particular (arquivo .key).
- Clique em Criar.
- Preencha um Nome para
- Para adicionar recursos de certificado além do certificado SSL principal, siga estas etapas:
- Clique em Adicionar certificado.
- Selecione um certificado na lista Certificados ou clique em Criar um novo certificado e siga as instruções acima.
- Em negociação QUIC, selecione uma das seguintes opções:
- Automático (padrão): permite que o Google controle quando o QUIC é
negociado. O QUIC é desativado quando você
seleciona Automático.
Ao selecionar essa opção, você permite que o Google ative
automaticamente as negociações do QUIC e o HTTP/3 no futuro para
este balanceador de carga.
Em
gcloud
e na API, essa opção é chamada deNONE
. - Ativado: permite que o balanceador de carga negocie o QUIC com os clientes.
- Desativado: impede que o balanceador de carga negocie o QUIC com os clientes.
- Automático (padrão): permite que o Google controle quando o QUIC é
negociado. O QUIC é desativado quando você
seleciona Automático.
Ao selecionar essa opção, você permite que o Google ative
automaticamente as negociações do QUIC e o HTTP/3 no futuro para
este balanceador de carga.
Em
- Clique em Concluído.
Revisão e finalização
- No painel esquerdo da página Criar balanceador de carga de aplicativo externo global, clique em Analisar e finalizar.
- Compare as configurações com o que você pretendia criar.
- Se tudo parecer certo, clique em Criar para criar o balanceador de carga de aplicativo externo.
gcloud
Crie uma verificação de integridade. Use o comando
gcloud
para HTTP se você estiver usando HTTP entre o balanceador de carga e os back-ends.gcloud compute health-checks create http http-basic-check \ --port 80
Crie um serviço de back-end para cada provedor de conteúdo.
Defina o campo
--protocol
comoHTTP
, porque estamos usando HTTP para chegar às instâncias. Use a verificação de integridadehttp-basic-check
que criamos antes.-
Para um balanceador de carga de aplicativo externo global, use o comando
da CLI gcloud com
load-balancing-scheme=EXTERNAL_MANAGED
. Essa configuração oferece recursos avançados de gerenciamento de tráfego. - Para um balanceador de carga de aplicativo clássico, use
load-balancing-scheme=EXTERNAL
.
gcloud compute backend-services create video-backend-service \ --load-balancing-scheme=LOAD_BALANCING_SCHEME \ --global-health-checks \ --protocol=HTTP \ --port-name=http \ --health-checks=http-basic-check \ --global
gcloud compute backend-services create web-backend-service \ --load-balancing-scheme=LOAD_BALANCING_SCHEME \ --global-health-checks \ --protocol=HTTP \ --port-name=http \ --health-checks=http-basic-check \ --global
-
Para um balanceador de carga de aplicativo externo global, use o comando
da CLI gcloud com
Adicione os grupos de instâncias como back-ends aos serviços de back-end. Um back-end define a capacidade (uso máximo de back-end ou máximo de consultas por segundo) dos grupos de instâncias que ele contém. Para este exemplo, defina
balancing-mode
como o valorUTILIZATION
,max-utilization
como0.8
ecapacity-scaler
como1
. Definacapacity-scaler
como0
caso queira drenar um serviço de back-end.Adicione o grupo de instâncias
ig-video-us
:gcloud compute backend-services add-backend video-backend-service \ --balancing-mode=UTILIZATION \ --max-utilization=0.8 \ --capacity-scaler=1 \ --instance-group=ig-video-us \ --instance-group-zone=us-central1-b \ --global
Adicione o grupo de instâncias
ig-video-eu
:gcloud compute backend-services add-backend video-backend-service \ --balancing-mode=UTILIZATION \ --max-utilization=0.8 \ --capacity-scaler=1 \ --instance-group=ig-video-eu \ --instance-group-zone=europe-west1-b \ --global
Adicione o grupo de instâncias
ig-www-us
:gcloud compute backend-services add-backend web-backend-service \ --balancing-mode=UTILIZATION \ --max-utilization=0.8 \ --capacity-scaler=1 \ --instance-group=ig-www-us \ --instance-group-zone=us-central1-b \ --global
Adicione o grupo de instâncias
ig-www-eu
:gcloud compute backend-services add-backend web-backend-service \ --balancing-mode=UTILIZATION \ --max-utilization=0.8 \ --capacity-scaler=1 \ --instance-group=ig-www-eu \ --instance-group-zone=europe-west1-b \ --global
Crie uma mapa de URL para encaminhar as solicitações recebidas para os serviços de back-end adequados. Nesse caso, os mapeamentos de caminhos de solicitação definidos por meio da sinalização
--path-rules
dividem o tráfego de acordo com o caminho do URL de cada solicitação para seu local. Qualquer tráfego que não conste na lista--path-rules
é enviado para--default-service flag
.Crie um mapa de URL:
gcloud compute url-maps create web-map \ --default-service web-backend-service
Adicione uma correspondência de caminho ao mapa de URL e defina os mapeamentos de caminhos das solicitações:
gcloud compute url-maps add-path-matcher web-map \ --default-service web-backend-service \ --path-matcher-name pathmap \ --path-rules="/video=video-backend-service,/video/*=video-backend-service"
Crie um recurso de certificado SSL para ser usado no proxy HTTPS. Para criar um certificado gerenciado pelo Google, você precisa ter um domínio. Se você não tiver um domínio, poderá usar um certificado SSL autoassinado para testes. Para mais informações, consulte Tipos de certificados SSL.
Se você usa vários certificados SSL, é necessário criar um recurso de certificado SSL para cada certificado.
Para criar um recurso de certificado SSL autogerenciado:
gcloud compute ssl-certificates create www-ssl-cert \ --certificate [CRT_FILE_PATH] \ --private-key [KEY_FILE_PATH]
Para criar um recurso de certificado SSL gerenciado pelo Google:
gcloud compute ssl-certificates create www-ssl-cert \ --domains [DOMAIN]
Crie um proxy de destino HTTPS para encaminhar solicitações ao mapa de URL. O proxy é a parte do balanceador de carga onde é armazenado o certificado SSL para balanceamento de carga HTTPS. Por isso, nesta etapa, carregue também o certificado.
gcloud compute target-https-proxies create https-lb-proxy \ --url-map web-map --ssl-certificates www-ssl-cert
Crie duas regras de encaminhamento global para encaminhar as solicitações recebidas para o proxy, uma para cada um dos endereços IP que você criou.
-
Para um balanceador de carga de aplicativo externo global, use o comando
da CLI gcloud com
load-balancing-scheme=EXTERNAL_MANAGED
. Essa configuração oferece recursos avançados de gerenciamento de tráfego. - Para um balanceador de carga de aplicativo clássico, use
load-balancing-scheme=EXTERNAL
.
gcloud compute forwarding-rules create https-content-rule \ --load-balancing-scheme=LOAD_BALANCING_SCHEME \ --network-tier=PREMIUM \ --address=lb-ipv4-1 \ --global \ --target-https-proxy=https-lb-proxy \ --ports=443
gcloud compute forwarding-rules create https-content-ipv6-rule \ --load-balancing-scheme=LOAD_BALANCING_SCHEME \ --network-tier=PREMIUM \ --address=lb-ipv6-1 \ --global \ --target-https-proxy=https-lb-proxy \ --ports=443
-
Para um balanceador de carga de aplicativo externo global, use o comando
da CLI gcloud com
Depois de criar a regra de encaminhamento global, pode levar vários minutos até a configuração ser propagada em todo o mundo.
Como conectar seu domínio ao balanceador de carga
Após a criação do balanceador de carga, anote o endereço IP associado a
ele, por exemplo, 30.90.80.100
. Para apontar seu domínio para o
balanceador de carga, crie um registro A
usando o serviço de registro de domínio. Se
você adicionou vários domínios ao certificado SSL, adicione um registro A
para cada um deles, todos apontando para o endereço IP do balanceador de carga. Por exemplo, para
criar registros A
para www.example.com
e example.com
, use o seguinte:
NAME TYPE DATA www A 30.90.80.100 @ A 30.90.80.100
Se você usa o Cloud DNS como provedor de DNS, consulte Adicionar, modificar e excluir registros.
como enviar tráfego às instâncias
Agora que você configurou o serviço de balanceamento de carga, comece a enviar tráfego para a regra de encaminhamento e veja o tráfego ir para instâncias diferentes.
Console e navegador da Web
No Console do Google Cloud, acesse a página Balanceamento de carga.
Clique em
web-map
para expandir o balanceador de carga que você acabou de criar.Na seção Back-end, confirme se as instâncias estão íntegras. A coluna Íntegra precisa estar preenchida, indicando a integridade das duas instâncias de cada um dos quatro grupos de instâncias. Se não estiver assim, tente atualizar a página. Pode levar alguns instantes para o Console do Google Cloud indicar que as instâncias estão íntegras. Caso os back-ends não apareçam como íntegros depois de alguns minutos, analise a configuração do firewall e defina as tags da rede atribuídas às instâncias do back-end.
Registre os endereços IPv4 e IPv6 do balanceador de carga:
No console do Google Cloud, acesse a página Endereços IP externos.
Em Nome, encontre os endereços chamados
lb-ipv4-1
elb-ipv6-1
e registre os valores associados na coluna Endereços externos.
Se você estiver usando um certificado gerenciado pelo Google:
Crie os seguintes registros DNS:
- Um registro CAA. Para mais informações, consulte Como especificar as CAs que têm permissão para assinar um certificado gerenciado pelo Google.
- Um registro A. Para mais informações, consulte Criar atualização do registro DNS A para apontar para o endereço IP do balanceador de carga.
- Um registro AAAA. Isso é semelhante ao registro A, mas é para o endereço IPv6 do balanceador de carga.
Confirme se o status do recurso de certificado é ACTIVE. Para mais informações, consulte Status do recurso de certificado SSL gerenciado pelo Google.
Teste o balanceador de carga usando um navegador da Web e acessando uma das seguintes opções:
https://IP_ADDRESS
, em que IP_ADDRESS é o endereço IPv4 do balanceador de carga. Se o navegador exibir um aviso de certificado, você precisará instruí-lo explicitamente a confiar no certificado. O aviso aparece porque os certificados geralmente são configurados com domínios, não com endereços IP.https://FQDN
, em que FQDN é o nome de domínio totalmente qualificado (FQDN, na sigla em inglês) em que você configurou o DNS para apontar para o endereço IP do balanceador de carga. Se você usou um certificado SSL auto-gerenciado e autoassinado ou um certificado SSL autogerenciado e assinado por uma autoridade de certificação personalizada, seu navegador exibirá um aviso de certificado, a menos que você o tenha configurado explicitamente para confiar no certificado ou em na autoridade de certificação. Para mais detalhes sobre certificados autogerenciados, consulte Como criar uma chave privada e um certificado.
O navegador renderizará uma página exibindo o nome da instância que veiculou a página e a zona (por exemplo,
Page on ig-www-us-02 in us-central1-b
).No navegador, acesse uma das seguintes opções:
https://IP_ADDRESS/video
, em que IP_ADDRESS é o endereço IPv4 do balanceador de carga.https://FQDN/video
, em que FQDN é o FQDN em que você configurou o DNS para apontar para o endereço IP do balanceador de carga.
O navegador renderizará uma página exibindo o nome da instância de vídeo que veiculou a página e a zona (por exemplo,
Page on ig-video-us-02 in us-central1-b
).
gcloud e usando curl
Registre os endereços IPv4 e IPv6 do balanceador de carga:
gcloud compute addresses describe lb-ipv4-1 \ --format="get(address)" \ --global
gcloud compute addresses describe lb-ipv6-1 \ --format="get(address)" \ --global
Se você estiver usando um certificado gerenciado pelo Google:
Crie os seguintes registros DNS:
- Um registro CAA. Para mais informações, consulte Como especificar as CAs que têm permissão para assinar um certificado gerenciado pelo Google.
- Um registro A. Para mais informações, consulte Criar atualização do registro DNS A para apontar para o endereço IP do balanceador de carga.
- Um registro AAAA. Isso é semelhante ao registro A, mas é para o endereço IPv6 do balanceador de carga.
Confirme se o status do recurso de certificado é ACTIVE. Para mais informações, consulte Status do recurso de certificado SSL gerenciado pelo Google.
gcloud compute ssl-certificates list
Use o comando
curl
para testar a resposta desses URLs. Substitua IP_ADDRESS pelo endereço IPv4 do balanceador de carga:curl -k https://IP_ADDRESS
curl -k https://IP_ADDRESS/video/
Use o comando
curl
para testar a resposta desses URLs. Substitua IP_ADDRESS pelo endereço IPv6 do balanceador de carga. Para IPv6, coloque o endereço entre colchetes ([]
) e desative globs com a sinalização-g
(por exemplo,curl -g -6 "https://[2001:DB8::]/"
).curl -k -g -6 https://[IP_ADDRESS]
curl -k -g -6 https://[IP_ADDRESS]/video/
Como testar a funcionalidade multirregional
Para simular um usuário em uma região geográfica diferente, conecte-se
a uma das instâncias de máquina virtual em uma região diferente e execute um comando curl
nessa instância para ver a solicitação ir para uma instância na região mais próxima
dela.
Se você se conectar a ig-www-us-01
, a execução de um comando curl
mostrará
que a solicitação vai para uma instância em us-central1
. Você verá uma saída
como esta: Page on ig-www-us-02 in us-central1-b
.
Se você se conectar a ig-www-eu-01
, a execução de um comando curl
mostrará
que a solicitação vai para uma instância em europe-west1
. Você verá uma saída como
esta: Page on ig-www-eu-02 in europe-west1-b
.
É possível testar um sistema cliente em qualquer lugar do mundo. Se os back-ends de uma região não forem íntegros ou atingirem a capacidade, o balanceador de carga HTTPS automaticamente enviará o tráfego para a região mais próxima.
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. Você pode realizá-las em qualquer ordem.
Como ativar a afinidade de sessão
Estes procedimentos demonstram como configurar um tipo diferente de afinidade de sessão para cada serviço de back-end:
- Afinidade da sessão do endereço IP do cliente para
web-backend-service
- Afinidade da sessão de cookie HTTP para
video-backend-service
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 com base em um hash criado a partir do endereço IP do cliente.
Quando a afinidade de cookie gerado é ativada, o balanceador de carga emite um cookie
na primeira solicitação. Em cada solicitação subsequente com o mesmo cookie, o balanceador de
carga direciona a solicitação para a mesma VM ou o mesmo endpoint de back-end. No caso de balanceadores de carga de aplicativos externos, o cookie é chamado de GCLB
.
Console
Para ativar a afinidade de sessão de IP do cliente para web-backend-service
:
No Console do Google Cloud, acesse a página Balanceamento de carga.
Clique em Back-ends.
Clique em web-backend-service (o nome de um dos serviços 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 Salvar.
Para ativar a afinidade de sessão de cookie gerada para video-backend-service
:
No Console do Google Cloud, acesse a página Balanceamento de carga.
Clique em Back-ends.
Clique em video-backend-service (o nome de um dos serviços 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 Cookies gerados no menu.
Clique em Atualizar.
gcloud
Use o comando gcloud
a seguir para atualizar o serviço de back-end web-backend-service
, especificando a afinidade da sessão de IP do cliente:
gcloud compute backend-services update web-backend-service \ --session-affinity=CLIENT_IP \ --global
Use o comando gcloud
para atualizar o serviço de back-end video-backend-service
,
especificando a afinidade da sessão de cookie gerada:
gcloud compute backend-services update video-backend-service \ --session-affinity=GENERATED_COOKIE \ --global
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/backendServices/web-backend-service
{
"sessionAffinity": "CLIENT_IP"
}
Para definir a afinidade da sessão do cookie gerado, faça uma solicitação
PATCH
para o método
backendServices/patch
.
PATCH https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/backendServices/video-backend-service
{
"sessionAffinity": "GENERATED_COOKIE"
}
Como remover endereços IP externos de VMs de back-end
Os balanceadores de carga de aplicativos externos se comunicam com back-ends usando endereços IP internos e rotas especiais do balanceador de carga. As instâncias de back-end não precisam de endereços IP externos para se comunicar com o balanceador de carga. Para aumentar a segurança, remova os endereços IP externos das instâncias de back-end.
Para remover endereços IP externos de instâncias de back-end, siga estas instruções.
Para se conectar a uma instância de back-end que não tenha um endereço IP externo usando SSH, consulte Como se conectar a uma instância que não tem um endereço IP externo.
Limpar
Depois de concluir este tutorial, exclua os recursos que você criou para que não sejam cobrados no futuro. Se esses recursos foram criados no próprio projeto, exclua todo o projeto. Caso contrário, exclua os recursos individualmente.
Excluir o projeto
Console
No Console do Google Cloud, acesse a página Projetos.
Na lista de projetos, selecione um e clique em
Excluir.Na caixa de diálogo, digite
PROJECT_ID
e clique em Encerrar para excluir o projeto.
gcloud
Execute o seguinte comando, substituindo PROJECT_ID
pelo ID do projeto:
gcloud projects delete PROJECT_ID
Como excluir recursos individuais
Console
Excluir o balanceador de carga
No Console do Google Cloud, acesse a página Balanceamento de carga.
Marque a caixa de seleção ao lado de
web-map
.Clique no botão Excluir na parte superior da página.
Marque as caixas de seleção ao lado de todos os recursos extras, incluindo serviços de back-end, verificações de integridade e certificados SSL.
Clique em Excluir balanceador de carga e recursos selecionados.
Como excluir os grupos de instâncias
No Console do Google Cloud, acesse a página Grupos de instâncias.
Marque a caixa de seleção na parte superior ao lado de Nome para selecionar todos os grupos de instâncias.
Clique em
Excluir.Na janela de confirmação, clique em
Excluir.
Como liberar endereços IP externos
No console do Google Cloud, acesse a página Endereços IP externos.
Marque as caixas de seleção ao lado de
lb-ipv4-1
elb-ipv6-1
.Clique em Liberar endereços estáticos.
Na janela de confirmação, clique em
Excluir.
Como excluir as regras de firewall
No Console do Google Cloud, acesse a página Firewall.
Marque as caixas de seleção ao lado de
fw-allow-health-check-and-proxy
efw-allow-ssh
.Clique em
Excluir.Na janela de confirmação, clique em
Excluir.
Como excluir as instâncias de VM
No console do Google Cloud, acesse a página Instâncias de VMs.
Marque a caixa de seleção na parte superior ao lado de Nome para selecionar todas as instâncias.
Clique em
Excluir.Na janela de confirmação, clique em
Excluir.
Como excluir a rede VPC
No Console do Google Cloud, acesse a página Redes VPC.
Clique em
lb-network
.Na página "Detalhes da rede", clique em Excluir rede VPC.
Na janela de confirmação, clique em
Excluir.
gcloud
Como excluir o balanceador de carga
Para excluir o balanceador de carga, é necessário excluir cada um dos componentes dele.
Exclua as regras de encaminhamento:
gcloud compute forwarding-rules delete https-content-rule \ --global
gcloud compute forwarding-rules delete https-content-ipv6-rule \ --global
Exclua os endereços IP externos globais:
gcloud compute addresses delete lb-ipv4-1 \ --global
gcloud compute addresses delete lb-ipv6-1 \ --global
Exclua o proxy de destino:
gcloud compute target-https-proxies delete https-lb-proxy
Exclua o certificado SSL:
gcloud compute ssl-certificates delete www-ssl-cert
Exclua o mapa de URL:
gcloud compute url-maps delete web-map
Exclua os serviços de back-end:
gcloud compute backend-services delete web-backend-service \ --global
gcloud compute backend-services delete video-backend-service \ --global
Exclua as verificações de integridade:
gcloud compute health-checks delete http-basic-check
Você excluiu todos os recursos do balanceador de carga.
Como excluir os grupos de instâncias
Repita o comando a seguir para excluir quatro grupos de instâncias não gerenciadas, usando
as seguintes combinações de nome e zona. Substitua
INSTANCE_GROUP_NAME
e ZONE
adequadamente:
- Nome:
ig-www-us
, zona:us-central1-b
- Nome:
ig-video-us
, zona:us-central1-b
- Nome:
ig-www-eu
, zona:europe-west1-b
- Nome:
ig-video-eu
, zona:europe-west1-b
gcloud compute instance-groups unmanaged delete INSTANCE_GROUP_NAME \ --zone=ZONE
Como excluir as instâncias de VM
Repita o comando a seguir para excluir as oito VMs, usando as combinações
de nome e zona a seguir. Substitua VM_NAME
e ZONE
adequadamente:
- Nome:
ig-www-us-01
, zona:us-central1-b
- Nome:
ig-www-us-02
, zona:us-central1-b
- Nome:
ig-video-us-01
, zona:us-central1-b
- Nome:
ig-video-us-02
, zona:us-central1-b
- Nome:
ig-www-eu-01
, zona:europe-west1-b
- Nome:
ig-www-eu-02
, zona:europe-west1-b
- Nome:
ig-video-eu-01
, zona:europe-west1-b
- Nome:
ig-video-eu-02
, zona:europe-west1-b
gcloud compute instances delete VM_NAME \ --zone=ZONE
Como excluir as regras de firewall
Exclua as duas regras de firewall:
gcloud compute firewall-rules delete fw-allow-health-check-and-proxy
gcloud compute firewall-rules delete fw-allow-ssh
Como excluir a rede VPC
Exclua o
us-subnet
:gcloud compute networks subnets delete us-subnet \ --region=us-central1
Exclua o
eu-subnet
:gcloud compute networks subnets delete eu-subnet \ --region=europe-west1
Exclua a rede VPC:
gcloud compute networks delete lb-network
Você excluiu todos os recursos configurados neste projeto.
A seguir
- Como usar a geração de registros e o monitoramento
- Como solucionar problemas de balanceamento de carga
- Para ativar o IAP, consulte Como ativar o IAP no balanceador de carga de aplicativo externo.