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

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

  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 Google Cloud console do, acesse a página Ativar acesso às APIs.

      Acessar "Ativar 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 grupo de instâncias de VM. Use os valores de amostra mencionados.

  4. Crie uma VM do 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 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

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

      Acesse "Criar uma instância"

      Especifique os seguintes valores de amostra:

      • 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 amostra:

      • Nome: l7-ilb-backend-service2-ig
      • Zona: us-west1-a
    3. Adicione a nova VM ao grupo de instâncias.

      Para instâncias de VM, especifique l7-ilb-backend2-vm.

    4. No Google Cloud console do, 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 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
    6. 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

    gcloud

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

      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 gcloud compute instance-groups unmanaged add-instances comando 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
      
    4. Crie um serviço de back-end. Use o comando gcloud compute backend-services create com 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
      
    5. Adicione um back-end ao serviço de back-end: Use o gcloud compute backend-services add-backend comando 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
      
    6. Adicione um correspondente 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 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:

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

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

      Acesse "Criar uma instância"

    2. Especifique os seguintes valores de amostra:

      • Nome: callouts-vm
      • Zona: us-west1-a
      • Rede: lb-network
      • Sub-rede: backend-subnet
      • Tags: allow-ssh e load-balanced-backend
      • Imagem de 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 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
    
  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 Google Cloud console, acesse a página Grupos de instâncias.

      Acesse grupo de instâncias

      Especifique os seguintes valores de amostra:

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

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

      Para 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 amostra:

      gcloud compute instance-groups unmanaged create callouts-ig \
        --zone=us-west1-a
      
    2. Defina uma porta para o grupo de instâncias. Use o gcloud compute instance-groups unmanaged set-named-ports comando 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
      
    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 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.

    1. No Google Cloud console do, acesse a página Back-ends do Cloud Load Balancing.

      Acessar back-ends

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

      Especifique os seguintes valores de amostra:

      • 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 amostra:

      gcloud compute health-checks create http callouts-hc \
        --region=us-west1 \
        --port=80
      
    2. Crie um serviço de back-end de frases de destaque que use o protocolo HTTP/2. Use o gcloud compute backend-services create comando.

      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, você pode configurar extensões de rota, autorização e tráfego.

A seguir