Configurar VMs do Compute Engine com implantação automática do Envoy
Antes de seguir as instruções deste guia, leia a seção Como se preparar para a configuração do Traffic Director e verifique se você concluiu as tarefas de pré-requisito descritas nesse documento. Este documento se aplica às APIs mais antigas. Se você estiver implantando com as novas APIs de roteamento de serviço, que estão em visualização, consulte Configuração do Traffic Director para proxies Envoy com serviços HTTP.
Este guia mostra como implantar automaticamente um plano de dados que consiste em proxies secundários do Envoy, configurá-lo usando o Traffic Director e verificar sua configuração para garantir que ele esteja funcionando corretamente. Esse processo envolve o seguinte:
- Ativando a API Cloud OS Config
- Criação de um serviço de teste.
- Implantação de um plano de dados simples no Compute Engine usando proxies do Envoy (versão 1.18.4 do Envoy, compatível apenas com xDS v3).
- Configuração do Traffic Director usando as APIs do Compute Engine, que permitem ao Traffic Director configurar os proxies secundários do Envoy.
- Faça login em uma VM que esteja executando um proxy Envoy e envie uma solicitação para um back-end com carga balanceada por meio do proxy Envoy.
Os exemplos de configuração neste documento são para fins de demonstração. Para um ambiente de produção, pode ser preciso implantar mais componentes, com base no ambiente e nos requisitos.
Como ativar a API Cloud OS Config
Ative a API Cloud OS Config. Se você não fizer isso, não será possível instalar os componentes necessários nas suas VMs.
Para fazer isso:
Console
- No Console do Google Cloud Platform, acesse "APIs e serviços".
Acessar a página "Biblioteca de APIs" - Selecione o projeto correto.
- Na caixa de pesquisa, digite API Cloud OS Config e pressione Enter.
- Selecione API Cloud OS Config.
- Clique em Ativar.
gcloud
gcloud services enable osconfig.googleapis.com
Como criar o serviço de teste Hello World
Nesta seção, mostramos como criar um serviço de teste simples que retorna o nome do host da VM que atendeu à solicitação do cliente. O serviço de teste é descomplicado, porque é um servidor da Web implantado em um grupo de instâncias gerenciadas do Compute Engine.
Como criar o modelo de instância para o serviço de teste Hello World
O modelo de instância que você cria configura um servidor da Web apache2 de amostra
usando o parâmetro startup-script
.
Console
- No Console do Google Cloud, acesse a página "Modelos de instância".
- Clique em Criar modelo de instância.
- Nos campos, insira as informações a seguir:
- Name:
td-demo-hello-world-template
- Disco de inicialização: escolha um sistema operacional e uma versão.
- Conta de serviço: conta de serviço padrão do Compute Engine
- Escopos de acesso: permitir acesso total a todas as APIs do Cloud
- Name:
- Clique em Gerenciamento, segurança, discos, rede, locatário único.
1 Na guia Rede, no campo Tags de rede, adicione a
tag
td-http-server
. Na guia Gerenciamento, copie o seguinte script para o campo Script de inicialização.
#!/bin/bash sudo apt-get update -y sudo apt-get install apache2 -y sudo service apache2 restart echo '<!doctype html><html><body><h1>'\`/bin/hostname\`'</h1></body></html>' | sudo tee /var/www/html/index.html
Clique em Criar
gcloud
É possível escolher entre muitas versões de sistemas operacionais. Este exemplo usa o valor padrão Debian 10.
Para criar o modelo de instância:
gcloud compute instance-templates create td-demo-hello-world-template \ --machine-type=n1-standard-1 \ --boot-disk-size=20GB \ --image-family=debian-10 \ --image-project=debian-cloud \ --scopes=https://www.googleapis.com/auth/cloud-platform \ --tags=td-http-server \ --metadata=startup-script="#! /bin/bash sudo apt-get update -y sudo apt-get install apache2 -y sudo service apache2 restart sudo mkdir -p /var/www/html/ echo '<!doctype html><html><body><h1>'\`/bin/hostname\`'</h1></body></html>' | sudo tee /var/www/html/index.html"
Como criar o grupo de instâncias gerenciadas para o serviço Hello World
Nesta seção, você especifica que o grupo de instâncias gerenciadas sempre tem duas instâncias do serviço de teste. Isso é para fins de demonstração. O Traffic Director é compatível com grupos de instâncias gerenciadas com escalonamento automático.
Console
- 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.
- Insira
td-demo-hello-world-mig
como o nome do grupo de instâncias gerenciadas e selecione a zonaus-central1-a
. - Em "Modelo de instância", selecione
td-demo-hello-world-template
, que é o modelo de instância que você criou. - Em Modo de escalonamento automático, selecione
Off:do not autoscale
. - Em Número máximo de instâncias, especifique pelo menos duas como o número de instâncias que você quer criar no grupo.
- Clique em Criar.
gcloud
Use a CLI gcloud para criar um grupo de instâncias gerenciadas com o modelo de instância criado anteriormente.
gcloud compute instance-groups managed create td-demo-hello-world-mig \ --zone us-central1-a \ --size=2 \ --template=td-demo-hello-world-template
Como criar o modelo de instância e o grupo de instâncias gerenciadas em que o Envoy é implantado
Use as instruções nesta seção para criar um modelo de instância e um grupo de instâncias gerenciadas para o Traffic Director com os proxies do Envoy implantados automaticamente. Com os grupos de instâncias gerenciadas, é possível criar novas VMs de back-end por meio do escalonamento automático.
Componentes de software em execução nas VMs
Os componentes a seguir são instalados nas VMs quando você cria um modelo de instância
com --service-proxy=enabled
.
- O proxy Envoy, configurado pelo Traffic Director, é transferido por download de um bucket dedicado do Cloud Storage. O bucket contém uma versão do proxy fornecida pelo Google.
- O agente do proxy de serviço, que inicializa o proxy Envoy e os componentes do proxy. O agente de proxy de serviço configura a interceptação de tráfego e monitora a integridade do proxy Envoy quando uma VM está em execução. O agente de proxy de serviço também é salvo de um bucket do Cloud Storage.
A única versão disponível é o binário mais recente hospedado em um local dedicado do Cloud Storage. Essa versão do Envoy é compatível com estas imagens do Compute Engine: Debian, CentOS 7/8, RHEL 7/8 e Ubuntu 20.04. Durante a recuperação automática e o escalonamento vertical, o grupo gerenciado de instâncias instala uma versão recente do Envoy na VM. Em alguns casos, essa versão pode ser mais recente do que o Envoy implantado em instâncias de VM criadas anteriormente. Isso pode resultar em uma inconsistência nas versões instaladas nas VMs em um grupo gerenciado de instâncias. As versões inconsistentes funcionam corretamente. Se houver uma atualização de segurança para o Envoy, recomendamos que você faça upgrade do grupo gerenciado de instâncias usando uma substituição gradual.
Como criar o modelo de instância
Um modelo de instância especifica a configuração das instâncias de VM criadas em um grupo de instâncias gerenciadas. As sinalizações que você passa para o modelo de instância instalam o Envoy e configuram suas instâncias de VM para estarem prontas para o Traffic Director.
É possível usar o Debian 10/11, CentOS 7/8, RHEL 7/8 e Ubuntu 20.04, LTS e LTS PRO, para a imagem do disco de inicialização no modelo de instância. Observe que o Ubuntu 18.04 não é compatível.
Para criar um modelo de instância, siga estas etapas:
gcloud compute instance-templates create td-vm-template-auto \ --image-family=[ debian-10 | centos-7 | centos-8 | rhel-7 | rhel-8 | ubuntu-2004-lts | ubuntu-pro-2004-lts ] \ --image-project=[ debian-cloud | centos-cloud |rhel-cloud | ubuntu-os-cloud | ubuntu-os-pro-cloud ] \ --service-proxy=enabled
Para personalizar sua implantação do Envoy, consulte o guia de referência de implantação do Envoy.
Como criar o grupo de instâncias gerenciadas
Console
- No Console do Google Cloud, acesse a página "Grupos de instâncias".
- Clique em Criar um grupo de instâncias.
- Insira
td-vm-mig-us-central1
como o nome do grupo de instâncias gerenciadas e selecione a zonaus-central1-a
. - Em Tipo de grupo, selecione Grupo de instâncias gerenciadas.
- Em Modelo de instância, selecione
td-vm-template-auto
, o modelo de instância que você criou. - Especifique
2
como o número de instâncias que você quer criar no grupo. - Clique em Criar para gerar o novo grupo.
gcloud
Use a CLI gcloud para criar um grupo de instâncias gerenciadas com o modelo de instância criado anteriormente.
gcloud compute instance-groups managed create td-vm-mig-us-central1 \ --zone us-central1-a --size=2 --template=td-vm-template-auto
Como configurar o Traffic Director com componentes de balanceamento de carga do Google Cloud
As instruções nesta seção mostram como configurar o Traffic Director para que os proxies do Envoy carreguem o tráfego de saída em duas instâncias de back-end. Você configura os seguintes componentes:
- Uma verificação de integridade Para mais informações sobre verificações de integridade, leia Conceitos de verificação de integridade e Como criar verificações de integridade.
- Uma regra de firewall para permitir que as sondagens da verificação de integridade alcancem os back-ends. Para mais informações, consulte Conceitos de verificação de integridade.
- Um serviço de back-end Para mais informações sobre serviços de back-end, leia Serviços de back-end.
- Um mapa de regras de roteamento Isso inclui a criação de uma regra de encaminhamento e um mapa de URL. Para mais informações, leia Como usar regras de encaminhamento e Como usar mapas de URL.
Como criar a verificação de integridade
Use as instruções a seguir para criar uma verificação de integridade. Para mais informações, consulte Como criar verificações de integridade.
Console
- Acesse a página "Verificações de integridade" no Console do Google Cloud.
Acessar a página "Verificações de integridade" - Clique em Criar verificação de integridade.
- Para o nome, insira
td-vm-health-check
. - Como protocolo, selecione HTTP.
- Clique em Criar.
gcloud
Crie a verificação de integridade.
gcloud compute health-checks create http td-vm-health-check
Como criar a regra de firewall
Use as instruções a seguir para criar as regras de firewall necessárias para as sondagens de verificação de integridade. Para mais informações, consulte Regras de firewall para verificações de integridade.
Console
- Acesse a página "Firewall" no Console do Google Cloud.
Acessar a página "Firewall" - Clique em Criar regra de firewall.
- Na página Criar uma regra de firewall, forneça estas informações:
- Name:
fw-allow-health-checks
- Rede: escolha a rede VPC.
- Prioridade: digite um número para a prioridade ou 1000 por padrão.
- Direção do tráfego: escolha entrada.
- Ação se houver correspondência: escolha permitir.
- Destinos: escolha Tags de destino especificadas e insira
td-http-server
na caixa de texto Tags de destino. - Filtro de origem: escolha intervalos de IP.
- Intervalos de IP de origem:
35.191.0.0/16,130.211.0.0/22
- Portas e protocolos permitidos: use
tcp
com a porta80
- Clique em Criar.
- Name:
gcloud
Crie a regra de firewall para a verificação de integridade.
gcloud compute firewall-rules create fw-allow-health-checks \ --action ALLOW \ --direction INGRESS \ --source-ranges 35.191.0.0/16,130.211.0.0/22 \ --target-tags td-http-server \ --rules tcp:80
Como criar o serviço de back-end
Crie o serviço de back-end: Se você usar a CLI do Google Cloud, precisará designá-la como um serviço de back-end global com o esquema de balanceamento de carga INTERNAL_SELF_MANAGED. Adicione a verificação de integridade e um grupo de instâncias gerenciadas ou não gerenciadas ao serviço de back-end. Observe que este exemplo usa o grupo de instâncias gerenciadas com o modelo de VM do Compute Engine que executa o serviço HTTP de amostra criado em Como criar o grupo de instâncias gerenciadas.
Console
Acesse a página do Traffic Director no Console do Cloud.
Na guia Serviços, clique em Criar serviço.
Clique em Continuar.
Como nome do serviço, insira
td-vm-service
.Selecione a rede VPC correta.
Verifique se o Tipo de back-end é Grupos de instâncias.
Selecione
td-demo-hello-world-mig
, que é o grupo de instâncias gerenciadas criado que contém os back-ends do serviço de testeHello World
.Insira os Números de porta corretos.
Escolha Utilização ou Taxa como o Modo de balanceamento. O valor padrão é Taxa.
Clique em Concluído.
Selecione a verificação de integridade que você criou ou clique em Criar outra verificação de integridade e selecione HTTP como protocolo.
Em Tempo limite de diminuição da conexão, defina o valor como
30
segundos ou mais.Clique em Continuar.
Clique em Criar.
gcloud
Crie o serviço de back-end:
gcloud compute backend-services create td-vm-service \ --global \ --load-balancing-scheme=INTERNAL_SELF_MANAGED \ --connection-draining-timeout=30s \ --health-checks td-vm-health-check
Adicione os back-ends ao serviço de back-end.
gcloud compute backend-services add-backend td-vm-service \ --instance-group td-demo-hello-world-mig \ --instance-group-zone us-central1-a \ --global
Como criar o mapa de regras de roteamento
O mapa de regras de roteamento define como o Traffic Director encaminha o tráfego na malha. Como parte do mapa de regras de roteamento, configure um endereço IP virtual (VIP) e um conjunto de regras de gerenciamento de tráfego associadas, como roteamento baseado em host. Quando um aplicativo envia uma solicitação ao VIP, o proxy Envoy:
- Intercepta a solicitação.
- Avalia-a de acordo com as regras de gerenciamento de tráfego no mapa de URL.
- Ele escolhe um serviço de back-end com base no nome do host na solicitação.
- Escolhe um back-end ou endpoint associado ao serviço de back-end selecionado.
- Envia o tráfego para esse back-end ou endpoint.
Para mais informações sobre gerenciamento de tráfego, consulte Gerenciamento de tráfego avançado.
Console
No Console do Google Cloud, a criação do proxy de destino é combinada com a criação da regra de encaminhamento. Quando você cria a regra de encaminhamento, o Google Cloud cria automaticamente um proxy HTTP de destino e o anexa ao mapa de URLs.
Acesse a página do Traffic Director no Console do Cloud.
Na guia Mapas de regras de roteamento, clique em Criar mapa de regras de roteamento.
Insira um nome.
Clique em Adicionar regra de encaminhamento.
Como nome da regra de encaminhamento, insira
td-vm-forwarding-rule
.Selecione a rede.
Selecione seu IP interno. O tráfego enviado para esse endereço IP é interceptado pelo proxy Envoy e enviado para o serviço apropriado de acordo com as regras de host e caminho.
A regra de encaminhamento é criada como uma regra de encaminhamento global com
load-balancing-scheme
definido comoINTERNAL_SELF_MANAGED
.No campo IP personalizado, digite
10.0.0.1
. Quando a VM envia esse endereço IP, o proxy do Envoy intercepta-o e o envia para o endpoint do serviço de back-end apropriado de acordo com as regras de gerenciamento de tráfego definidas no mapa de URL.Cada regra de encaminhamento em uma rede VPC precisa ter um endereço IP e uma porta exclusivos por rede VPC. Se você criar mais de uma regra de encaminhamento com o mesmo endereço IP e a mesma porta em uma determinada rede VPC, somente a primeira regra de encaminhamento será válida. Outros são ignorados. Se
10.0.0.1
não estiver disponível na sua rede, escolha um endereço IP diferente.Certifique-se de que Porta esteja definida como
80
.Clique em Save.
Na seção Regras de roteamento, selecione Regra simples de host e caminho.
Na seção "Regras de host e caminho", selecione
td-vm-service
como o serviço.Clique em Adicionar host e regra de caminho.
Em Hosts, insira
hello-world
.Em Serviço, selecione
td-vm-service
.Clique em Save.
gcloud
Crie um mapa de URL que use o serviço de back-end
td-vm-service
como padrão.gcloud compute url-maps create td-vm-url-map \ --default-service td-vm-service
Crie uma correspondência de caminho e uma regra de host para rotear o tráfego para seu serviço com base no nome do host e em um caminho. Este exemplo usa
td-vm-service
como o nome do serviço e uma correspondência de caminho padrão que corresponde a todas as solicitações de caminho para esse host (/*
).gcloud compute url-maps add-path-matcher td-vm-url-map \ --default-service td-vm-service \ --path-matcher-name td-vm-path-matcher
gcloud compute url-maps add-host-rule td-vm-url-map \ --path-matcher-name=td-vm-path-matcher \ --hosts=hello-world
Crie o proxy HTTP de destino.
gcloud compute target-http-proxies create td-vm-proxy \ --url-map=td-vm-url-map
Crie a regra de encaminhamento.
A regra de encaminhamento precisa ser global e precisa ser criada com o valor de
load-balancing-scheme
definido comoINTERNAL_SELF_MANAGED
.gcloud compute forwarding-rules create td-vm-forwarding-rule \ --global \ --load-balancing-scheme=INTERNAL_SELF_MANAGED \ --address=10.0.0.1 \ --target-http-proxy=td-vm-proxy \ --ports=80 \ --network=default
Neste ponto, o Traffic Director está configurado para balancear a carga do tráfego dos serviços especificados no mapa de URLs nos back-ends no grupo de instâncias gerenciadas.
Como verificar a configuração
Nesta parte final do guia de configuração do Traffic Director para VMs do Compute
Engine, você testa se o tráfego enviado da VM cliente destinado à
regra de encaminhamento VIP é interceptado e redirecionado ao proxy Envoy, que,
em seguida, roteia sua solicitação para as VMs que hospedam o serviço Hello World
.
Para fazer isso, faça login na VM cliente, que foi configurada para interceptar
o tráfego e redirecioná-lo para o Envoy. Você envia uma solicitação curl
ao VIP
associado ao mapa de regras de roteamento. O Envoy inspeciona a solicitação curl
,
determina a qual serviço ele precisa resolver e a solicitação é enviada para um
back-end associado a esse serviço.
- No Console do Google Cloud, acesse a página "Grupos de instâncias".
- Selecione o grupo de instâncias
td-vm-mig-us-central1
. - Na seção de resumo da VM, em Conectar, clique em SSH.
- Depois de fazer login na VM do cliente, use a ferramenta
curl
para enviar uma solicitação ao serviçoHello World
por meio do Envoy:
curl -H "Host: hello-world" http://10.0.0.1/
Quando você emitir esse comando repetidamente, verá respostas HTML
diferentes contendo os nomes do host dos back-ends no grupo de instâncias gerenciadas Hello World
.
Isso ocorre porque o Envoy usa o balanceamento de carga round robin, o algoritmo de balanceamento
de carga padrão, ao enviar tráfego para os back-ends do serviço Hello World
.
A seguir
- Saiba mais sobre o gerenciamento de tráfego avançado.
- Saiba como configurar a observabilidade com o Envoy.
- Saiba como resolver problemas de implantações do Traffic Director.
- Saiba mais sobre as opções avançadas de implantação no guia da opção de implantação automatizada do Envoy.