Esta página descreve como adicionar um grupo gerenciado de instâncias (MIG) ao serviço de back-end ou ao pool de destino de um balanceador de carga.
Um balanceador de carga distribui o tráfego de usuários, o que ajuda a reduzir o risco de problemas de desempenho no aplicativo. O Cloud Load Balancing usa grupos de instâncias, gerenciadas e não gerenciadas, para veicular o tráfego. Dependendo do tipo de balanceador de carga que você estiver usando, adicione grupos de instâncias a um pool de destino ou serviço de back-end.
Para informações sobre como criar um tipo específico de balanceador de carga com um back-end MIG, consulte a documentação do Cloud Load Balancing.
Antes de começar
-
Configure a autenticação, caso ainda não tenha feito isso.
A autenticação é
o processo de verificação da sua identidade para acesso a serviços e APIs do Google Cloud.
Para executar códigos ou amostras de um ambiente de desenvolvimento local, autentique-se no
Compute Engine da seguinte maneira.
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
- Acesse a página Balanceamento de carga no Console do Google Cloud.
- Selecione o nome do serviço de back-end ao qual você está adicionando o grupo de instâncias gerenciadas.
- Clique em Editar.
- Selecione +Adicionar back-end.
- Selecione o grupo de instâncias que você quer adicionar.
- Edite as configurações opcionais como quiser.
- Salve as alterações.
- Acesse a página "Pools de destino" no console do Google Cloud.
- Clique no pool de destino para adicionar o grupo de instâncias.
- Clique no botão Editar.
- Role para baixo até a seção Instâncias da VMs e clique em Selecionar grupos de instâncias.
- Selecione um grupo de instâncias no menu suspenso.
- Salve as alterações.
INSTANCE_GROUP
é o nome do grupo de instâncias;TARGET_POOL,..
é o nome de um ou mais pools de destino aos quais esse grupo de instância precisa ser adicionado.PROJECT_ID
é o ID do projeto da solicitação;REGION
é a região do grupo de instâncias;INSTANCE_GROUP
é o nome do grupo de instâncias.- O tráfego é balanceado entre todas as portas com o mesmo nome.
- Um determinado serviço de back-end só pode encaminhar tráfego para uma porta nomeada de cada vez.
Se você usar vários números de porta para uma porta nomeada, todas as portas precisarão ser do mesmo aplicativo.
Por exemplo,
http:80,http:8080
funciona, mashttp:80,http:443
não funciona porque a porta 80 não é compatível com TLS.instance-group-a
com uma porta nomeada dehttp-port:80
instance-group-b
com uma porta nomeada dehttp-port:79
- No Console do Google Cloud, acesse a página Grupos de instâncias.
- Clique no nome do grupo de instâncias em que você quer especificar as portas nomeadas. Uma página é aberta com as propriedades do grupo de instâncias.
- Clique em Editar para modificar o grupo gerenciado de instâncias.
- Na seção Mapeamento de portas, clique em Adicionar porta e digite o nome da porta e os números de porta que você quer associar a esse nome. Se você precisar de mais entradas, clique em Adicionar porta novamente.
- Clique em Salvar para salvar as alterações e aplicar as portas nomeadas às instâncias no grupo de instâncias gerenciadas.
- Teste o tutorial, Como usar o balanceamento de carga para aplicativos altamente disponíveis.
- Crie um modelo de instância que você possa usar para um grupo de instâncias gerenciadas.
- Crie um grupo de instâncias gerenciadas regional.
- Ative a recuperação automática do grupo de instâncias gerenciadas.
- Ative o escalonamento automático do grupo de instâncias gerenciadas.
REST
Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para gcloud CLI.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Para mais informações, consulte Autenticar para usar REST na documentação de autenticação do Google Cloud.
Adicionar um grupo gerenciado de instâncias a um serviço de back-end
É necessário um serviço de back-end para criar a maioria dos tipos de balanceadores de carga.
Um serviço de back-end pode conter vários back-ends. Um grupo de instâncias é um tipo de back-end. As instâncias contidas no grupo respondem ao tráfego vindo do balanceador de carga. O serviço de back-end, por sua vez, sabe quais instâncias podem ser usadas, quanto tráfego elas podem processar e a quantidade de tráfego que estão processando no momento. Além disso, a verificação de integridade é monitorada no serviço de back-end, que não envia novas conexões para instâncias não íntegras.
Use as instruções para adicionar um grupo de instâncias gerenciadas a um serviço de back-end.
Console
gcloud
Use o comando
add-backend
(em inglês).gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --instance-group=INSTANCE_GROUP \ [--instance-group-region=INSTANCE_GROUP_REGION | --instance-group-zone=INSTANCE_GROUP_ZONE] \ --balancing-mode=BALANCING_MODE
O suporte ao modo de balanceamento varia de acordo com o tipo de balanceador de carga. Para conferir a lista completa, consulte Modo de balanceamento disponível para cada balanceador de carga.
Parâmetros adicionais são necessários dependendo do modo de balanceamento do grupo de instâncias gerenciadas. Para mais informações, consulte o comando
add-backend
no SDK.REST
Para adicionar um serviço de back-end usando a API REST, backendServices.
Limitações
O balanceamento de carga com um MIG regional não dá suporte à capacidade de destino
max-rate
nos modos de balanceamentoRATE
eUTILIZATION
. Para conferir as diretrizes de uso de cada balanceador de carga, consulte Modos de balanceamento e configurações de capacidade pretendida.Adicionar um grupo gerenciado de instâncias a um pool de destino
Um pool de destino é um objeto que contém uma ou mais instâncias de máquina virtual. Ele é usado nos Balanceadores de carga de rede externos de passagem, em que as solicitações do usuário são encaminhadas para o pool de destino associado ao balanceador de carga. As instâncias que fazem parte desse pool atendem essas solicitações e retornam uma resposta. Adicione um grupo de instâncias gerenciadas a um pool de destino para que, quando as instâncias forem adicionadas ou removidas do grupo, o pool também seja automaticamente atualizado com as alterações.
Para adicionar um grupo de instâncias gerenciadas a um pool de destino, é preciso que esse pool já exista. Para mais informações, consulte a documentação Como adicionar um pool de destino.
Para adicionar um grupo de instâncias gerenciadas a um pool de destino, execute as etapas a seguir. Isso faz com que todas as instâncias de VM contidas no grupo sejam adicionadas ao pool de destino.
Console
gcloud
Use o comando
set-target-pools
(em inglês).gcloud compute instance-groups managed set-target-pools INSTANCE_GROUP \ --target-pools TARGET_POOL,..
em que:
REST
Chame o método
setTargetPools
para um MIG regional ou MIG zonal. Por exemplo:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/regionInstanceGroupManagers/INSTANCE_GROUP/setTargetPools
em que:
O corpo da solicitação conterá uma lista de URIs para os pools de destino a que você quer adicionar esse grupo. Por exemplo:
{ "targetPools": [ "regions/us-central1/targetPools/example-targetpool-1", "regions/us-central1/targetPools/example-targetpool-2" ] }
Como atribuir portas nomeadas a grupo gerenciado de instâncias
As portas nomeadas são pares de chave-valor que representam o nome e o número de uma porta. O nome da porta representa o nome de um serviço ou aplicativo. Esse nome representa a porta em que o serviço ou aplicativo é executado.
As portas nomeadas são utilizadas pelo Cloud Load Balancing. Balanceadores de carga que atuam como proxies se inscrevem em somente uma porta nomeada na configuração do serviço de back-end. O nome da porta é convertido em um número de porta com base no mapeamento de portas nomeadas de cada back-end do grupo de instâncias.
Por exemplo, um serviço de back-end pode se inscrever em uma porta nomeada
http-port
. O grupo de instâncias de back-end pode ter uma porta chamadahttp-port:80
. O grupo de instâncias de back-end instrui o balanceador de carga a enviar tráfego para uma VM no grupo na porta 80 usando um protocolo, como TCP. O protocolo é definido no serviço de back-end do balanceador de carga.As portas nomeadas são metadados simples usados por balanceadores de carga do proxy. Elas não controlam recursos de rede ou firewall no Compute Engine.
Vários números de porta para uma porta nomeada
É possível atribuir várias portas para cada nome de serviço. Também é possível atribuir vários nomes de serviço a cada porta.
Tenha em mente os seguintes pontos:
É possível definir várias portas nomeadas em um grupo de instâncias. Para ilustrar, considere um serviço de back-end de exemplo que assina a porta nomeada
http-port
e que tem dois grupos de instâncias de back-end:Este serviço de back-end envia tráfego para a porta 80 para VMs em
instance-group-a
e porta 79 para VMs eminstance-group-b
.Quando você adicionar o mesmo grupo de instâncias a vários serviços de back-end (para vários balanceadores de carga), e o grupo de instâncias exibir portas diferentes em cada balanceador de carga, não adicione todos os números de porta a uma única porta nomeada. Em vez disso, crie uma porta nomeada exclusiva e mapeie-a para um conjunto de portas que cada serviço de back-end deve exibir.
Por exemplo, suponha que você tenha três aplicativos, cada um com seu próprio balanceador de carga. Cada aplicativo tem um número de porta: 81 para
app1
, 82 paraapp2
e 83 paraapp3
. Supondo que os três serviços de back-end estejam usando um grupo de instâncias comum, atribua as portas nomeadas desse grupo de instâncias como[app1:81, app2:82, app3:83]
.Portas nomeadas e verificações de integridade
Para que uma porta nomeada com vários números de porta em um serviço de back-end funcione em um balanceador de carga de aplicativo externo ou interno, a verificação de integridade precisa ter a flag
--use-serving-port
em vez de um número de porta específico de dois minutos. Essa opção não está disponível no Console do Google Cloud. Para definir--use-serving-port
, você precisa usar a CLI do Google Cloud ou a API.Suponha que você tenha um aplicativo que balanceie a carga do tráfego em três portas diferentes (81, 82, 83) no mesmo serviço de back-end com um único grupo de instâncias. É possível atribuir as portas para esses grupos de instâncias como
[app:81, 82, 83]
. A verificação de integridade desse cenário precisa ter a sinalização--use-serving-port
.Para mais informações, consulte a documentação de verificação de integridade do balanceamento de carga.
Portas nomeadas e regras de firewall
Portas nomeadas não criam nem modificam regras de firewall do Google Cloud. Para permitir o tráfego para as VMs de back-end, você ainda precisa criar as regras de firewall necessárias.
Portas nomeadas e serviços de back-end
Além da configuração do grupo de instâncias, configure também o serviço de back-end. Por exemplo, suponha que você definiu a porta nomeada em um grupo de instâncias com o nome
my-service-name
e a porta8888
:gcloud compute instance-groups set-named-ports my-unmanaged-ig \ --named-ports=my-service-name:8888
Em seguida, faça referência à porta nomeada na configuração do serviço de back-end com o
--port-name
no serviço de back-end definido comomy-service-name
:gcloud compute backend-services update my-backend-service \ --port-name=my-service-name
Criar portas nomeadas
Console
gcloud
Para grupos de instâncias gerenciadas, defina uma ou mais portas nomeadas usando o comando
instance-groups managed set-named-ports
. Para grupos não gerenciados, use o comandoinstance-groups set-named-ports
.gcloud compute instance-groups managed set-named-ports INSTANCE_GROUP \ --named-ports PORT_NAME:PORT,PORT_NAME:PORT
Por exemplo:
gcloud compute instance-groups managed set-named-ports INSTANCE_GROUP \ --named-ports name1:80,name2:8080
Para atribuir várias portas a cada nome de serviço ou vários nomes a cada serviço, crie mais de uma entrada para cada nome ou porta. Por exemplo, se as portas
10
,20
e80
forem para o mesmo aplicativo, será possível atribuirname1
a todas essas portas. Além disso, é possível atribuir dois nomes,name2
ename3
, à porta8080
. Por fim, é possível atribuir a porta9000
aname4
, como no exemplo a seguir:gcloud compute instance-groups managed set-named-ports INSTANCE_GROUP \ --named-ports name1:10,name1:20,name1:80,\ name2:8080,name3:8080,\ name4:9000
Verifique as atribuições de portas nomeadas de um grupo de instâncias gerenciadas usando o comando
get-named-ports
:gcloud compute instance-groups managed get-named-ports INSTANCE_GROUP
NAME PORT name1 10 name1 20 name1 80 name2 8080 name3 8080 name4 9000
REST
A API
instanceGroupManagers
não oferece um método de APIsetNamedPorts
. Em vez disso, use a APIinstanceGroups
para executar esta tarefa.Crie uma solicitação na API
instanceGroups
e inclua o nome do grupo de instâncias. Para saber o valorfingerprint
atual do grupo de instâncias, acesse as informações sobre um grupo específico. Inclua ofingerprint
e um ou mais pares de valoresnamedPorts
no corpo da solicitação:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroups/INSTANCE_GROUP/setNamedPorts { "fingerprint": "42WmSpB8rSM=", "namedPorts": [ { "name": "PORT_NAME", "port": PORT_NUMBER }, { "name": "PORT_NAME", "port": PORT_NUMBER } ] }
Por exemplo, se as portas
10
,20
e80
forem para o mesmo aplicativo, será possível atribuirname1
a todas essas portas. Além disso, é possível atribuir dois nomes,name2
ename3
, à porta8080
. Por fim, é possível atribuir a porta9000
aname4
, como no exemplo a seguir:POST https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instanceGroups/example-group/setNamedPorts { "fingerprint": "42WmSpB8rSM=", "namedPorts": [ { "name": "name1", "port": 8080 }, { "name": "name2", "port": 9000 } ] }
Para atribuir várias portas a cada nome de serviço, crie várias entradas para os nomes. Por exemplo, atribua as portas
10
,20
e80
aname1
. Atribua também a porta8080
aname2
.POST https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instanceGroups/example-group/setNamedPorts { "fingerprint": "42WmSpB8rSM=", "namedPorts": [ { "name": "name1", "port": 10 }, { "name": "name1", "port": 20 } { "name": "name1", "port": 80 } { "name": "name2", "port": 8080 } { "name": "name3", "port": 80 } { "name": "name4", "port": 8080 } ] }
Para listar as portas nomeadas que já estão atribuídas a um grupo de instâncias gerenciadas, crie uma solicitação
GET
que aponte para o grupo:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/INSTANCE_GROUP
A seguir
Exceto em caso de indicação contrária, o conteúdo desta página é licenciado de acordo com a Licença de atribuição 4.0 do Creative Commons, e as amostras de código são licenciadas de acordo com a Licença Apache 2.0. Para mais detalhes, consulte as políticas do site do Google Developers. Java é uma marca registrada da Oracle e/ou afiliadas.
Última atualização 2024-11-21 UTC.
-