Com as extensões de serviço, os balanceadores de carga de aplicativo compatíveis podem enviar chamadas do caminho de processamento de dados para serviços de back-end de chamada gerenciados pelo usuário. Isso ajuda os balanceadores de carga de aplicativo a usar lógica personalizada no caminho de processamento. Nesta página, descrevemos como configurar um serviço de back-end de callout gerenciado pelo usuário.
Para uma visão geral das extensões do balanceador de carga de aplicativo, consulte Visão geral das extensões do Cloud Load Balancing.
Antes de começar
Verifique se você tem um papel de proprietário ou editor do projeto ou os seguintes papéis do IAM do Compute Engine:
- Para criar instâncias:
compute.instanceAdmin.v1 - Para criar componentes do Cloud Load Balancing:
compute.networkAdmin
- Para criar instâncias:
Ative estas APIs: API Compute Engine e API Network Services.
Console
No console do Google Cloud , acesse a página Ativar acesso às APIs.
Siga as instruções.
gcloud
Use o comando
gcloud services enable:gcloud services enable compute.googleapis.com networkservices.googleapis.com
Crie e configure um balanceador de carga de aplicativo que ofereça suporte a extensões. Para este exemplo, configure um balanceador de carga de aplicativo interno regional com back-ends de grupos de instâncias de VM. Use os valores de amostra mencionados.
Somente para extensões de rota. Configure um serviço de back-end adicional e atualize o mapa de URL para adicionar uma correspondência de host que roteie o tráfego para esse serviço de back-end para todo o tráfego com o host HTTP correspondente à condição especificada.
Console
No console do Google Cloud , acesse a página Criar uma instância.
Especifique os seguintes valores de exemplo:
- Nome:
l7-ilb-backend2-vm - Tags:
allow-ssheload-balanced-backend - Zona:
us-west1-a - Rede:
lb-network - Sub-rede:
backend-subnet - Imagem:
debian-11 - Família:
debian-cloud Opções avançadas > Gerenciamento > Automação:
'#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl echo "Page served from second backend service" | tee /var/www/html/index.html systemctl restart apache2'
- Nome:
Crie um grupo de instâncias não gerenciadas.
Especifique os seguintes valores de exemplo:
- Nome:
l7-ilb-backend-service2-ig - Zona:
us-west1-a
- Nome:
Adicione a nova VM ao grupo de instâncias.
Em Instâncias de VM, especifique
l7-ilb-backend2-vm.No console do Google Cloud , acesse a página Balanceamento de carga.
Atualize o balanceador de carga criando um serviço de back-end e adicionando um back-end a ele.
Para o serviço de back-end, especifique os seguintes valores de exemplo:
- Nome:
l7-ilb-backend-service2 - Protocolo:
HTTP - Verificação de integridade > Nome:
l7-ilb-basic-check - Verificação de integridade > Região:
us-west1
Para o back-end, especifique os seguintes valores de exemplo:
- Grupo de instâncias:
l7-ilb-backend-service2-ig - Modo de balanceamento:
Utilization
- Nome:
Adicione uma correspondência de host ao mapa de URL do serviço de back-end.
Especifique os seguintes valores de exemplo:
- Nome:
l7-ilb-map - Host:
service-extensions.com - Caminho:
callouts - Protocolo:
HTTP - Backend:
l7-ilb-backend-service2
- Nome:
gcloud
Crie uma instância de VM. Use o comando
gcloud compute instances createcom os seguintes valores de exemplo:gcloud compute instances create l7-ilb-backend2-vm \ --zone=us-west1-a \ --network=lb-network \ --subnet=backend-subnet \ --tags=allow-ssh,load-balanced-backend \ --image-family=debian-11 \ --image-project=debian-cloud \ --metadata=startup-script='#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl echo "Page served from second backend service" | tee /var/www/html/index.html systemctl restart apache2'Crie um grupo de instâncias não gerenciadas. Use o comando
gcloud compute instance-groups unmanaged createcom os seguintes valores de exemplo:gcloud compute instance-groups unmanaged create l7-ilb-backend-service2-ig \ --zone us-west1-a
Adicione a nova VM ao grupo de instâncias. Use o comando
gcloud compute instance-groups unmanaged add-instancescom os seguintes valores de exemplo:gcloud compute instance-groups unmanaged add-instances l7-ilb-backend-service2-ig \ --zone=us-west1-a \ --instances=l7-ilb-backend2-vm
Crie um serviço de back-end. Use o comando
gcloud compute backend-services createcom os seguintes valores de exemplo:gcloud compute backend-services create l7-ilb-backend-service2 \ --load-balancing-scheme=INTERNAL_MANAGED \ --protocol=HTTP \ --health-checks=l7-ilb-basic-check \ --health-checks-region=us-west1 \ --region=us-west1
Adicione um back-end ao serviço de back-end: Use o comando
gcloud compute backend-services add-backendcom os seguintes valores de exemplo:gcloud compute backend-services add-backend l7-ilb-backend-service2 \ --balancing-mode=UTILIZATION \ --instance-group=l7-ilb-backend-service2-ig \ --instance-group-zone=us-west1-a \ --region=us-west1
Adicione uma correspondência de host ao mapa de URL do serviço de back-end. Use o comando
gcloud compute url-maps add-path-matchercom os seguintes valores de exemplo:gcloud compute url-maps add-path-matcher l7-ilb-map \ --path-matcher-name=callouts \ --default-service=l7-ilb-backend-service2 \ --new-hosts=service-extensions.com \ --region=us-west1
Configurar um serviço de back-end de callout
Para este exemplo, um servidor de extensão básico baseado em Python que implementa
a API gRPC ext_proc do Envoy está disponível. Um contêiner do Docker com esse servidor está em
us-docker.pkg.dev/service-extensions-samples/callouts/python-example-basic:main
no repositório do GitHub do Service Extensions
de Google Cloud. Este repositório contém vários outros exemplos em Python e Go
de servidores ext_proc para realizar tarefas como mutação de cabeçalho e mutação de corpo.
Para criar e configurar um serviço de back-end de frase de destaque, siga estas etapas:
Crie uma instância de máquina virtual (VM) para o serviço de back-end de callout que está executando o servidor de extensão Python de amostra.
Console
Crie uma instância usando uma imagem de contêiner.
No console do Google Cloud , acesse a página Criar uma instância.
Especifique os seguintes valores de exemplo:
- Nome:
callouts-vm - Zona:
us-west1-a - Rede:
lb-network - Sub-rede:
backend-subnet - Tags:
allow-ssheload-balanced-backend - Imagem do contêiner:
us-docker.pkg.dev/service-extensions-samples/callouts/python-example-basic:main
- Nome:
gcloud
Crie uma instância usando uma imagem de contêiner. Use o comando
gcloud compute instances create-with-containercom os seguintes valores de exemplo:gcloud compute instances create-with-container callouts-vm \ --container-image=us-docker.pkg.dev/service-extensions-samples/callouts/python-example-basic:main \ --network=lb-network \ --subnet=backend-subnet \ --zone=us-west1-a \ --tags=allow-ssh,load-balanced-backend
Adicione a VM a um grupo de instâncias não gerenciadas.
Console
Crie um grupo de instâncias não gerenciadas.
No console, do Google Cloud , acesse a página Grupos de instâncias.
Especifique os seguintes valores de exemplo:
- Nome:
callouts-ig - Zona:
us-west1-a
- Nome:
Defina uma porta para o grupo de instâncias.
Em Mapeamento de portas, especifique estes nomes e valores de porta:
http:80egrpc:443.Adicione a nova VM ao grupo de instâncias.
Em Instâncias de VM, especifique
callouts-vm.
gcloud
Crie um grupo de instâncias não gerenciadas. Use o comando
gcloud compute instance-groups unmanaged createcom os seguintes valores de exemplo:gcloud compute instance-groups unmanaged create callouts-ig \ --zone=us-west1-a
Defina uma porta para o grupo de instâncias. Use o comando
gcloud compute instance-groups unmanaged set-named-portscom os seguintes valores de exemplo:gcloud compute instance-groups unmanaged set-named-ports callouts-ig \ --named-ports=http:80,grpc:443 \ --zone=us-west1-a
Adicione a nova instância de VM ao grupo de instâncias não gerenciadas. Use o comando
gcloud compute instance-groups unmanaged add-instancescom os seguintes valores de amostra:gcloud compute instance-groups unmanaged add-instances callouts-ig \ --zone=us-west1-a \ --instances=callouts-vm
Crie um serviço de back-end de callout e adicione um back-end. Como outros servidores de back-end, os servidores de chamada podem precisar de regras de firewall para permitir o tráfego de proxy.
Console
Crie um serviço de back-end de callout que use o protocolo HTTP/2 e tenha uma verificação de integridade HTTP.
No console do Google Cloud , acesse a página Backends do Cloud Load Balancing.
Adicione um serviço de back-end regional com os seguintes valores de exemplo:
- Nome:
l7-ilb-callout-service - Região:
us-west1 - Tipo de balanceador de carga:
Regional external Application Load Balancer (EXTERNAL_MANAGED) - Protocolo:
HTTP2 - Nome da porta:
grpc - Verificação de integridade > Nome:
callouts-hc - Verificação de integridade > Número da porta:
80 - Política de segurança de back-end do Cloud Armor:
None
- Nome:
Adicione o grupo de instâncias com o servidor de extensão como back-end do serviço de back-end. O grupo de instâncias executa o serviço
ext_proc.Especifique os seguintes valores de exemplo:
- Grupo de instâncias:
callouts-ig - Modo de balanceamento:
Utilization
- Grupo de instâncias:
gcloud
Crie uma verificação de integridade HTTP básica para a instância. Use o comando
gcloud compute health-checks create httpcom os seguintes valores de exemplo:gcloud compute health-checks create http callouts-hc \ --region=us-west1 \ --port=80
Crie um serviço de back-end de callout que use o protocolo HTTP/2. Use o comando
gcloud compute backend-services create.gcloud compute backend-services create l7-ilb-callout-service \ --load-balancing-scheme=INTERNAL_MANAGED \ --protocol=HTTP2 \ --port-name=grpc \ --health-checks=callouts-hc \ --health-checks-region=us-west1 \ --region=us-west1
Adicione o grupo de instâncias com o servidor de extensão como um back-end ao serviço de back-end. O grupo de instâncias executa o serviço
ext_proc. Use o comandogcloud compute backend-services add-backendcom os seguintes valores de amostra:gcloud compute backend-services add-backend l7-ilb-callout-service \ --balancing-mode=UTILIZATION \ --instance-group=callouts-ig \ --instance-group-zone=us-west1-a \ --region=us-west1
Depois de configurar um serviço de back-end, é possível configurar extensões de rota, autorização e tráfego.
A seguir
- Configurar uma extensão de rota
- Configurar uma extensão de autorização
- Configurar uma extensão de tráfego