As extensões de serviço permitem que os balanceadores de carga de aplicativo com suporte enviem frases de destaque do caminho de processamento de dados para serviços de back-end de frases de destaque gerenciados pelo usuário. Isso ajuda os balanceadores de carga de aplicativo a usar a lógica personalizada no caminho de processamento. Nesta página, descrevemos como configurar um serviço de back-end de frases de destaque 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 Google Cloud console do, 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 grupo 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 um correspondente de host que roteie o tráfego para esse serviço de back-end para todo o tráfego com o host HTTP que corresponde à condição especificada.
Console
No console do Google Cloud , acesse a página Criar uma instância.
Especifique os seguintes valores de amostra:
- 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 amostra:
- Nome:
l7-ilb-backend-service2-ig - Zona:
us-west1-a
- Nome:
Adicione a nova VM ao grupo de instâncias.
Para instâncias de VM, especifique
l7-ilb-backend2-vm.No Google Cloud console do, 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 amostra:
- 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 amostra:
- Grupo de instâncias:
l7-ilb-backend-service2-ig - Modo de balanceamento:
Utilization
- Nome:
Adicione um correspondente de host ao mapa de URL do serviço de back-end.
Especifique os seguintes valores de amostra:
- Nome:
l7-ilb-map - Host:
service-extensions.com - Caminho:
callouts - Protocolo:
HTTP - Back-end:
l7-ilb-backend-service2
- Nome:
gcloud
Crie uma instância de VM. Use o comando
gcloud compute instances createcom os seguintes valores de amostra: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 amostra: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
gcloud compute instance-groups unmanaged add-instancescomando com os seguintes valores de amostra: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 amostra: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
gcloud compute backend-services add-backendcomando com os seguintes valores de amostra: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 um correspondente 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 amostra: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 frases de destaque
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 de Service Extensions
de Google Cloud. Esse repositório contém vários outros exemplos de 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 frases de destaque, siga estas etapas:
Crie uma instância de máquina virtual (VM) para o serviço de back-end de frases de destaque que está executando o servidor de extensão de amostra do Python.
Console
Crie uma instância usando uma imagem de contêiner.
No Google Cloud console do, acesse a página Criar uma instância.
Especifique os seguintes valores de amostra:
- Nome:
callouts-vm - Zona:
us-west1-a - Rede:
lb-network - Sub-rede:
backend-subnet - Tags:
allow-ssheload-balanced-backend - Imagem de 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 amostra: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 Google Cloud console, acesse a página Grupos de instâncias.
Especifique os seguintes valores de amostra:
- Nome:
callouts-ig - Zona:
us-west1-a
- Nome:
Defina uma porta para o grupo de instâncias.
Para mapeamento de portas, especifique estes nomes e valores de porta:
http:80egrpc:443.Adicione a nova VM ao grupo de instâncias.
Para 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 amostra:gcloud compute instance-groups unmanaged create callouts-ig \ --zone=us-west1-a
Defina uma porta para o grupo de instâncias. Use o
gcloud compute instance-groups unmanaged set-named-portscomando com os seguintes valores de amostra: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 frases de destaque e adicione um back-end. Como outros servidores de back-end, os servidores de frases de destaque podem precisar de regras de firewall para permitir o tráfego de proxy.
Console
Crie um serviço de back-end de frases de destaque que use o protocolo HTTP/2 e tenha uma verificação de integridade HTTP.
No Google Cloud console do, acesse a página Back-ends do Cloud Load Balancing.
Adicione um serviço de back-end regional com os seguintes valores de amostra:
- 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 um back-end ao serviço de back-end. O grupo de instâncias executa o serviço
ext_proc.Especifique os seguintes valores de amostra:
- 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 amostra:gcloud compute health-checks create http callouts-hc \ --region=us-west1 \ --port=80
Crie um serviço de back-end de frases de destaque que use o protocolo HTTP/2. Use o
gcloud compute backend-services createcomando.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, você pode 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