Configurar um serviço de back-end de callout gerenciado pelo usuário

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

  1. Verifique se você tem um papel de proprietário ou editor do projeto ou os seguintes papéis do IAM do Compute Engine:

  2. Ative estas APIs: API Compute Engine e API Network Services.

    Console

    1. No console do Google Cloud , acesse a página Ativar acesso às APIs.

      Acessar "Ativar o acesso às APIs"

    2. Siga as instruções.

    gcloud

    Use o comando gcloud services enable:

    gcloud services enable compute.googleapis.com networkservices.googleapis.com
    
  3. 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.

  4. Crie uma VM cliente para teste.

  5. 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

    1. No console do Google Cloud , acesse a página Criar uma instância.

      Acesse "Criar uma instância"

      Especifique os seguintes valores de exemplo:

      • Nome: l7-ilb-backend2-vm
      • Tags: allow-ssh e load-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'
        
    2. 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
    3. Adicione a nova VM ao grupo de instâncias.

      Em Instâncias de VM, especifique l7-ilb-backend2-vm.

    4. No console do Google Cloud , acesse a página Balanceamento de carga.

      Acessar o "Balanceamento de carga"

    5. 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
    6. 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

    gcloud

    1. Crie uma instância de VM. Use o comando gcloud compute instances create com 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'
      
    2. Crie um grupo de instâncias não gerenciadas. Use o comando gcloud compute instance-groups unmanaged create com os seguintes valores de exemplo:

      gcloud compute instance-groups unmanaged create l7-ilb-backend-service2-ig \
        --zone us-west1-a
      
    3. Adicione a nova VM ao grupo de instâncias. Use o comando gcloud compute instance-groups unmanaged add-instances com 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
      
    4. Crie um serviço de back-end. Use o comando gcloud compute backend-services create com 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
      
    5. Adicione um back-end ao serviço de back-end: Use o comando gcloud compute backend-services add-backend com 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
      
    6. 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-matcher com 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:

  1. 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.

    1. No console do Google Cloud , acesse a página Criar uma instância.

      Acesse "Criar uma instância"

    2. Especifique os seguintes valores de exemplo:

      • Nome: callouts-vm
      • Zona: us-west1-a
      • Rede: lb-network
      • Sub-rede: backend-subnet
      • Tags: allow-ssh e load-balanced-backend
      • Imagem do contêiner: us-docker.pkg.dev/service-extensions-samples/callouts/python-example-basic:main

    gcloud

    Crie uma instância usando uma imagem de contêiner. Use o comando gcloud compute instances create-with-container com 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
    
  2. Adicione a VM a um grupo de instâncias não gerenciadas.

    Console

    Crie um grupo de instâncias não gerenciadas.

    1. No console, do Google Cloud , acesse a página Grupos de instâncias.

      Acesse grupo de instâncias

      Especifique os seguintes valores de exemplo:

      • Nome: callouts-ig
      • Zona: us-west1-a
    2. Defina uma porta para o grupo de instâncias.

      Em Mapeamento de portas, especifique estes nomes e valores de porta: http:80 e grpc:443.

    3. Adicione a nova VM ao grupo de instâncias.

      Em Instâncias de VM, especifique callouts-vm.

    gcloud

    1. Crie um grupo de instâncias não gerenciadas. Use o comando gcloud compute instance-groups unmanaged create com os seguintes valores de exemplo:

      gcloud compute instance-groups unmanaged create callouts-ig \
        --zone=us-west1-a
      
    2. Defina uma porta para o grupo de instâncias. Use o comando gcloud compute instance-groups unmanaged set-named-ports com 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
      
    3. Adicione a nova instância de VM ao grupo de instâncias não gerenciadas. Use o comando gcloud compute instance-groups unmanaged add-instances com os seguintes valores de amostra:

      gcloud compute instance-groups unmanaged add-instances callouts-ig \
        --zone=us-west1-a \
        --instances=callouts-vm
      
  3. 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.

    1. No console do Google Cloud , acesse a página Backends do Cloud Load Balancing.

      Acessar back-ends

    2. 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
    3. 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

    gcloud

    1. Crie uma verificação de integridade HTTP básica para a instância. Use o comando gcloud compute health-checks create http com os seguintes valores de exemplo:

      gcloud compute health-checks create http callouts-hc \
        --region=us-west1 \
        --port=80
      
    2. 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
      
    3. 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 comando gcloud compute backend-services add-backend com 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